Получить пользователей на основе разрешенияC#

Место общения программистов C#
Anonymous
Получить пользователей на основе разрешения

Сообщение Anonymous »

Я хочу получить список пользователей с определенным разрешением, поэтому я создал услугу для этого следующим образом: < /p>

Код: Выделить всё

public async Task GetAssignableUsersAsync()
{
var users = await _userRepository.GetListAsync();
var result = new List();
var permissionName = "Module.MyModule.Assignable";

foreach (var user in users)
{
if (await IsGrantedAsync(user.Id, permissionName))
{
result.Add(new PermissionedUserSummaryDto
{
Id = user.Id,
UserName = user.UserName,
});
}
}

return result;
}

private async Task IsGrantedAsync(Guid userId, string permissionName)
{
var claimsPrincipal = await GetClaimsPrincipalForUserAsync(userId);
return await _permissionChecker.IsGrantedAsync(claimsPrincipal, permissionName);
}

private async Task GetClaimsPrincipalForUserAsync(Guid userId)
{
var user = await _userRepository.GetAsync(userId);
if (user == null)
{
throw new InvalidOperationException($"User with ID {userId} not found.");
}

var claims = new[]
{
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim(ClaimTypes.Name, user.UserName)
};

var identity = new ClaimsIdentity(claims, "Custom");
var claimsPrincipal = new ClaimsPrincipal(identity);

return claimsPrincipal;
}
}
Как вы можете видеть, я использую var users = wait _userrepository.getlistasync () , что, я считаю, не требуется. Тем не менее, я не нашел способ извлечь только пользователей с конкретным разрешением без сначала извлечения всего списка, а затем фильтрации его (мой текущий подход).
Как я могу получить список пользователей на основе разрешения напрямую?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... permission

Вернуться в «C#»