|
@@ -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);
|