浏览代码

修复权限问题

tycoding 1 年之前
父节点
当前提交
08213045c5

+ 11 - 1
langchat-auth/src/main/java/cn/tycoding/langchat/auth/aspect/ApiLogAspect.java

@@ -18,9 +18,11 @@ package cn.tycoding.langchat.auth.aspect;
 
 import cn.tycoding.langchat.auth.event.LogEvent;
 import cn.tycoding.langchat.auth.utils.SysLogUtil;
+import cn.tycoding.langchat.biz.utils.ClientAuthUtil;
 import cn.tycoding.langchat.common.annotation.ApiLog;
 import cn.tycoding.langchat.common.component.SpringContextHolder;
 import cn.tycoding.langchat.upms.entity.SysLog;
+import cn.tycoding.langchat.upms.utils.AuthUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
@@ -47,7 +49,15 @@ public class ApiLogAspect {
         long time = System.currentTimeMillis() - beginTime;
 
         String method = className + "." + methodName + "()";
-        SysLog sysLog = SysLogUtil.build(SysLogUtil.TYPE_OK, apiLog.value(), method, time);
+
+        String username = null;
+        try {
+            username = AuthUtil.getUsername();
+        } catch (Exception e) {
+            username = ClientAuthUtil.getUsername();
+        }
+
+        SysLog sysLog = SysLogUtil.build(SysLogUtil.TYPE_OK, apiLog.value(), method, time, username);
 
         SpringContextHolder.publishEvent(new LogEvent(sysLog));
         return point.proceed();

+ 9 - 1
langchat-auth/src/main/java/cn/tycoding/langchat/auth/config/AuthConfiguration.java

@@ -25,11 +25,13 @@ import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.util.URLUtil;
 import cn.tycoding.langchat.auth.event.LogEvent;
 import cn.tycoding.langchat.auth.utils.SysLogUtil;
+import cn.tycoding.langchat.biz.utils.ClientAuthUtil;
 import cn.tycoding.langchat.biz.utils.ClientStpUtil;
 import cn.tycoding.langchat.common.component.SpringContextHolder;
 import cn.tycoding.langchat.common.properties.AuthProps;
 import cn.tycoding.langchat.common.utils.R;
 import cn.tycoding.langchat.upms.entity.SysLog;
+import cn.tycoding.langchat.upms.utils.AuthUtil;
 import com.alibaba.fastjson.JSON;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.AllArgsConstructor;
@@ -79,7 +81,13 @@ public class AuthConfiguration {
 
     private String handleError(Throwable e) {
         if (e instanceof NotPermissionException || e instanceof NotRoleException) {
-            SysLog sysLog = SysLogUtil.build(SysLogUtil.TYPE_FAIL, HttpStatus.UNAUTHORIZED.getReasonPhrase(), null, null);
+            String username = null;
+            try {
+                username = AuthUtil.getUsername();
+            } catch (Exception err) {
+                username = ClientAuthUtil.getUsername();
+            }
+            SysLog sysLog = SysLogUtil.build(SysLogUtil.TYPE_FAIL, HttpStatus.UNAUTHORIZED.getReasonPhrase(), null, null, username);
             SpringContextHolder.publishEvent(new LogEvent(sysLog));
         }
 

+ 2 - 2
langchat-auth/src/main/java/cn/tycoding/langchat/auth/endpoint/AuthEndpoint.java

@@ -82,7 +82,7 @@ public class AuthEndpoint {
         StpUtil.getSession()
                 .set(CacheConst.AUTH_USER_INFO_KEY, userInfo)
                 .set(CacheConst.AUTH_TOKEN_INFO_KEY, tokenInfo);
-        SysLogUtil.publish(1, "服务端登录");
+        SysLogUtil.publish(1, "服务端登录", AuthUtil.getUsername());
         log.info("====> login success,token={}", tokenInfo.getTokenValue());
         return R.ok(new TokenInfo().setToken(tokenInfo.tokenValue).setExpiration(tokenInfo.tokenTimeout));
     }
@@ -113,7 +113,7 @@ public class AuthEndpoint {
                 .setStatus(true)
                 .setCreateTime(new Date());
         userService.save(user);
-        SysLogUtil.publish(1, "服务端注册");
+        SysLogUtil.publish(1, "服务端注册", AuthUtil.getUsername());
         return R.ok();
     }
 

+ 2 - 2
langchat-auth/src/main/java/cn/tycoding/langchat/auth/endpoint/ClientAuthEndpoint.java

@@ -84,7 +84,7 @@ public class ClientAuthEndpoint {
 
         AigcUser aigcUser = BeanUtil.copyProperties(userInfo, AigcUser.class);
         aigcUser.setPassword(null);
-        SysLogUtil.publish(1, "客户端登录");
+        SysLogUtil.publish(1, "客户端登录", ClientAuthUtil.getUsername());
         log.info("====> Aigc User Login success! token={}", tokenInfo.getTokenValue());
         return R.ok(new TokenInfo()
                 .setToken(tokenInfo.tokenValue)
@@ -131,7 +131,7 @@ public class ClientAuthEndpoint {
                 .setStatus(true)
                 .setCreateTime(new Date());
         userService.save(user);
-        SysLogUtil.publish(1, "客户端注册");
+        SysLogUtil.publish(1, "客户端注册", ClientAuthUtil.getUsername());
         return R.ok();
     }
 

+ 4 - 5
langchat-auth/src/main/java/cn/tycoding/langchat/auth/utils/SysLogUtil.java

@@ -22,7 +22,6 @@ import cn.hutool.http.HttpUtil;
 import cn.tycoding.langchat.auth.event.LogEvent;
 import cn.tycoding.langchat.common.component.SpringContextHolder;
 import cn.tycoding.langchat.upms.entity.SysLog;
-import cn.tycoding.langchat.upms.utils.AuthUtil;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.SneakyThrows;
 import org.springframework.web.context.request.RequestContextHolder;
@@ -62,13 +61,13 @@ public class SysLogUtil {
      * @return Log类
      */
     @SneakyThrows
-    public static SysLog build(Integer type, String operation, String method, Long time) {
+    public static SysLog build(Integer type, String operation, String method, Long time, String username) {
         HttpServletRequest request = ((ServletRequestAttributes)
                 Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
 
         return new SysLog()
                 .setType(type)
-                .setUsername(AuthUtil.getUsername())
+                .setUsername(username)
                 .setOperation(operation)
                 .setCreateTime(new Date())
                 .setIp(JakartaServletUtil.getClientIP(request))
@@ -85,8 +84,8 @@ public class SysLogUtil {
      * @param type      日志类型
      * @param operation 描述
      */
-    public static void publish(int type, String operation) {
-        SysLog sysLog = SysLogUtil.build(type, operation, null, null);
+    public static void publish(int type, String operation, String username) {
+        SysLog sysLog = SysLogUtil.build(type, operation, null, null, username);
         SpringContextHolder.publishEvent(new LogEvent(sysLog));
     }
 }

+ 2 - 1
langchat-server/src/main/java/cn/tycoding/langchat/server/controller/AigcModelController.java

@@ -47,7 +47,8 @@ public class AigcModelController {
 
     @GetMapping("/list")
     public R<List<AigcModel>> list(AigcModel data) {
-        List<AigcModel> list = modelService.list(Wrappers.<AigcModel>lambdaQuery().eq(AigcModel::getProvider, data.getProvider()));
+        List<AigcModel> list = modelService.list(Wrappers.<AigcModel>lambdaQuery()
+                .eq(StrUtil.isNotBlank(data.getProvider()), AigcModel::getProvider, data.getProvider()));
         list.forEach(this::hide);
         return R.ok(list);
     }

+ 1 - 2
langchat-upms/src/main/java/cn/tycoding/langchat/upms/service/impl/SysUserServiceImpl.java

@@ -33,7 +33,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.cache.annotation.CacheEvict;
-import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -79,7 +78,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
-    @Cacheable(value = CacheConst.USER_DETAIL_KEY, key = "#username")
+//    @Cacheable(value = CacheConst.USER_DETAIL_KEY, key = "#username")
     public UserInfo info(String username) {
         SysUser user = this.findByName(username);
         UserInfo userInfo = BeanUtil.copyProperties(user, UserInfo.class);