Код: Выделить всё
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;
}
}
Как я могу получить список пользователей на основе разрешения напрямую?>
Подробнее здесь: https://stackoverflow.com/questions/794 ... permission