|
@@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.controller.admin.auth;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
-import cn.iocoder.yudao.framework.common.util.collection.SetUtils;
|
|
|
|
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
|
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
|
import cn.iocoder.yudao.framework.security.config.SecurityProperties;
|
|
import cn.iocoder.yudao.framework.security.config.SecurityProperties;
|
|
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*;
|
|
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*;
|
|
@@ -12,16 +11,16 @@ import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
|
import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum;
|
|
import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum;
|
|
-import cn.iocoder.yudao.module.system.enums.permission.MenuTypeEnum;
|
|
|
|
import cn.iocoder.yudao.module.system.service.auth.AdminAuthService;
|
|
import cn.iocoder.yudao.module.system.service.auth.AdminAuthService;
|
|
|
|
+import cn.iocoder.yudao.module.system.service.permission.MenuService;
|
|
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
|
|
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
|
|
import cn.iocoder.yudao.module.system.service.permission.RoleService;
|
|
import cn.iocoder.yudao.module.system.service.permission.RoleService;
|
|
import cn.iocoder.yudao.module.system.service.social.SocialUserService;
|
|
import cn.iocoder.yudao.module.system.service.social.SocialUserService;
|
|
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
|
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
|
-import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
|
|
+import io.swagger.v3.oas.annotations.Operation;
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
import io.swagger.v3.oas.annotations.Parameters;
|
|
import io.swagger.v3.oas.annotations.Parameters;
|
|
-import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
|
|
+import io.swagger.v3.oas.annotations.tags.Tag;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
@@ -34,9 +33,9 @@ import java.util.List;
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
|
|
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
|
|
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
|
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
|
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.obtainAuthorization;
|
|
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.obtainAuthorization;
|
|
-import static java.util.Collections.singleton;
|
|
|
|
|
|
|
|
@Tag(name = "管理后台 - 认证")
|
|
@Tag(name = "管理后台 - 认证")
|
|
@RestController
|
|
@RestController
|
|
@@ -52,6 +51,8 @@ public class AuthController {
|
|
@Resource
|
|
@Resource
|
|
private RoleService roleService;
|
|
private RoleService roleService;
|
|
@Resource
|
|
@Resource
|
|
|
|
+ private MenuService menuService;
|
|
|
|
+ @Resource
|
|
private PermissionService permissionService;
|
|
private PermissionService permissionService;
|
|
@Resource
|
|
@Resource
|
|
private SocialUserService socialUserService;
|
|
private SocialUserService socialUserService;
|
|
@@ -90,34 +91,24 @@ public class AuthController {
|
|
@GetMapping("/get-permission-info")
|
|
@GetMapping("/get-permission-info")
|
|
@Operation(summary = "获取登录用户的权限信息")
|
|
@Operation(summary = "获取登录用户的权限信息")
|
|
public CommonResult<AuthPermissionInfoRespVO> getPermissionInfo() {
|
|
public CommonResult<AuthPermissionInfoRespVO> getPermissionInfo() {
|
|
- // 获得用户信息
|
|
|
|
|
|
+ // 1.1 获得用户信息
|
|
AdminUserDO user = userService.getUser(getLoginUserId());
|
|
AdminUserDO user = userService.getUser(getLoginUserId());
|
|
if (user == null) {
|
|
if (user == null) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
- // 获得角色列表
|
|
|
|
- Set<Long> roleIds = permissionService.getUserRoleIdsFromCache(getLoginUserId(),
|
|
|
|
- singleton(CommonStatusEnum.ENABLE.getStatus()));
|
|
|
|
- List<RoleDO> roleList = roleService.getRoleList(roleIds);
|
|
|
|
- // 获得菜单列表
|
|
|
|
- List<MenuDO> menuList = permissionService.getRoleMenuListFromCache(roleIds,
|
|
|
|
- SetUtils.asSet(MenuTypeEnum.DIR.getType(), MenuTypeEnum.MENU.getType(), MenuTypeEnum.BUTTON.getType()),
|
|
|
|
- singleton(CommonStatusEnum.ENABLE.getStatus())); // 只要开启的
|
|
|
|
- // 拼接结果返回
|
|
|
|
- return success(AuthConvert.INSTANCE.convert(user, roleList, menuList));
|
|
|
|
- }
|
|
|
|
|
|
|
|
- @GetMapping("/list-menus")
|
|
|
|
- @Operation(summary = "获得登录用户的菜单列表")
|
|
|
|
- public CommonResult<List<AuthMenuRespVO>> getMenuList() {
|
|
|
|
- // 获得角色列表
|
|
|
|
- Set<Long> roleIds = permissionService.getUserRoleIdsFromCache(getLoginUserId(), singleton(CommonStatusEnum.ENABLE.getStatus()));
|
|
|
|
- // 获得用户拥有的菜单列表
|
|
|
|
- List<MenuDO> menuList = permissionService.getRoleMenuListFromCache(roleIds,
|
|
|
|
- SetUtils.asSet(MenuTypeEnum.DIR.getType(), MenuTypeEnum.MENU.getType()), // 只要目录和菜单类型
|
|
|
|
- singleton(CommonStatusEnum.ENABLE.getStatus())); // 只要开启的
|
|
|
|
- // 转换成 Tree 结构返回
|
|
|
|
- return success(AuthConvert.INSTANCE.buildMenuTree(menuList));
|
|
|
|
|
|
+ // 1.2 获得角色列表
|
|
|
|
+ Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(getLoginUserId());
|
|
|
|
+ List<RoleDO> roles = roleService.getRoleList(roleIds);
|
|
|
|
+ roles.removeIf(role -> !CommonStatusEnum.ENABLE.getStatus().equals(role.getStatus())); // 移除禁用的角色
|
|
|
|
+
|
|
|
|
+ // 1.3 获得菜单列表
|
|
|
|
+ Set<Long> menuIds = permissionService.getRoleMenuListByRoleId(convertSet(roles, RoleDO::getId));
|
|
|
|
+ List<MenuDO> menuList = menuService.getMenuList(menuIds);
|
|
|
|
+ menuList.removeIf(menu -> !CommonStatusEnum.ENABLE.getStatus().equals(menu.getStatus())); // 移除禁用的菜单
|
|
|
|
+
|
|
|
|
+ // 2. 拼接结果返回
|
|
|
|
+ return success(AuthConvert.INSTANCE.convert(user, roles, menuList));
|
|
}
|
|
}
|
|
|
|
|
|
// ========== 短信登录相关 ==========
|
|
// ========== 短信登录相关 ==========
|