| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | 
							- using System;
 
- using System.Linq;
 
- using System.Security.Claims;
 
- using Jellyfin.Api.Constants;
 
- namespace Jellyfin.Api.Extensions;
 
- /// <summary>
 
- /// Extensions for <see cref="ClaimsPrincipal"/>.
 
- /// </summary>
 
- public static class ClaimsPrincipalExtensions
 
- {
 
-     /// <summary>
 
-     /// Get user id from claims.
 
-     /// </summary>
 
-     /// <param name="user">Current claims principal.</param>
 
-     /// <returns>User id.</returns>
 
-     public static Guid GetUserId(this ClaimsPrincipal user)
 
-     {
 
-         var value = GetClaimValue(user, InternalClaimTypes.UserId);
 
-         return string.IsNullOrEmpty(value)
 
-             ? default
 
-             : 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(this 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(this 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(this 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(this 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(this 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(this ClaimsPrincipal user)
 
-     {
 
-         var claimValue = GetClaimValue(user, InternalClaimTypes.IsApiKey);
 
-         return bool.TryParse(claimValue, out var parsedClaimValue)
 
-                && parsedClaimValue;
 
-     }
 
-     private static string? GetClaimValue(in ClaimsPrincipal user, string name)
 
-         => user.Claims.FirstOrDefault(claim => claim.Type.Equals(name, StringComparison.OrdinalIgnoreCase))?.Value;
 
- }
 
 
  |