AuthService.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #pragma warning disable CS1591
  2. using System.Threading.Tasks;
  3. using Jellyfin.Data;
  4. using Jellyfin.Database.Implementations.Enums;
  5. using MediaBrowser.Controller.Net;
  6. using Microsoft.AspNetCore.Http;
  7. namespace Emby.Server.Implementations.HttpServer.Security
  8. {
  9. public class AuthService : IAuthService
  10. {
  11. private readonly IAuthorizationContext _authorizationContext;
  12. public AuthService(
  13. IAuthorizationContext authorizationContext)
  14. {
  15. _authorizationContext = authorizationContext;
  16. }
  17. public async Task<AuthorizationInfo> Authenticate(HttpRequest request)
  18. {
  19. var auth = await _authorizationContext.GetAuthorizationInfo(request).ConfigureAwait(false);
  20. if (!auth.HasToken)
  21. {
  22. return auth;
  23. }
  24. if (!auth.IsAuthenticated)
  25. {
  26. throw new SecurityException("Invalid token.");
  27. }
  28. if (auth.User?.HasPermission(PermissionKind.IsDisabled) ?? false)
  29. {
  30. throw new SecurityException("User account has been disabled.");
  31. }
  32. return auth;
  33. }
  34. }
  35. }