Mare 0.9 (#27)
* add jwt expiry * update api * merge * start rework permissions * ok so in theory this compiles * make it work I guess * reuse some permissions * fix intermediate connectivity issues * fixes * whatever * some fixes I guess * fix some stuff * idk some random fixes I guess * change some defaults * update nuget * adjust order of operations * adjust deletion of account * remove todo --------- Co-authored-by: rootdarkarchon <root.darkarchon@outlook.com>
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using MareSynchronosShared.Utils;
|
||||
using System.Globalization;
|
||||
|
||||
namespace MareSynchronosShared.RequirementHandlers;
|
||||
|
||||
public class ValidTokenRequirementHandler : AuthorizationHandler<ValidTokenRequirement>
|
||||
{
|
||||
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ValidTokenRequirement requirement)
|
||||
{
|
||||
var expirationClaimValue = context.User.Claims.Single(r => string.Equals(r.Type, MareClaimTypes.Expires, StringComparison.Ordinal))?.Value;
|
||||
if (expirationClaimValue == null)
|
||||
{
|
||||
context.Fail();
|
||||
}
|
||||
|
||||
DateTime expirationDate = new(long.Parse(expirationClaimValue, CultureInfo.InvariantCulture), DateTimeKind.Utc);
|
||||
if (expirationDate < DateTime.UtcNow)
|
||||
{
|
||||
context.Fail();
|
||||
}
|
||||
|
||||
context.Succeed(requirement);
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
||||
public class ValidTokenHubRequirementHandler : AuthorizationHandler<ValidTokenRequirement, HubInvocationContext>
|
||||
{
|
||||
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ValidTokenRequirement requirement, HubInvocationContext resource)
|
||||
{
|
||||
var expirationClaimValue = context.User.Claims.Single(r => string.Equals(r.Type, MareClaimTypes.Expires, StringComparison.Ordinal))?.Value;
|
||||
if (expirationClaimValue == null)
|
||||
{
|
||||
context.Fail();
|
||||
}
|
||||
|
||||
DateTime expirationDate = new(long.Parse(expirationClaimValue, CultureInfo.InvariantCulture), DateTimeKind.Utc);
|
||||
if (expirationDate < DateTime.UtcNow)
|
||||
{
|
||||
context.Fail();
|
||||
}
|
||||
|
||||
context.Succeed(requirement);
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace MareSynchronosShared.RequirementHandlers;
|
||||
|
||||
public class ValidTokenRequirement : IAuthorizationRequirement { }
|
||||
Reference in New Issue
Block a user