AuthService.cs 1.1 KB

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