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 ++++++++++++++++-- BackEnd/Timeline/Auth/Resource.Designer.cs | 9 +++++++++ BackEnd/Timeline/Auth/Resource.resx | 3 +++ 3 files changed, 28 insertions(+), 2 deletions(-) (limited to 'BackEnd/Timeline/Auth') 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)); diff --git a/BackEnd/Timeline/Auth/Resource.Designer.cs b/BackEnd/Timeline/Auth/Resource.Designer.cs index e9ef970e..05394551 100644 --- a/BackEnd/Timeline/Auth/Resource.Designer.cs +++ b/BackEnd/Timeline/Auth/Resource.Designer.cs @@ -60,6 +60,15 @@ namespace Timeline.Auth { } } + /// + /// Looks up a localized string similar to User identitifier claim is of bad format.. + /// + internal static string ExceptionUserIdentifierClaimBadFormat { + get { + return ResourceManager.GetString("ExceptionUserIdentifierClaimBadFormat", resourceCulture); + } + } + /// /// Looks up a localized string similar to Token is found in authorization header. Token is {0} .. /// diff --git a/BackEnd/Timeline/Auth/Resource.resx b/BackEnd/Timeline/Auth/Resource.resx index 21f2b2de..88cdbd6b 100644 --- a/BackEnd/Timeline/Auth/Resource.resx +++ b/BackEnd/Timeline/Auth/Resource.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + User identitifier claim is of bad format. + Token is found in authorization header. Token is {0} . -- cgit v1.2.3