Переглянути джерело

代码控制权限 2022/10/11

lwhhszx 3 роки тому
батько
коміт
ff44e31d67

+ 4 - 0
PAS/src/main/java/cn/cslg/pas/common/model/PersonnelVO.java

@@ -119,6 +119,10 @@ public class PersonnelVO {
      * 部门职位List
      */
     private List<DP> dpList;
+    /**
+     * 角色类型(是否为管理角色)
+     */
+    private Integer roleType;
 
     /**
      * 部门职位绑定关系

+ 12 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/ProjectVO.java

@@ -21,6 +21,18 @@ public class ProjectVO extends BaseVO {
     private List<Personnel> personnelList;
     private Integer departmentId;
     private List<Integer> personnelIds;
+    /*
+    角色类型
+     */
+    private Integer RoleType;
+    /*
+  登录人Id
+    */
+    private Integer PersonnelId;
+    /*
+   登录人租户Id
+    */
+    private Integer tenantId;
     @Data
     public static class Sort {
         private String order;

+ 8 - 2
PAS/src/main/java/cn/cslg/pas/common/utils/auth/AuthAop.java

@@ -52,6 +52,14 @@ public class AuthAop {
      */
     @Around("annotationPointcut()")
     public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
+
+        //获得登录人信息
+        PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
+              if(personnelVO.getState()==0){
+                  return Response.error("登录账号已被禁用,请联系管理员启用");
+              }
+
+
         // 是否通过切面过滤标记
         Boolean isPass = true;
         MethodSignature ms = (MethodSignature) joinPoint.getSignature();
@@ -109,8 +117,6 @@ public class AuthAop {
             JSONArray jsonArray1 = JSON.parseArray(resSource);
             // 获得字典
             List<DataSource> dataSources = jsonArray1.toJavaList(DataSource.class);
-            //获得登录人信息
-            PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
          //循环遍历将多个规则拼接起来
             StringBuilder sqlStr = new StringBuilder();
             for (int i = 0; i < jsonArray.size(); i++) {

+ 10 - 0
PAS/src/main/java/cn/cslg/pas/service/ProjectService.java

@@ -119,7 +119,17 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
         params.setCreateBy(loginUtils.getId());
 
         securityUtils.startDataScope("/workspace/project/check");
+        PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
+
+        if(personnelVO.getRoleType()==null||personnelVO.getRoleType()!=1)
+        {params.setPersonnelId(loginUtils.getId());
+if(personnelVO.getRoleType()!=null&&personnelVO.getRoleType()==2)
+{
+    params.setTenantId(personnelVO.getTenantId());
+}
+        }
         IPage<Project> pageList = baseMapper.getPageList(new Page<>(params.getCurrent(), params.getSize()), params);
+
         List<Project> dataList = pageList.getRecords();
 
         try {

+ 1 - 1
PAS/src/main/resources/application-test.yml

@@ -2,7 +2,7 @@ spring:
   redis:
     host: 172.27.247.174
     port: 6379
-    database: 4
+    database: 9
     password: Xx0GWxdWQJxx6Swe
     timeout: 1000
   datasource:

+ 6 - 0
PAS/src/main/resources/mapper/ProjectMapper.xml

@@ -53,6 +53,12 @@
                     FIND_IN_SET(#{item}, a.scenarioid)
                 </foreach>
             </if>
+        <if test="params.PersonnelId!=null">
+          and  a.id in (select tid from os_distribution_doing where uid=#{params.PersonnelId} )
+        <if test="params.tenantId!=null">
+            or a.tenantId = #{params.tenantId}
+        </if>
+        </if>
         </where>
         order by a.`${params.sort.prop}` ${params.sort.order}
     </select>