| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | 
							- using System;
 
- using System.Linq;
 
- using System.Security.Claims;
 
- using Jellyfin.Api.Constants;
 
- namespace Jellyfin.Api.Helpers
 
- {
 
-     /// <summary>
 
-     /// Claim Helpers.
 
-     /// </summary>
 
-     public static class ClaimHelpers
 
-     {
 
-         /// <summary>
 
-         /// Get user id from claims.
 
-         /// </summary>
 
-         /// <param name="user">Current claims principal.</param>
 
-         /// <returns>User id.</returns>
 
-         public static Guid? GetUserId(in ClaimsPrincipal user)
 
-         {
 
-             var value = GetClaimValue(user, InternalClaimTypes.UserId);
 
-             return string.IsNullOrEmpty(value)
 
-                 ? null
 
-                 : (Guid?)Guid.Parse(value);
 
-         }
 
-         /// <summary>
 
-         /// Get device id from claims.
 
-         /// </summary>
 
-         /// <param name="user">Current claims principal.</param>
 
-         /// <returns>Device id.</returns>
 
-         public static string? GetDeviceId(in ClaimsPrincipal user)
 
-             => GetClaimValue(user, InternalClaimTypes.DeviceId);
 
-         /// <summary>
 
-         /// Get device from claims.
 
-         /// </summary>
 
-         /// <param name="user">Current claims principal.</param>
 
-         /// <returns>Device.</returns>
 
-         public static string? GetDevice(in ClaimsPrincipal user)
 
-             => GetClaimValue(user, InternalClaimTypes.Device);
 
-         /// <summary>
 
-         /// Get client from claims.
 
-         /// </summary>
 
-         /// <param name="user">Current claims principal.</param>
 
-         /// <returns>Client.</returns>
 
-         public static string? GetClient(in ClaimsPrincipal user)
 
-             => GetClaimValue(user, InternalClaimTypes.Client);
 
-         /// <summary>
 
-         /// Get version from claims.
 
-         /// </summary>
 
-         /// <param name="user">Current claims principal.</param>
 
-         /// <returns>Version.</returns>
 
-         public static string? GetVersion(in ClaimsPrincipal user)
 
-             => GetClaimValue(user, InternalClaimTypes.Version);
 
-         /// <summary>
 
-         /// Get token from claims.
 
-         /// </summary>
 
-         /// <param name="user">Current claims principal.</param>
 
-         /// <returns>Token.</returns>
 
-         public static string? GetToken(in ClaimsPrincipal user)
 
-             => GetClaimValue(user, InternalClaimTypes.Token);
 
-         /// <summary>
 
-         /// Gets a flag specifying whether the request is using an api key.
 
-         /// </summary>
 
-         /// <param name="user">Current claims principal.</param>
 
-         /// <returns>The flag specifying whether the request is using an api key.</returns>
 
-         public static bool GetIsApiKey(in ClaimsPrincipal user)
 
-         {
 
-             var claimValue = GetClaimValue(user, InternalClaimTypes.IsApiKey);
 
-             return !string.IsNullOrEmpty(claimValue)
 
-                    && bool.TryParse(claimValue, out var parsedClaimValue)
 
-                    && parsedClaimValue;
 
-         }
 
-         private static string? GetClaimValue(in ClaimsPrincipal user, string name)
 
-         {
 
-             return user?.Identities
 
-                 .SelectMany(c => c.Claims)
 
-                 .Where(claim => claim.Type.Equals(name, StringComparison.OrdinalIgnoreCase))
 
-                 .Select(claim => claim.Value)
 
-                 .FirstOrDefault();
 
-         }
 
-     }
 
- }
 
 
  |