Implemented centralised audit logging
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
using PostFundManagement.Domain.Abstractions;
|
||||
|
||||
namespace PostFundManagement.Infrastructure.Database.Factories;
|
||||
|
||||
public sealed partial class ApplicationDbContextFactory
|
||||
{
|
||||
private sealed class DesignTimeTenantContextService : ITenantContextService
|
||||
{
|
||||
public string? TenantName => "Design Time";
|
||||
public long TenantId => 0L;
|
||||
public bool IsAdmin => true;
|
||||
public bool HasTenantFilter => false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
using PostFundManagement.Domain.Abstractions;
|
||||
|
||||
namespace PostFundManagement.Infrastructure.Database.Services;
|
||||
|
||||
public sealed class TenantContextService : ITenantContextService
|
||||
{
|
||||
public string? TenantName { get; }
|
||||
|
||||
public long TenantId { get; }
|
||||
|
||||
public bool IsAdmin { get; }
|
||||
|
||||
public bool HasTenantFilter { get; }
|
||||
|
||||
public TenantContextService(IHttpContextAccessor httpContextAccessor)
|
||||
{
|
||||
var user = httpContextAccessor.HttpContext?.User;
|
||||
|
||||
IsAdmin = user?.IsInRole("Admin") == true || user?.HasClaim("role", "Admin") == true;
|
||||
|
||||
HasTenantFilter = !IsAdmin;
|
||||
|
||||
var tenantIdClaimVal = user?.FindFirst("tenant_id")?.Value ?? user?.FindFirst("TenantId")?.Value;
|
||||
TenantId = long.TryParse(tenantIdClaimVal, out var id) ? id : 0L;
|
||||
|
||||
var tenantNameClaimVal = user?.FindFirst("tenant")?.Value ?? user?.FindFirst("Tenant")?.Value;
|
||||
TenantName = !string.IsNullOrWhiteSpace(tenantNameClaimVal) ? tenantNameClaimVal : null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user