68 lines
1.9 KiB
Java
68 lines
1.9 KiB
Java
package com.ruoyi.system.service;
|
||
|
||
import com.ruoyi.common.core.domain.entity.SysRole;
|
||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||
import lombok.RequiredArgsConstructor;
|
||
import org.springframework.stereotype.Service;
|
||
|
||
import java.util.HashSet;
|
||
import java.util.List;
|
||
import java.util.Set;
|
||
|
||
/**
|
||
* 用户权限处理
|
||
*
|
||
* @author ruoyi
|
||
*/
|
||
@RequiredArgsConstructor
|
||
@Service
|
||
public class SysPermissionService {
|
||
|
||
private final ISysRoleService roleService;
|
||
private final ISysMenuService menuService;
|
||
|
||
/**
|
||
* 获取角色数据权限
|
||
*
|
||
* @param user 用户信息
|
||
* @return 角色权限信息
|
||
*/
|
||
public Set<String> getRolePermission(SysUser user) {
|
||
Set<String> roles = new HashSet<String>();
|
||
// 管理员拥有所有权限
|
||
if (user.isAdmin()) {
|
||
roles.add("admin");
|
||
} else {
|
||
roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId()));
|
||
}
|
||
return roles;
|
||
}
|
||
|
||
/**
|
||
* 获取菜单数据权限
|
||
*
|
||
* @param user 用户信息
|
||
* @return 菜单权限信息
|
||
*/
|
||
public Set<String> getMenuPermission(SysUser user) {
|
||
Set<String> perms = new HashSet<String>();
|
||
// 管理员拥有所有权限
|
||
if (user.isAdmin()) {
|
||
perms.add("*:*:*");
|
||
} else {
|
||
List<SysRole> roles = user.getRoles();
|
||
if (!roles.isEmpty() && roles.size() > 1) {
|
||
// 多角色设置permissions属性,以便数据权限匹配权限
|
||
for (SysRole role : roles) {
|
||
Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId());
|
||
role.setPermissions(rolePerms);
|
||
perms.addAll(rolePerms);
|
||
}
|
||
} else {
|
||
perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId()));
|
||
}
|
||
}
|
||
return perms;
|
||
}
|
||
}
|