|
@@ -7,9 +7,11 @@ import org.aspectj.lang.annotation.Aspect;
|
|
|
import org.aspectj.lang.annotation.Before;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import com.ruoyi.common.annotation.DataScope;
|
|
|
+import com.ruoyi.common.core.context.PermissionContextHolder;
|
|
|
import com.ruoyi.common.core.domain.BaseEntity;
|
|
|
import com.ruoyi.common.core.domain.entity.SysRole;
|
|
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
|
|
+import com.ruoyi.common.core.text.Convert;
|
|
|
import com.ruoyi.common.utils.ShiroUtils;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
|
|
@@ -68,8 +70,9 @@ public class DataScopeAspect
|
|
|
// 如果是超级管理员,则不过滤数据
|
|
|
if (!currentUser.isAdmin())
|
|
|
{
|
|
|
+ String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), PermissionContextHolder.getContext());
|
|
|
dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
|
|
|
- controllerDataScope.userAlias());
|
|
|
+ controllerDataScope.userAlias(), permission);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -81,8 +84,9 @@ public class DataScopeAspect
|
|
|
* @param user 用户
|
|
|
* @param deptAlias 部门别名
|
|
|
* @param userAlias 用户别名
|
|
|
+ * @param permission 权限字符
|
|
|
*/
|
|
|
- public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias)
|
|
|
+ public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias, String permission)
|
|
|
{
|
|
|
StringBuilder sqlString = new StringBuilder();
|
|
|
List<String> conditions = new ArrayList<String>();
|
|
@@ -94,6 +98,11 @@ public class DataScopeAspect
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
+ if (StringUtils.isNotEmpty(permission) && StringUtils.isNotEmpty(role.getPermissions())
|
|
|
+ && !StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission)))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if (DATA_SCOPE_ALL.equals(dataScope))
|
|
|
{
|
|
|
sqlString = new StringBuilder();
|