|
|
|
@ -1,8 +1,13 @@
|
|
|
|
|
package com.zh.project0512.aop;
|
|
|
|
|
|
|
|
|
|
import com.zh.project0512.annotation.AdminCheckAuthorityAnnotation;
|
|
|
|
|
import com.zh.project0512.model.Admin;
|
|
|
|
|
import com.zh.project0512.service.IAdminRoleService;
|
|
|
|
|
import com.zh.project0512.service.IAdminService;
|
|
|
|
|
import com.zh.project0512.service.IUserService;
|
|
|
|
|
import com.zh.project0512.utils.BizException;
|
|
|
|
|
import com.zh.project0512.utils.JwtUtil;
|
|
|
|
|
import com.zh.project0512.utils.result.HttpStatusEnum;
|
|
|
|
|
import jdk.nashorn.internal.ir.annotations.Reference;
|
|
|
|
|
import org.aspectj.lang.JoinPoint;
|
|
|
|
|
import org.aspectj.lang.annotation.AfterReturning;
|
|
|
|
@ -37,7 +42,9 @@ public class AdminCheckAuthorityAspect {
|
|
|
|
|
private final static Logger logger = LoggerFactory.getLogger(AdminCheckAuthorityAspect.class);
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
IUserService userService;
|
|
|
|
|
IAdminService adminService;
|
|
|
|
|
@Resource
|
|
|
|
|
IAdminRoleService adminRoleService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -59,38 +66,36 @@ public class AdminCheckAuthorityAspect {
|
|
|
|
|
|
|
|
|
|
//获取当前用户的信息
|
|
|
|
|
String tokenId = request.getHeader("token");
|
|
|
|
|
Integer userId = userService.selByOpenid(new JwtUtil().parseOpenid(tokenId)).getId();
|
|
|
|
|
|
|
|
|
|
// //如果不是超级管理员,则判断是否有足够权限
|
|
|
|
|
// if (manageUser.getType() != 1){//1.公司超级管理员
|
|
|
|
|
// //1、查询【当前用户】所拥有的【角色】
|
|
|
|
|
// String roleIdsStr = manageUser.getRoleId();
|
|
|
|
|
// if (roleIdsStr != null){
|
|
|
|
|
// String[] roleIds = roleIdsStr.split(",");
|
|
|
|
|
//
|
|
|
|
|
// HashSet<Integer> jurisdictionIds = new HashSet<>();
|
|
|
|
|
// for (String roleId : roleIds) {
|
|
|
|
|
// //2、根据【角色】查询对应的权限
|
|
|
|
|
// List<Integer> jurisdictionIdList = manageCheckAuthorityService.findJurisdictionByRoleId(roleId,sysCommunity);
|
|
|
|
|
//
|
|
|
|
|
// //3、将各个角色的权限 合在一起 并进行 去重操作
|
|
|
|
|
// jurisdictionIds.addAll(jurisdictionIdList);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// //4、获取该api所需权限
|
|
|
|
|
// MethodSignature signature = (MethodSignature) joinPoint.getSignature();
|
|
|
|
|
// ManageCheckAuthorityAnnotation annotation = signature.getMethod().getAnnotation(ManageCheckAuthorityAnnotation.class);
|
|
|
|
|
// String jurisdictionId = annotation.jurisdictionId();
|
|
|
|
|
//
|
|
|
|
|
// //5、判断该用户是否存在该api所需权限,如果存在,则通过,不存在则抛出提示权限不足
|
|
|
|
|
// if (!jurisdictionIds.contains(Integer.valueOf(jurisdictionId))){
|
|
|
|
|
// throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"用户权限不足");
|
|
|
|
|
// }
|
|
|
|
|
// }else {
|
|
|
|
|
// throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"用户权限不足");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
Integer id = Integer.valueOf(new JwtUtil().parseAdminJWT(tokenId).getId());
|
|
|
|
|
|
|
|
|
|
Admin admin = adminService.getById(id);
|
|
|
|
|
//1、查询【当前用户】所拥有的【角色】
|
|
|
|
|
String roleIdsStr = admin.getRoleIds();
|
|
|
|
|
if (roleIdsStr != null && !roleIdsStr.trim().equals("")){
|
|
|
|
|
String[] roleIds = roleIdsStr.split(",");
|
|
|
|
|
|
|
|
|
|
HashSet<Integer> jurisdictionIds = new HashSet<>();
|
|
|
|
|
for (String roleId : roleIds) {
|
|
|
|
|
//2、根据【角色】查询对应的权限
|
|
|
|
|
List<Integer> jurisdictionIdList = adminRoleService.findJurisdictionByRoleId(roleId);
|
|
|
|
|
|
|
|
|
|
//3、将各个角色的权限 合在一起 并进行 去重操作
|
|
|
|
|
jurisdictionIds.addAll(jurisdictionIdList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//4、获取该api所需权限
|
|
|
|
|
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
|
|
|
|
|
AdminCheckAuthorityAnnotation annotation = signature.getMethod().getAnnotation(AdminCheckAuthorityAnnotation.class);
|
|
|
|
|
String jurisdictionId = annotation.jurisdictionId();
|
|
|
|
|
|
|
|
|
|
//5、判断该用户是否存在该api所需权限,如果存在,则通过,不存在则抛出提示权限不足
|
|
|
|
|
if (!jurisdictionIds.contains(Integer.valueOf(jurisdictionId))){
|
|
|
|
|
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"用户权限不足");
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"用户权限不足");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|