feat(api): аутентификация и авторизация. Кастомные ParrAuthenticationHandler и BaseSimpleRoleProvider.

This commit is contained in:
Mikhail Trubnikov
2023-12-01 16:41:37 +10:00
parent 78f2310199
commit d0c309e642
23 changed files with 395 additions and 11 deletions

View File

@@ -15,7 +15,7 @@ namespace PARR.DAL.CacheServices
public async Task<T?> GetCachedDataAsync<T>(string key)
{
var jsonData = await cache.GetStringAsync(key);
if (jsonData == null)
return default(T);

View File

@@ -62,6 +62,7 @@ namespace PARR.DAL
services.AddTransient<IAgentHistoryService, AgentHistoryService>();
services.AddTransient<IOrderService, OrderService>();
services.AddTransient<IOrderStatusService, OrderStatusService>();
services.AddTransient<IUserService, UserService>();
// TransformServices

View File

@@ -40,6 +40,11 @@ namespace PARR.DAL.Services.Implementations
.FirstOrDefaultAsync(h => h.IP == IP);
}
public async Task<Host?> GetByIpAsync(string ip)
{
return await EntitySet.FirstOrDefaultAsync(t => t.IP == ip);
}
//public async Task<Host?> GetHostByRegionalEKAsync(string RegionalEK)И
//{
// try

View File

@@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using PARR.DAL.Context;
using PARR.DAL.Models;
using PARR.DAL.Services.Abstracts;
using PARR.DAL.Services.Interfaces;
namespace PARR.DAL.Services.Implementations
{
internal class UserService : BaseService<User>, IUserService
{
private readonly DataContext dataContext;
public UserService(DataContext dataContext, ILogger<UserService> logger) : base(logger)
{
this.dataContext = dataContext;
}
protected override DbSet<User> EntitySet => dataContext.Users;
protected override DataContext EntitiContext => dataContext;
public async Task<User?> GetByIpWithRolesAsync(string ipAddress)
{
return await EntitySet
.Include(t => t.Roles).ThenInclude(t => t.Role)
.FirstOrDefaultAsync(t => t.Ip == ipAddress);
}
}
}

View File

@@ -5,6 +5,10 @@ namespace PARR.DAL.Services.Interfaces
{
public interface IHostService : IBaseService<Host>
{
Task<Host?> GetHostWithAppsAsync(string IP);
Task<Host?> GetHostWithAppsAsync(string ip);
Task<Host?> GetByIpAsync(string ip);
}
}

View File

@@ -0,0 +1,10 @@
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces.Base;
namespace PARR.DAL.Services.Interfaces
{
public interface IUserService: IBaseService<User>
{
Task<User?> GetByIpWithRolesAsync(string ipAddress);
}
}