From 3da900a30e788d0acf2fcee7dba2aecdb16aab43 Mon Sep 17 00:00:00 2001 From: HombreLaser Date: Sun, 27 Nov 2022 12:46:26 -0600 Subject: AƱadido logout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Policies/CorrectTokenHandler.cs | 29 +++++++++++++++++++++++++++++ Policies/CorrectTokenRequirement.cs | 5 +++++ 2 files changed, 34 insertions(+) create mode 100644 Policies/CorrectTokenHandler.cs create mode 100644 Policies/CorrectTokenRequirement.cs (limited to 'Policies') diff --git a/Policies/CorrectTokenHandler.cs b/Policies/CorrectTokenHandler.cs new file mode 100644 index 0000000..7663ec8 --- /dev/null +++ b/Policies/CorrectTokenHandler.cs @@ -0,0 +1,29 @@ +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Authorization; +using BackendPIA.Models; + +namespace BackendPIA.Policies { + public class CorrectTokenHandler : AuthorizationHandler { + private readonly UserManager _manager; + + public CorrectTokenHandler(UserManager manager) { + _manager = manager; + } + + protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CorrectTokenRequirement requirement) { + if(context.Resource is HttpContext httpContext) { + var user = _manager.FindByEmailAsync(context.User.Claims.Where(c => c.Type.Contains("email")).First().Value).Result; + + if(user != null) { + string token = httpContext.Request.Headers["Authorization"].ToString().Split(' ')[1]; + + if(user.CurrentToken != null && user.CurrentToken == token) + context.Succeed(requirement); + } + } + + return Task.CompletedTask; + } + } +} \ No newline at end of file diff --git a/Policies/CorrectTokenRequirement.cs b/Policies/CorrectTokenRequirement.cs new file mode 100644 index 0000000..d89615f --- /dev/null +++ b/Policies/CorrectTokenRequirement.cs @@ -0,0 +1,5 @@ +using Microsoft.AspNetCore.Authorization; + +namespace BackendPIA.Policies { + public class CorrectTokenRequirement : IAuthorizationRequirement{} +} \ No newline at end of file -- cgit v1.2.3