new CurrentUserService

This commit is contained in:
jojo aquino 2024-12-15 14:34:59 +00:00
parent 65cbfc53a7
commit 2457a64c9c
3 changed files with 43 additions and 1 deletions

View File

@ -0,0 +1,28 @@
using System.Security.Claims;
using System.Security.Principal;
namespace EnotaryoPH.Web.Common.Services
{
public class CurrentUserService : ICurrentUserService
{
private readonly ClaimsIdentity _user;
public CurrentUserService(IPrincipal principal) => _user = principal.Identity as ClaimsIdentity;
public string? GetEmail() => _user.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value;
public Guid GetUser_UID()
{
if (_user == null)
{
return Guid.Empty;
}
var uid = _user.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value;
Guid.TryParse(uid, out var user_UID);
return user_UID;
}
public bool IsAuthenticated() => _user?.IsAuthenticated ?? false;
}
}

View File

@ -0,0 +1,10 @@

namespace EnotaryoPH.Web.Common.Services
{
public interface ICurrentUserService
{
string? GetEmail();
Guid GetUser_UID();
bool IsAuthenticated();
}
}

View File

@ -1,3 +1,4 @@
using System.Security.Principal;
using EnotaryoPH.Data; using EnotaryoPH.Data;
using EnotaryoPH.Web.Common.Services; using EnotaryoPH.Web.Common.Services;
using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authentication.Cookies;
@ -17,9 +18,12 @@ namespace EnotaryoPH.Web
builder.Services.AddAuthorization(options => options.AddPolicy("PrincipalPolicy", policy => policy.RequireRole("Principal"))); builder.Services.AddAuthorization(options => options.AddPolicy("PrincipalPolicy", policy => policy.RequireRole("Principal")));
builder.Services.AddRazorPages(options => options.Conventions.AuthorizeFolder("/Principal", "PrincipalPolicy")); builder.Services.AddRazorPages(options => options.Conventions.AuthorizeFolder("/Principal", "PrincipalPolicy"));
builder.Services.AddDbContext<NotaryoDBContext>(); builder.Services.AddDbContext<NotaryoDBContext>();
builder.Services.AddTransient<IPasswordService, PasswordService>();
builder.Services.AddHttpContextAccessor(); builder.Services.AddHttpContextAccessor();
builder.Services.AddSession(options => options.IdleTimeout = TimeSpan.FromMinutes(120)); builder.Services.AddSession(options => options.IdleTimeout = TimeSpan.FromMinutes(120));
builder.Services.AddTransient<IPrincipal>(provider => provider.GetService<IHttpContextAccessor>()?.HttpContext?.User);
builder.Services.AddTransient<IPasswordService, PasswordService>();
builder.Services.AddTransient<ICurrentUserService, CurrentUserService>();
var app = builder.Build(); var app = builder.Build();