fix: allow super admin tenant-scoped role ops
This commit is contained in:
@@ -8,5 +8,6 @@ namespace TakeoutSaaS.Application.Identity.Commands;
|
||||
public sealed record BindRolePermissionsCommand : IRequest<bool>
|
||||
{
|
||||
public long RoleId { get; init; }
|
||||
public long? TenantId { get; init; }
|
||||
public long[] PermissionIds { get; init; } = Array.Empty<long>();
|
||||
}
|
||||
|
||||
@@ -8,6 +8,11 @@ namespace TakeoutSaaS.Application.Identity.Commands;
|
||||
/// </summary>
|
||||
public sealed record CreateRoleCommand : IRequest<RoleDto>
|
||||
{
|
||||
/// <summary>
|
||||
/// 租户 ID(空则取当前上下文)。
|
||||
/// </summary>
|
||||
public long? TenantId { get; init; }
|
||||
|
||||
public string Name { get; init; } = string.Empty;
|
||||
public string Code { get; init; } = string.Empty;
|
||||
public string? Description { get; init; }
|
||||
|
||||
@@ -8,4 +8,9 @@ namespace TakeoutSaaS.Application.Identity.Commands;
|
||||
public sealed record DeleteRoleCommand : IRequest<bool>
|
||||
{
|
||||
public long RoleId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 租户 ID(空则取当前上下文)。
|
||||
/// </summary>
|
||||
public long? TenantId { get; init; }
|
||||
}
|
||||
|
||||
@@ -9,6 +9,12 @@ namespace TakeoutSaaS.Application.Identity.Commands;
|
||||
public sealed record UpdateRoleCommand : IRequest<RoleDto?>
|
||||
{
|
||||
public long RoleId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 租户 ID(空则取当前上下文)。
|
||||
/// </summary>
|
||||
public long? TenantId { get; init; }
|
||||
|
||||
public string Name { get; init; } = string.Empty;
|
||||
public string? Description { get; init; }
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ public sealed class BindRolePermissionsCommandHandler(
|
||||
public async Task<bool> Handle(BindRolePermissionsCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
// 1. 获取租户上下文
|
||||
var tenantId = tenantProvider.GetCurrentTenantId();
|
||||
var tenantId = request.TenantId ?? tenantProvider.GetCurrentTenantId();
|
||||
|
||||
// 2. 覆盖式绑定权限
|
||||
await rolePermissionRepository.ReplaceRolePermissionsAsync(tenantId, request.RoleId, request.PermissionIds, cancellationToken);
|
||||
|
||||
@@ -18,7 +18,7 @@ public sealed class CreateRoleCommandHandler(
|
||||
public async Task<RoleDto> Handle(CreateRoleCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
// 1. 获取租户上下文
|
||||
var tenantId = tenantProvider.GetCurrentTenantId();
|
||||
var tenantId = request.TenantId ?? tenantProvider.GetCurrentTenantId();
|
||||
|
||||
// 2. 构建角色实体
|
||||
var role = new Role
|
||||
|
||||
@@ -16,7 +16,7 @@ public sealed class DeleteRoleCommandHandler(
|
||||
public async Task<bool> Handle(DeleteRoleCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
// 1. 获取租户上下文
|
||||
var tenantId = tenantProvider.GetCurrentTenantId();
|
||||
var tenantId = request.TenantId ?? tenantProvider.GetCurrentTenantId();
|
||||
|
||||
// 2. 删除角色
|
||||
await roleRepository.DeleteAsync(request.RoleId, tenantId, cancellationToken);
|
||||
|
||||
@@ -20,7 +20,7 @@ public sealed class RoleDetailQueryHandler(
|
||||
public async Task<RoleDetailDto?> Handle(RoleDetailQuery request, CancellationToken cancellationToken)
|
||||
{
|
||||
// 1. 获取租户上下文并查询角色
|
||||
var tenantId = tenantProvider.GetCurrentTenantId();
|
||||
var tenantId = request.TenantId ?? tenantProvider.GetCurrentTenantId();
|
||||
var role = await roleRepository.FindByIdAsync(request.RoleId, tenantId, cancellationToken);
|
||||
if (role is null)
|
||||
{
|
||||
|
||||
@@ -18,7 +18,7 @@ public sealed class SearchRolesQueryHandler(
|
||||
public async Task<PagedResult<RoleDto>> Handle(SearchRolesQuery request, CancellationToken cancellationToken)
|
||||
{
|
||||
// 1. 获取租户上下文并查询角色
|
||||
var tenantId = tenantProvider.GetCurrentTenantId();
|
||||
var tenantId = request.TenantId ?? tenantProvider.GetCurrentTenantId();
|
||||
var roles = await roleRepository.SearchAsync(tenantId, request.Keyword, cancellationToken);
|
||||
|
||||
// 2. 排序
|
||||
|
||||
@@ -17,7 +17,7 @@ public sealed class UpdateRoleCommandHandler(
|
||||
public async Task<RoleDto?> Handle(UpdateRoleCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
// 1. 获取租户上下文并查询角色
|
||||
var tenantId = tenantProvider.GetCurrentTenantId();
|
||||
var tenantId = request.TenantId ?? tenantProvider.GetCurrentTenantId();
|
||||
var role = await roleRepository.FindByIdAsync(request.RoleId, tenantId, cancellationToken);
|
||||
if (role == null)
|
||||
{
|
||||
|
||||
@@ -12,4 +12,9 @@ public sealed class RoleDetailQuery : IRequest<RoleDetailDto?>
|
||||
/// 角色 ID。
|
||||
/// </summary>
|
||||
public long RoleId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 租户 ID(空则取当前上下文)。
|
||||
/// </summary>
|
||||
public long? TenantId { get; init; }
|
||||
}
|
||||
|
||||
@@ -9,6 +9,11 @@ namespace TakeoutSaaS.Application.Identity.Queries;
|
||||
/// </summary>
|
||||
public sealed class SearchRolesQuery : IRequest<PagedResult<RoleDto>>
|
||||
{
|
||||
/// <summary>
|
||||
/// 指定查询的租户 ID(空则取当前上下文)。
|
||||
/// </summary>
|
||||
public long? TenantId { get; init; }
|
||||
|
||||
public string? Keyword { get; init; }
|
||||
public int Page { get; init; } = 1;
|
||||
public int PageSize { get; init; } = 20;
|
||||
|
||||
Reference in New Issue
Block a user