Files
parr_api/PARR.API/RoleProvider/BaseSimpleRoleProvider.cs

49 lines
1.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using PARR.API.Services.Interfaces;
namespace PARR.API.RoleProvider
{
public class BaseSimpleRoleProvider : ISimpleRoleProvider
{
private readonly IServiceProvider serviceProvider;
public BaseSimpleRoleProvider(IServiceProvider serviceProvider)
{
this.serviceProvider = serviceProvider;
}
public async Task<ICollection<string>> GetUserRolesAsync(string ipClient)
{
// Авторизация - проверка на разрешения
// В данном случае, получаем все разрешения (роли)
ICollection<string> defaultResult = new string[0];
using (var scope = serviceProvider.CreateScope())
{
//var clientService = scope.ServiceProvider.GetRequiredService<IClientService>();
//var ipClient = clientService.GetClientIp()?.ToString();
//if (string.IsNullOrEmpty(ipClient))
// return await Task.FromResult(defaultResult);
var authService = scope.ServiceProvider.GetRequiredService<IAuthService>();
// проверяем блокировку пользователя
var userIsBlocked = await authService.UserIsBlockedAsync(ipClient);
if (userIsBlocked)
return await Task.FromResult(defaultResult);
// получаем пользователя из кэша или бд
var user = await authService.GetUserAsync(ipClient);
if (user == null)
return await Task.FromResult(defaultResult);
return user.Roles.Select(t => t.Name).ToList();
}
// return await Task.FromResult(defaultResult);
}
}
}