支持多权限字符匹配角色数据权限
							parent
							
								
									aadb7a41cb
								
							
						
					
					
						commit
						27e0937235
					
				| 
						 | 
					@ -27,7 +27,7 @@ public @interface DataScope
 | 
				
			||||||
    public String userAlias() default "";
 | 
					    public String userAlias() default "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 权限字符(如不填默认会自动根据注解获取)
 | 
					     * 权限字符(用于多个角色匹配符合要求的权限)默认根据权限注解@ss获取,多个权限用逗号分隔开来
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public String permission() default "";
 | 
					    public String permission() default "";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -324,6 +324,32 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
 | 
				
			||||||
        return list;
 | 
					        return list;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 判断给定的set列表中是否包含数组array 判断给定的数组array中是否包含给定的元素value
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param set 给定的集合
 | 
				
			||||||
 | 
					     * @param array 给定的数组
 | 
				
			||||||
 | 
					     * @return boolean 结果
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static boolean containsAny(Collection<String> collection, String... array)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (isEmpty(collection) || isEmpty(array))
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            for (String str : array)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (collection.contains(str))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    return true;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 查找指定字符串是否包含指定字符串列表中的任意一个字符串同时串忽略大小写
 | 
					     * 查找指定字符串是否包含指定字符串列表中的任意一个字符串同时串忽略大小写
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
 | 
				
			||||||
import com.ruoyi.common.core.domain.entity.SysRole;
 | 
					import com.ruoyi.common.core.domain.entity.SysRole;
 | 
				
			||||||
import com.ruoyi.common.core.domain.entity.SysUser;
 | 
					import com.ruoyi.common.core.domain.entity.SysUser;
 | 
				
			||||||
import com.ruoyi.common.core.domain.model.LoginUser;
 | 
					import com.ruoyi.common.core.domain.model.LoginUser;
 | 
				
			||||||
 | 
					import com.ruoyi.common.core.text.Convert;
 | 
				
			||||||
import com.ruoyi.common.utils.SecurityUtils;
 | 
					import com.ruoyi.common.utils.SecurityUtils;
 | 
				
			||||||
import com.ruoyi.common.utils.StringUtils;
 | 
					import com.ruoyi.common.utils.StringUtils;
 | 
				
			||||||
import com.ruoyi.framework.security.context.PermissionContextHolder;
 | 
					import com.ruoyi.framework.security.context.PermissionContextHolder;
 | 
				
			||||||
| 
						 | 
					@ -99,7 +100,8 @@ public class DataScopeAspect
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                continue;
 | 
					                continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (StringUtils.isNotEmpty(permission) && StringUtils.isNotEmpty(role.getPermissions()) && !role.getPermissions().contains(permission))
 | 
					            if (StringUtils.isNotEmpty(permission) && StringUtils.isNotEmpty(role.getPermissions())
 | 
				
			||||||
 | 
					                    && !StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission)))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                continue;
 | 
					                continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -76,6 +76,7 @@ public class PermissionService
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        PermissionContextHolder.setContext(permissions);
 | 
				
			||||||
        Set<String> authorities = loginUser.getPermissions();
 | 
					        Set<String> authorities = loginUser.getPermissions();
 | 
				
			||||||
        for (String permission : permissions.split(PERMISSION_DELIMETER))
 | 
					        for (String permission : permissions.split(PERMISSION_DELIMETER))
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue