فهرست منبع

change error tips for auth

tycoding 1 سال پیش
والد
کامیت
3bb2d5bd45

+ 5 - 0
langchat-auth/src/main/java/cn/tycoding/langchat/auth/service/GlobalExceptionTranslator.java

@@ -22,6 +22,7 @@ import cn.dev33.satoken.exception.SaTokenException;
 import cn.tycoding.langchat.common.exception.AuthException;
 import cn.tycoding.langchat.common.exception.ServiceException;
 import cn.tycoding.langchat.common.utils.R;
+import cn.tycoding.langchat.upms.utils.AuthUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.RedisConnectionFailureException;
@@ -108,6 +109,10 @@ public class GlobalExceptionTranslator {
     @ResponseStatus(HttpStatus.UNAUTHORIZED)
     public R handleError(NotPermissionException e) {
         e.printStackTrace();
+        boolean isDemoEnv = AuthUtil.isDemoEnv();
+        if (isDemoEnv) {
+            return R.fail("演示环境请勿操作");
+        }
         return R.fail("没有操作权限");
     }
 

+ 4 - 0
langchat-biz/src/main/java/cn/tycoding/langchat/biz/utils/ClientAuthUtil.java

@@ -16,6 +16,7 @@
 
 package cn.tycoding.langchat.biz.utils;
 
+import cn.dev33.satoken.exception.NotPermissionException;
 import cn.dev33.satoken.secure.SaSecureUtil;
 import cn.tycoding.langchat.biz.entity.AigcUser;
 import cn.tycoding.langchat.common.constant.CacheConst;
@@ -66,6 +67,9 @@ public class ClientAuthUtil {
         try {
             return (AigcUser) ClientStpUtil.getSession().get(CacheConst.AUTH_USER_INFO_KEY);
         } catch (Exception e) {
+            if (e instanceof NotPermissionException) {
+                throw new AuthException(403, "没有操作权限");
+            }
             throw new AuthException(403, "登录已失效,请重新登陆");
         }
     }

+ 6 - 7
langchat-client/src/main/java/cn/tycoding/langchat/client/service/impl/ClientChatServiceImpl.java

@@ -53,9 +53,6 @@ public class ClientChatServiceImpl implements ClientChatService {
         long startTime = System.currentTimeMillis();
         StringBuilder text = new StringBuilder();
 
-        req.setRole(RoleEnum.USER.getName());
-        saveMessage(req, 0, 0);
-
         try {
             langChatService.chat(req)
                     .onNext(e -> {
@@ -69,6 +66,9 @@ public class ClientChatServiceImpl implements ClientChatService {
 
                         // save message
                         if (req.getConversationId() != null) {
+                            req.setRole(RoleEnum.USER.getName());
+                            saveMessage(req, 0, 0);
+
                             req.setMessage(text.toString());
                             req.setRole(RoleEnum.ASSISTANT.getName());
                             saveMessage(req, tokenUsage.inputTokenCount(), tokenUsage.outputTokenCount());
@@ -92,10 +92,6 @@ public class ClientChatServiceImpl implements ClientChatService {
         StreamEmitter emitter = req.getEmitter();
         StringBuilder text = new StringBuilder();
 
-        // save user message
-        req.setRole(RoleEnum.USER.getName());
-        saveMessage(req, 0, 0);
-
         try {
             langChatService.chat(req)
                     .onNext(e -> {
@@ -109,6 +105,9 @@ public class ClientChatServiceImpl implements ClientChatService {
 
                         // save message
                         if (req.getConversationId() != null) {
+                            req.setRole(RoleEnum.USER.getName());
+                            saveMessage(req, 0, 0);
+
                             req.setMessage(text.toString());
                             req.setRole(RoleEnum.ASSISTANT.getName());
                             saveMessage(req, tokenUsage.inputTokenCount(), tokenUsage.outputTokenCount());

+ 3 - 3
langchat-server/src/main/java/cn/tycoding/langchat/server/service/impl/ChatServiceImpl.java

@@ -66,9 +66,6 @@ public class ChatServiceImpl implements ChatService {
             }
         }
 
-        req.setRole(RoleEnum.USER.getName());
-        saveMessage(req, 0, 0);
-
         try {
             langChatService
                     .chat(req)
@@ -87,6 +84,9 @@ public class ChatServiceImpl implements ChatService {
                         emitter.complete();
 
                         if (req.getConversationId() != null) {
+                            req.setRole(RoleEnum.USER.getName());
+                            saveMessage(req, 0, 0);
+
                             req.setMessage(text.toString());
                             req.setRole(RoleEnum.ASSISTANT.getName());
                             saveMessage(req, tokenUsage.inputTokenCount(), tokenUsage.outputTokenCount());

+ 14 - 0
langchat-upms/src/main/java/cn/tycoding/langchat/upms/utils/AuthUtil.java

@@ -45,6 +45,7 @@ public class AuthUtil {
      * 使用:所有涉及根据角色查询的地方都排除对此角色的限制
      */
     public static final String ADMINISTRATOR = "administrator";
+    public static final String DEMO_ROLE = "demo_env";
     public static final String DEFAULT_ROLE = "default_env";
 
     /* 登录表单验证码Key标识 */
@@ -91,6 +92,19 @@ public class AuthUtil {
             throw new AuthException(403, "登录已失效,请重新登陆");
         }
     }
+    public static boolean isDemoEnv() {
+        try {
+            UserInfo info =  (UserInfo) StpUtil.getSession().get(CacheConst.AUTH_USER_INFO_KEY);
+            List<SysRole> roles = info.getRoles();
+            if (roles != null && !roles.isEmpty()) {
+                List<SysRole> list = roles.stream().filter(i -> i.getCode().equals(DEMO_ROLE)).toList();
+                return !list.isEmpty();
+            }
+            return true;
+        } catch (Exception ignored) {
+            return true;
+        }
+    }
 
     /**
      * 获取用户名