From 17c94afc50e7957b8fd98413cdc9cbbdc4c7967a Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 18 Jul 2024 17:41:19 +0800
Subject: [PATCH] 逻辑

---
 src/main/java/cc/mrbird/febs/common/interceptor/DappInterceptor.java |   42 +++++++++++++++++++++++++++---------------
 1 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/interceptor/DappInterceptor.java b/src/main/java/cc/mrbird/febs/common/interceptor/DappInterceptor.java
index c906df8..c800926 100644
--- a/src/main/java/cc/mrbird/febs/common/interceptor/DappInterceptor.java
+++ b/src/main/java/cc/mrbird/febs/common/interceptor/DappInterceptor.java
@@ -2,18 +2,20 @@
 
 import cc.mrbird.febs.common.contants.AppContants;
 import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.common.properties.SystemProperties;
 import cc.mrbird.febs.common.utils.LoginUserUtil;
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.common.utils.SpringContextUtil;
 import cc.mrbird.febs.dapp.entity.DappMemberEntity;
 import cc.mrbird.febs.dapp.mapper.DappMemberDao;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.asymmetric.KeyType;
+import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.servlet.HandlerInterceptor;
-import org.web3j.crypto.Hash;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -30,6 +32,8 @@
     private final DappMemberDao dappMemberDao = SpringContextUtil.getBean(DappMemberDao.class);
     private final RedisUtils redisUtils = SpringContextUtil.getBean(RedisUtils.class);
 
+    private SystemProperties systemProperties = SpringContextUtil.getBean(SystemProperties.class);
+
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         if ("OPTIONS".equals(request.getMethod().toUpperCase())) {
@@ -38,7 +42,6 @@
         String headAddress = request.getHeader("address");
         String key = request.getHeader("key");
         String path = request.getServletPath().replace("/dapi", "");
-        log.info("进入拦截:{}, {}, {}", headAddress, path, key);
 
         String chain = request.getHeader("chain");
         if (StrUtil.isBlank(headAddress) || StrUtil.isBlank(key)) {
@@ -46,23 +49,29 @@
             return false;
         }
 
-        Map<Object, Object> signKey = redisUtils.hmget(AppContants.REDIS_KEY_SIGN);
-        Object signObj = signKey.get(headAddress);
+        if (!systemProperties.isDebug()) {
+            Map<Object, Object> signKey = redisUtils.hmget(AppContants.REDIS_KEY_SIGN);
+            Object signObj = signKey.get(headAddress);
 
-        if (signObj == null) {
-            responseUnAuth(response);
-            return false;
-        }
-        String sign = (String) signObj;
+            if (signObj == null) {
+                responseUnAuth(response);
+                return false;
+            }
+            String sign = (String) signObj;
 
-        String calKey = LoginUserUtil.sha3(sign + path + headAddress).replace("0x", "");
-        if (!calKey.equals(key)) {
-            responseUnAuth(response);
-            return false;
+            String calKey = LoginUserUtil.sha3(sign + path + headAddress).replace("0x", "");
+            if (!calKey.equals(key)) {
+                responseUnAuth(response);
+                return false;
+            }
         }
 
         DappMemberEntity memberEntity = dappMemberDao.selectByAddress(headAddress, null);
         if (memberEntity == null) {
+            responseUnAuth(response);
+            return false;
+        }
+        if(AppContants.INT_FLAG_Y != memberEntity.getAccountStatus()){
             responseUnAuth(response);
             return false;
         }
@@ -74,7 +83,10 @@
     private void responseUnAuth(HttpServletResponse response) throws IOException {
         response.setCharacterEncoding("UTF-8");
         response.setContentType("application/json; charset=utf-8");
-        response.getWriter().write(new ObjectMapper().writeValueAsString(new FebsResponse().code(HttpStatus.UNAUTHORIZED)));
+
+        FebsResponse code = new FebsResponse().code(HttpStatus.UNAUTHORIZED);
+        String encryptBase64 = SecureUtil.rsa(AppContants.RESP_PRIVATE_KEY, AppContants.RESP_PUBLIC_KEY).encryptBase64(JSONObject.toJSONString(code).getBytes(), KeyType.PublicKey);
+        response.getWriter().write(new ObjectMapper().writeValueAsString(encryptBase64));
     }
 
     public static void main(String[] args) {

--
Gitblit v1.9.1