|
@@ -28,13 +28,17 @@ import cn.com.qmth.examcloud.commons.web.security.enums.RoleMeta;
|
|
|
import cn.com.qmth.examcloud.core.basic.base.constants.PropKeys;
|
|
|
import cn.com.qmth.examcloud.core.basic.base.enums.AccountType;
|
|
|
import cn.com.qmth.examcloud.core.basic.dao.OrgRepo;
|
|
|
+import cn.com.qmth.examcloud.core.basic.dao.PrivilegeRepo;
|
|
|
+import cn.com.qmth.examcloud.core.basic.dao.RolePrivilegeRelationRepo;
|
|
|
import cn.com.qmth.examcloud.core.basic.dao.RoleRepo;
|
|
|
import cn.com.qmth.examcloud.core.basic.dao.StudentRepo;
|
|
|
import cn.com.qmth.examcloud.core.basic.dao.ThirdPartyAccessRepo;
|
|
|
import cn.com.qmth.examcloud.core.basic.dao.UserRepo;
|
|
|
import cn.com.qmth.examcloud.core.basic.dao.UserRoleRelationRepo;
|
|
|
import cn.com.qmth.examcloud.core.basic.dao.entity.OrgEntity;
|
|
|
+import cn.com.qmth.examcloud.core.basic.dao.entity.PrivilegeEntity;
|
|
|
import cn.com.qmth.examcloud.core.basic.dao.entity.RoleEntity;
|
|
|
+import cn.com.qmth.examcloud.core.basic.dao.entity.RolePrivilegeRelationEntity;
|
|
|
import cn.com.qmth.examcloud.core.basic.dao.entity.StudentEntity;
|
|
|
import cn.com.qmth.examcloud.core.basic.dao.entity.ThirdPartyAccessEntity;
|
|
|
import cn.com.qmth.examcloud.core.basic.dao.entity.ThirdPartyAccessPK;
|
|
@@ -78,6 +82,12 @@ public class AuthServiceImpl implements AuthService {
|
|
|
@Autowired
|
|
|
UserRoleRelationRepo userRoleRelationRepo;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ RolePrivilegeRelationRepo rolePrivilegeRelationRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ PrivilegeRepo privilegeRepo;
|
|
|
+
|
|
|
@Override
|
|
|
public User login(LoginInfo loginInfo) {
|
|
|
|
|
@@ -191,6 +201,7 @@ public class AuthServiceImpl implements AuthService {
|
|
|
}
|
|
|
|
|
|
setSession(user);
|
|
|
+ setRolePrivilegesCache(user);
|
|
|
|
|
|
if (isLcUser) {
|
|
|
setSecurityIp(user, orgId);
|
|
@@ -199,6 +210,32 @@ public class AuthServiceImpl implements AuthService {
|
|
|
return user;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 设置角色权限缓存
|
|
|
+ *
|
|
|
+ * @author WANGWEI
|
|
|
+ * @param user
|
|
|
+ */
|
|
|
+ private void setRolePrivilegesCache(User user) {
|
|
|
+ List<Role> roleList = user.getRoleList();
|
|
|
+ Long rootOrgId = user.getRootOrgId();
|
|
|
+ for (Role role : roleList) {
|
|
|
+ Long roleId = role.getRoleId();
|
|
|
+ List<RolePrivilegeRelationEntity> relationList = rolePrivilegeRelationRepo
|
|
|
+ .findAllByRoleIdAndRootOrgId(roleId, rootOrgId);
|
|
|
+
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ for (RolePrivilegeRelationEntity cur : relationList) {
|
|
|
+
|
|
|
+ PrivilegeEntity privilegeEntity = privilegeRepo.findOne(cur.getPrivilegeId());
|
|
|
+ sb.append(privilegeEntity.getCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ String key = "$_P_" + rootOrgId + "_" + roleId;
|
|
|
+ redisClient.set(key, sb.toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 设置机构安全IP
|
|
|
*
|