mirror of
https://github.com/Radarr/Radarr
synced 2025-01-03 05:44:50 +00:00
Add api endpoint to generate the required login cookie
(cherry picked from commit 4180e2787a1ad5284873de4847f345b2c47df72a)
This commit is contained in:
parent
4154414adf
commit
a994502e59
1 changed files with 34 additions and 1 deletions
|
@ -4,8 +4,10 @@
|
|||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authentication;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Notifications.Plex.PlexTv;
|
||||
using Radarr.Http;
|
||||
using Radarr.Http.Authentication.Plex;
|
||||
|
||||
namespace Radarr.Api.V4.Authentication
|
||||
{
|
||||
|
@ -13,10 +15,14 @@ namespace Radarr.Api.V4.Authentication
|
|||
public class AuthenticationController : Controller
|
||||
{
|
||||
private readonly IPlexTvService _plex;
|
||||
private readonly IConfigService _configService;
|
||||
private readonly IConfigFileProvider _configFileProvider;
|
||||
|
||||
public AuthenticationController(IPlexTvService plex)
|
||||
public AuthenticationController(IPlexTvService plex, IConfigService configService, IConfigFileProvider configFileProvider)
|
||||
{
|
||||
_plex = plex;
|
||||
_configService = configService;
|
||||
_configFileProvider = configFileProvider;
|
||||
}
|
||||
|
||||
[HttpGet("plex/resources")]
|
||||
|
@ -24,5 +30,32 @@ public List<PlexTvResource> GetResources(string accessToken)
|
|||
{
|
||||
return _plex.GetResources(accessToken);
|
||||
}
|
||||
|
||||
[HttpGet("cookie")]
|
||||
public async Task<IActionResult> GetCookie()
|
||||
{
|
||||
var authType = _configFileProvider.AuthenticationMethod;
|
||||
|
||||
var claims = new List<Claim>
|
||||
{
|
||||
new Claim("user", "Anonymous"),
|
||||
new Claim("AuthType", authType.ToString())
|
||||
};
|
||||
|
||||
if (authType == NzbDrone.Core.Authentication.AuthenticationType.Plex)
|
||||
{
|
||||
var claimType = _configService.PlexRequireOwner ? PlexConstants.ServerOwnedClaim : PlexConstants.ServerAccessClaim;
|
||||
claims.Add(new Claim(claimType, _configService.PlexAuthServer));
|
||||
}
|
||||
|
||||
var properties = new AuthenticationProperties
|
||||
{
|
||||
IsPersistent = true
|
||||
};
|
||||
|
||||
await HttpContext.SignInAsync(authType.ToString(), new ClaimsPrincipal(new ClaimsIdentity(claims, "Cookies", "user", "identifier")), properties);
|
||||
|
||||
return StatusCode((int)HttpStatusCode.OK);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue