doum
2026-05-26 f4d592f3626f94117d8a4eb22176a28290931980
server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java
@@ -27,6 +27,9 @@
public class LoginHandlerInterceptor implements HandlerInterceptor {
    /** 与前端 BasePage.adminCode 一致,超级管理员跳过接口权限码校验 */
    private static final String ADMIN_ROLE_CODE = "admin";
    private RedisTemplate<String,Object> stringRedisTemplate;
@@ -55,21 +58,23 @@
                    LoginUserInfo user =   checkLogin(token);
                    if (handlerMethod.hasMethodAnnotation(CloudRequiredPermission.class)) {
                        CloudRequiredPermission p = handlerMethod.getMethodAnnotation(CloudRequiredPermission.class);
                        if(p.value()!=null && p.value().length>0){
                        if (p.value() != null && p.value().length > 0 && !isAdminUser(user)) {
                            boolean hasPermission = false;
                            for(String s :p.value()){
                                if(user.getPermissions()!=null){
                                    for(String t :user.getPermissions()){
                                        if(StringUtils.equals(t,s)){
                            for (String s : p.value()) {
                                if (user.getPermissions() != null) {
                                    for (String t : user.getPermissions()) {
                                        if (StringUtils.equals(t, s)) {
                                            hasPermission = true;
                                            break;
                                        }
                                    }
                                }
                                if (hasPermission) {
                                    break;
                                }
                            }
                            if(!hasPermission) {
                                //没有操作权限
                                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"没有该操作权限");
                            if (!hasPermission) {
                                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "没有该操作权限");
                            }
                        }
                    }
@@ -118,6 +123,18 @@
        return body;
    }
    private boolean isAdminUser(LoginUserInfo user) {
        if (user == null || user.getRoles() == null) {
            return false;
        }
        for (String role : user.getRoles()) {
            if (StringUtils.equals(role, ADMIN_ROLE_CODE)) {
                return true;
            }
        }
        return false;
    }
    private LoginUserInfo checkLogin(String token) {
        if (token == null || token.isEmpty()) {
            throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"未登录");