Finished database management and user authentication
This commit is contained in:
21
HopFrame.Security/Claims/HopFrameClaimTypes.cs
Normal file
21
HopFrame.Security/Claims/HopFrameClaimTypes.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using System.Security.Claims;
|
||||
|
||||
namespace HopFrame.Security.Claims;
|
||||
|
||||
public static class HopFrameClaimTypes {
|
||||
public const string AccessTokenId = "HopFrame.AccessTokenId";
|
||||
public const string UserId = "HopFrame.UserId";
|
||||
public const string Permission = "HopFrame.Permission";
|
||||
|
||||
public static string GetAccessTokenId(this ClaimsPrincipal principal) {
|
||||
return principal.FindFirstValue(AccessTokenId);
|
||||
}
|
||||
|
||||
public static string GetUserId(this ClaimsPrincipal principal) {
|
||||
return principal.FindFirstValue(UserId);
|
||||
}
|
||||
|
||||
public static string[] GetPermissions(this ClaimsPrincipal principal) {
|
||||
return principal.FindAll(Permission).Select(claim => claim.Value).ToArray();
|
||||
}
|
||||
}
|
||||
9
HopFrame.Security/Claims/ITokenContextBase.cs
Normal file
9
HopFrame.Security/Claims/ITokenContextBase.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
using HopFrame.Database.Models;
|
||||
|
||||
namespace HopFrame.Security.Claims;
|
||||
|
||||
public interface ITokenContextBase {
|
||||
bool IsAuthenticated { get; }
|
||||
User User { get; }
|
||||
Guid AccessToken { get; }
|
||||
}
|
||||
23
HopFrame.Security/Claims/TokenContextImplementor.cs
Normal file
23
HopFrame.Security/Claims/TokenContextImplementor.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using HopFrame.Database;
|
||||
using HopFrame.Database.Models;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
||||
namespace HopFrame.Security.Claims;
|
||||
|
||||
public class TokenContextImplementor : ITokenContextBase {
|
||||
private readonly IHttpContextAccessor _accessor;
|
||||
private readonly HopDbContextBase _context;
|
||||
|
||||
public TokenContextImplementor(IHttpContextAccessor accessor, HopDbContextBase context) {
|
||||
_accessor = accessor;
|
||||
_context = context;
|
||||
}
|
||||
|
||||
public bool IsAuthenticated => _accessor.HttpContext?.User.Identity?.IsAuthenticated == true;
|
||||
|
||||
public User User => _context.Users
|
||||
.SingleOrDefault(user => user.Id == _accessor.HttpContext.User.GetUserId())?
|
||||
.ToUserModel(_context);
|
||||
|
||||
public Guid AccessToken => Guid.Parse(_accessor.HttpContext?.User.GetAccessTokenId() ?? string.Empty);
|
||||
}
|
||||
Reference in New Issue
Block a user