blob: 7663ec866a793b643e69ad4b64460323da86f18f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Authorization;
using BackendPIA.Models;
namespace BackendPIA.Policies {
public class CorrectTokenHandler : AuthorizationHandler<CorrectTokenRequirement> {
private readonly UserManager<UserAccount> _manager;
public CorrectTokenHandler(UserManager<UserAccount> 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;
}
}
}
|