diff options
author | crupest <crupest@outlook.com> | 2021-04-28 19:20:40 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-04-28 19:20:40 +0800 |
commit | e16c958e5ba47834dc1624e09ed8e5074a60d1c6 (patch) | |
tree | af8de5669e0ade7d1425d7c5599d438a6cf1c38c /BackEnd/Timeline/Auth | |
parent | 29453339a7ba744dc19f730ffbd71d6bff01f25b (diff) | |
download | timeline-e16c958e5ba47834dc1624e09ed8e5074a60d1c6.tar.gz timeline-e16c958e5ba47834dc1624e09ed8e5074a60d1c6.tar.bz2 timeline-e16c958e5ba47834dc1624e09ed8e5074a60d1c6.zip |
refator: ...
Diffstat (limited to 'BackEnd/Timeline/Auth')
-rw-r--r-- | BackEnd/Timeline/Auth/PrincipalExtensions.cs | 18 | ||||
-rw-r--r-- | BackEnd/Timeline/Auth/Resource.Designer.cs | 9 | ||||
-rw-r--r-- | BackEnd/Timeline/Auth/Resource.resx | 3 |
3 files changed, 28 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));
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 @@ -61,6 +61,15 @@ namespace Timeline.Auth { }
/// <summary>
+ /// Looks up a localized string similar to User identitifier claim is of bad format..
+ /// </summary>
+ internal static string ExceptionUserIdentifierClaimBadFormat {
+ get {
+ return ResourceManager.GetString("ExceptionUserIdentifierClaimBadFormat", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Token is found in authorization header. Token is {0} ..
/// </summary>
internal static string LogTokenFoundInHeader {
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 @@ <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
+ <data name="ExceptionUserIdentifierClaimBadFormat" xml:space="preserve">
+ <value>User identitifier claim is of bad format.</value>
+ </data>
<data name="LogTokenFoundInHeader" xml:space="preserve">
<value>Token is found in authorization header. Token is {0} .</value>
</data>
|