From e16c958e5ba47834dc1624e09ed8e5074a60d1c6 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 28 Apr 2021 19:20:40 +0800 Subject: refator: ... --- BackEnd/Timeline/Auth/PrincipalExtensions.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'BackEnd/Timeline/Auth/PrincipalExtensions.cs') diff --git a/BackEnd/Timeline/Auth/PrincipalExtensions.cs b/BackEnd/Timeline/Auth/PrincipalExtensions.cs index 605f66f6..81c21969 100644 --- a/BackEnd/Timeline/Auth/PrincipalExtensions.cs +++ b/BackEnd/Timeline/Auth/PrincipalExtensions.cs @@ -4,9 +4,23 @@ using Timeline.Services.User; namespace Timeline.Auth { - internal static class PrincipalExtensions + public static class PrincipalExtensions { - internal static bool HasPermission(this ClaimsPrincipal principal, UserPermission permission) + public static long? GetUserId(this ClaimsPrincipal? principal) + { + if (principal is null) return null; + + var claim = principal.FindFirst(ClaimTypes.NameIdentifier); + if (claim == null) + return null; + + if (long.TryParse(claim.Value, out var value)) + return value; + + throw new InvalidOperationException(Resource.ExceptionUserIdentifierClaimBadFormat); + } + + public static bool HasPermission(this ClaimsPrincipal principal, UserPermission permission) { return principal.HasClaim( claim => claim.Type == AuthenticationConstants.PermissionClaimName && string.Equals(claim.Value, permission.ToString(), StringComparison.OrdinalIgnoreCase)); -- cgit v1.2.3