feat: 管理端返回权限过滤的菜单树

This commit is contained in:
2025-12-04 22:06:05 +08:00
parent 7f52af34e5
commit 15ccff5407
5 changed files with 365 additions and 1 deletions

View File

@@ -95,6 +95,27 @@ public sealed class AuthController(IAdminAuthService authService) : BaseApiContr
return ApiResponse<CurrentUserProfile>.Ok(profile);
}
/// <summary>
/// 获取当前用户的菜单树(按权限过滤)。
/// </summary>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>当前用户可见的菜单树。</returns>
[HttpGet("menu")]
[PermissionAuthorize("identity:profile:read")]
[ProducesResponseType(typeof(ApiResponse<IReadOnlyList<MenuNodeDto>>), StatusCodes.Status200OK)]
public async Task<ApiResponse<IReadOnlyList<MenuNodeDto>>> GetMenuTree(CancellationToken cancellationToken)
{
// 1. 获取当前用户标识
var userId = User.GetUserId();
if (userId == 0)
{
return ApiResponse<IReadOnlyList<MenuNodeDto>>.Error(ErrorCodes.Unauthorized, "Token 缺少有效的用户标识");
}
// 2. 生成菜单树
var menu = await authService.GetMenuTreeAsync(userId, cancellationToken);
return ApiResponse<IReadOnlyList<MenuNodeDto>>.Ok(menu);
}
/// <summary>
/// 查询指定用户的角色与权限概览(当前租户范围)。
/// </summary>