aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Auth/PrincipalExtensions.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-04-28 19:20:40 +0800
committercrupest <crupest@outlook.com>2021-04-28 19:20:40 +0800
commite16c958e5ba47834dc1624e09ed8e5074a60d1c6 (patch)
treeaf8de5669e0ade7d1425d7c5599d438a6cf1c38c /BackEnd/Timeline/Auth/PrincipalExtensions.cs
parent29453339a7ba744dc19f730ffbd71d6bff01f25b (diff)
downloadtimeline-e16c958e5ba47834dc1624e09ed8e5074a60d1c6.tar.gz
timeline-e16c958e5ba47834dc1624e09ed8e5074a60d1c6.tar.bz2
timeline-e16c958e5ba47834dc1624e09ed8e5074a60d1c6.zip
refator: ...
Diffstat (limited to 'BackEnd/Timeline/Auth/PrincipalExtensions.cs')
-rw-r--r--BackEnd/Timeline/Auth/PrincipalExtensions.cs18
1 files changed, 16 insertions, 2 deletions
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));