mirror of
https://github.com/chylex/Minecraft-Phantom-Panel.git
synced 2025-04-30 06:34:06 +02:00
24 lines
856 B
C#
24 lines
856 B
C#
using System.Security.Claims;
|
|
using Phantom.Common.Data.Web.Users;
|
|
|
|
namespace Phantom.Web.Services.Authentication;
|
|
|
|
public sealed record UserInfo(Guid UserGuid, string Username, PermissionSet Permissions) {
|
|
private const string AuthenticationType = "Phantom";
|
|
|
|
internal ClaimsPrincipal AsClaimsPrincipal {
|
|
get {
|
|
var identity = new ClaimsIdentity(AuthenticationType);
|
|
|
|
identity.AddClaim(new Claim(ClaimTypes.Name, Username));
|
|
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, UserGuid.ToString()));
|
|
|
|
return new ClaimsPrincipal(identity);
|
|
}
|
|
}
|
|
|
|
public static Guid? TryGetGuid(ClaimsPrincipal principal) {
|
|
return principal.Identity is { IsAuthenticated: true, AuthenticationType: AuthenticationType } && principal.FindFirstValue(ClaimTypes.NameIdentifier) is {} guidStr && Guid.TryParse(guidStr, out var guid) ? guid : null;
|
|
}
|
|
}
|