package jnpf.aop;
|
|
import jnpf.aop.constant.PermissionConstant;
|
import jnpf.permission.service.RoleService;
|
import jnpf.util.UserProvider;
|
import lombok.extern.slf4j.Slf4j;
|
import org.aspectj.lang.ProceedingJoinPoint;
|
import org.aspectj.lang.annotation.Around;
|
import org.aspectj.lang.annotation.Aspect;
|
import org.aspectj.lang.annotation.Pointcut;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.List;
|
|
/**
|
* 角色操作权限
|
*
|
* @author JNPF开发平台组 YanYu
|
* @version V3.2.0
|
* @copyright 引迈信息技术有限公司
|
* @date 2022/2/10
|
*/
|
@Slf4j
|
@Aspect
|
@Component
|
public class PermissionRoleAspect implements PermissionAdminBase {
|
|
@Autowired
|
private RoleService roleService;
|
|
/**
|
* 分级管理切点
|
*/
|
@Pointcut("within(jnpf.*.controller.*) && @annotation(jnpf.annotation.RolePermission)")
|
public void pointcut() {
|
}
|
|
/**
|
* 分级管理切点
|
*
|
* @param pjp
|
* @return
|
* @throws Throwable
|
*/
|
@Around("pointcut()")
|
public Object around(ProceedingJoinPoint pjp) throws Throwable {
|
return PermissionAdminBase.permissionCommon(pjp, this);
|
}
|
|
@Override
|
public Boolean detailPermission(ProceedingJoinPoint pjp, String operatorUserId, String methodName) {
|
boolean flag = false;
|
switch (methodName) {
|
case PermissionConstant.METHOD_CREATE:
|
case PermissionConstant.METHOD_UPDATE:
|
return true;
|
case PermissionConstant.METHOD_DELETE:
|
return true;
|
default:
|
break;
|
}
|
return true;
|
}
|
|
/**
|
* 转成组织id字符串
|
*
|
* @param orgIdsTree
|
* @return
|
*/
|
private String getOrganize(List<List<String>> orgIdsTree) {
|
StringBuilder orgIds = new StringBuilder();
|
for (List<String> list : orgIdsTree) {
|
if (list.size() > 0) {
|
String orgId = list.get(list.size() - 1);
|
orgIds.append(orgId + ",");
|
}
|
}
|
return orgIds.toString();
|
}
|
|
/**
|
* 全局角色只能超管来操作
|
*
|
* @param globalMark 全局标识 1:全局 0: 非全局
|
*/
|
private Boolean checkAdminGlobal(Integer globalMark) {
|
if (globalMark != null && globalMark == 1) {
|
return UserProvider.getUser().getIsAdministrator();
|
}
|
return false;
|
}
|
|
}
|