Quellcode durchsuchen

fixed encryption

zero vor 1 Jahr
Ursprung
Commit
c5638d8fb8

+ 6 - 1
PCS/src/main/java/cn/cslg/permission/domain/associate/AssoFunctionModule.java

@@ -1,7 +1,6 @@
 package cn.cslg.permission.domain.associate;
 
 import cn.cslg.permission.common.model.BaseEntity;
-import cn.cslg.permission.domain.Personnel;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -31,4 +30,10 @@ public class AssoFunctionModule extends BaseEntity<AssoFunctionModule> {
      */
     @TableField(value = "CODE")
     private String code;
+
+    /**
+     * 代码授权类型  1未授权2授权
+     */
+    @TableField(value = "AUTH_TYPE")
+    private Integer authType;
 }

+ 43 - 9
PCS/src/main/java/cn/cslg/permission/service/LoginService.java

@@ -6,10 +6,7 @@ import cn.cslg.permission.common.model.dto.EncryptionLoginDTO;
 import cn.cslg.permission.common.model.vo.*;
 import cn.cslg.permission.common.utils.*;
 import cn.cslg.permission.common.utils.message.MessageUtils;
-import cn.cslg.permission.domain.Function;
-import cn.cslg.permission.domain.Personnel;
-import cn.cslg.permission.domain.ReSetPasswordDTO;
-import cn.cslg.permission.domain.Tenant;
+import cn.cslg.permission.domain.*;
 import cn.cslg.permission.domain.associate.AssoFunctionModule;
 import cn.cslg.permission.domain.associate.AssoPersonnelMachine;
 import cn.cslg.permission.mapper.FunctionMapper;
@@ -18,6 +15,7 @@ import cn.cslg.permission.mapper.associate.AssoFunctionModuleMapper;
 import cn.cslg.permission.mapper.associate.AssoPersonnelMachineMapper;
 import cn.cslg.permission.service.associate.PerDpService;
 import cn.cslg.permission.service.associate.PersonRoleService;
+import cn.cslg.permission.service.associate.RoleFunctionDataService;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.captcha.CaptchaUtil;
 import cn.hutool.captcha.CircleCaptcha;
@@ -39,6 +37,9 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.lang.System;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 
@@ -61,6 +62,9 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
     private final SystemService systemService;
     private final LoginRecordService loginRecordService;
     private final HttpServletRequest request;
+    private final RoleFunctionDataService roleFunctionDataService;
+    private final FunctionService functionService;
+    private final ApplicationService applicationService;
     @Autowired
     private PersonnelMapper personnelMapper;
     @Autowired
@@ -466,7 +470,36 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
             return Response.error(ResponseEnum.THE_TOKEN_IS_INVALID);
         }
         final String publicKey = personnel.getPublicKey();
-        final List<String> permissions = vo.getPermissions();
+        List<EncryptionFunctionVO> functionVOS = new ArrayList<>();
+
+        List<String> permissions = new ArrayList<>();
+        //1.获取该人员角色下权限id
+        List<Integer> functionIds = roleFunctionDataService.getPermission(StpUtil.getLoginIdAsInt());
+        if (!CollectionUtils.isEmpty(functionIds)) {
+            //2.用IDList在功能表中查出对应功能信息
+            List<Function> functionList = functionService.listByIds(functionIds);
+            //3.获取该人员角色所有权限
+            functionList.forEach(i -> {
+                permissions.add(i.getFunctionPath());
+            });
+        }
+        List<EncryptionFunctionVO> list = this.loadFunctionVOS(permissions, 2, publicKey);
+        functionVOS.addAll(list);
+
+        List<String> permissions1 = new ArrayList<>();
+        //获取所有权限
+        List<Function> functionList1 = functionService.list();
+
+        functionList1.forEach(i -> {
+            permissions1.add(i.getFunctionPath());
+        });
+        permissions1.removeAll(permissions);
+        List<EncryptionFunctionVO> list1 = this.loadFunctionVOS(permissions1, 1, publicKey);
+        functionVOS.addAll(list1);
+        return Response.success(functionVOS);
+    }
+
+    private List<EncryptionFunctionVO> loadFunctionVOS(List<String> permissions, Integer type, String publicKey) throws Exception {
         List<EncryptionFunctionVO> functionVOS = new ArrayList<>();
         List<Function> functions = functionMapper.selectList(new LambdaQueryWrapper<Function>()
                 .in(Function::getFunctionPath, permissions));
@@ -474,9 +507,10 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
             final Integer functionId = function.getId();
             final String functionPath = function.getFunctionPath();
             final AssoFunctionModule functionModule = assoFunctionModuleMapper.selectOne(new LambdaQueryWrapper<AssoFunctionModule>()
-                    .eq(AssoFunctionModule::getFunctionId, functionId));
-            final String moduleCode = functionModule.getCode();
-            if (StringUtils.isNotEmpty(moduleCode)) {
+                    .eq(AssoFunctionModule::getFunctionId, functionId)
+                    .eq(AssoFunctionModule::getAuthType, type));
+            if (ObjectUtils.isNotEmpty(functionModule) && StringUtils.isNotEmpty(functionModule.getCode())) {
+                final String moduleCode = functionModule.getCode();
                 final String encryptInfo = RSAUtils.encryptByPublicKey(moduleCode, publicKey);
                 EncryptionFunctionVO functionVO = new EncryptionFunctionVO();
                 functionVO.setPermission(functionPath);
@@ -484,6 +518,6 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
                 functionVOS.add(functionVO);
             }
         }
-        return Response.success(functionVOS);
+        return functionVOS;
     }
 }