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> GetUserRolesAsync(string ipClient) { // Авторизация - проверка на разрешения // В данном случае, получаем все разрешения (роли) ICollection defaultResult = new string[0]; using (var scope = serviceProvider.CreateScope()) { //var clientService = scope.ServiceProvider.GetRequiredService(); //var ipClient = clientService.GetClientIp()?.ToString(); //if (string.IsNullOrEmpty(ipClient)) // return await Task.FromResult(defaultResult); var authService = scope.ServiceProvider.GetRequiredService(); // проверяем блокировку пользователя 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); } } }