1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package com.ruoyi.system.service;
- import cn.hutool.core.collection.CollUtil;
- 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<>();
- // 管理员拥有所有权限
- 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<>();
- // 管理员拥有所有权限
- if (user.isAdmin()) {
- perms.add("*:*:*");
- } else {
- List<SysRole> roles = user.getRoles();
- if (CollUtil.isNotEmpty(roles)) {
- // 多角色设置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;
- }
- }
|