Просмотр исходного кода

登录角色检查设置方法更新

hejq 7 лет назад
Родитель
Сommit
2980b07e45
1 измененных файлов с 46 добавлено и 5 удалено
  1. 46 5
      src/main/java/com/uas/platform/b2b/filter/SSOInterceptor.java

+ 46 - 5
src/main/java/com/uas/platform/b2b/filter/SSOInterceptor.java

@@ -1,6 +1,8 @@
 package com.uas.platform.b2b.filter;
 package com.uas.platform.b2b.filter;
 
 
 import com.uas.platform.b2b.dao.ResourceItemDao;
 import com.uas.platform.b2b.dao.ResourceItemDao;
+import com.uas.platform.b2b.dao.RoleDao;
+import com.uas.platform.b2b.dao.UserDao;
 import com.uas.platform.b2b.manage.service.AccessTokenService;
 import com.uas.platform.b2b.manage.service.AccessTokenService;
 import com.uas.platform.b2b.model.Enterprise;
 import com.uas.platform.b2b.model.Enterprise;
 import com.uas.platform.b2b.model.ResourceItem;
 import com.uas.platform.b2b.model.ResourceItem;
@@ -52,6 +54,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.Set;
 
 
 /**
 /**
@@ -78,9 +81,15 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 	@Autowired
 	@Autowired
 	private SigninLogService signinLogService;
 	private SigninLogService signinLogService;
 
 
+	@Autowired
+    private UserDao userDao;
+
 	@Autowired
 	@Autowired
     private com.uas.platform.b2b.v2.service.EnterpriseService v2EnterpriseService;
     private com.uas.platform.b2b.v2.service.EnterpriseService v2EnterpriseService;
 
 
+	@Autowired
+    private RoleDao roleDao;
+
 	private final DeviceResolver deviceResolver = new LiteDeviceResolver();
 	private final DeviceResolver deviceResolver = new LiteDeviceResolver();
 
 
     @Autowired
     @Autowired
@@ -167,9 +176,9 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 		}
 		}
 		if (user != null) {
 		if (user != null) {
             // 登录之前判断在当前企业的角色信息
             // 登录之前判断在当前企业的角色信息
-            if (null != user.getEnterprise()) {
+            if (null != user.getEnterprise() && user.getEnterprise().getEnAdminuu().equals(user.getUserUU())) {
                 Enterprise enterprise = user.getEnterprise();
                 Enterprise enterprise = user.getEnterprise();
-                user = v2EnterpriseService.setUserRole(user, enterprise);
+                user = setUserRole(user, enterprise);
                 user.setCurrentEnterprise(enterprise.getUu());
                 user.setCurrentEnterprise(enterprise.getUu());
             }
             }
 			SystemSession.setUser(user);
 			SystemSession.setUser(user);
@@ -200,6 +209,38 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 		}
 		}
     }
     }
 
 
+    /**
+     * 登陆后角色校验
+     *
+     * @param user 用户
+     * @param enterprise 当前企业
+     * @return User
+     */
+    private User setUserRole(User user, Enterprise enterprise) {
+        // 设置为本企业管理员
+        List<Role> adminList = roleDao.findByEnUUAndDesc(enterprise.getUu(), "管理员");
+        Set<Role> existRoles = user.getRoles();
+        if (!org.springframework.util.CollectionUtils.isEmpty(adminList)) {
+            final boolean[] exist = {false};
+            existRoles.forEach(role -> {
+                if (Objects.equals(role.getId(), adminList.get(0).getId())) {
+                    exist[0] = true;
+                }
+            });
+            // 角色不存在先从数据库取数据,防止其他地方设置了角色
+            if (!exist[0]) {
+                user = userService.findUserByUserUU(user.getUserUU());
+                user = setUserRole(user, enterprise);
+                // 重新检查仍不存在进行角色设置
+                if (!exist[0]) {
+                    user.getRoles().add(adminList.get(0));
+                    user = userDao.save(user);
+                }
+            }
+        }
+        return user;
+    }
+
     /**
     /**
      * 获取登录地址
      * 获取登录地址
      *
      *
@@ -278,10 +319,10 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 			}
 			}
 		}
 		}
 		if (user != null) {
 		if (user != null) {
-		    // 登录之前判断在当前企业的角色信息
-            if (null != user.getEnterprise()) {
+            // 登录之前判断在当前企业的角色信息
+            if (null != user.getEnterprise() && user.getEnterprise().getEnAdminuu().equals(user.getUserUU())) {
                 Enterprise enterprise = user.getEnterprise();
                 Enterprise enterprise = user.getEnterprise();
-                user = v2EnterpriseService.setUserRole(user, enterprise);
+                user = setUserRole(user, enterprise);
                 user.setCurrentEnterprise(enterprise.getUu());
                 user.setCurrentEnterprise(enterprise.getUu());
             }
             }
 			SystemSession.setUser(user);
 			SystemSession.setUser(user);