Преглед изворни кода

Fix access policies to SyncPlay

Ionut Andrei Oanca пре 4 година
родитељ
комит
23473ef8fb

+ 1 - 1
Jellyfin.Api/Auth/SyncPlayAccessPolicy/SyncPlayAccessHandler.cs

@@ -43,7 +43,7 @@ namespace Jellyfin.Api.Auth.SyncPlayAccessPolicy
             var user = _userManager.GetUserById(userId!.Value);
             var user = _userManager.GetUserById(userId!.Value);
 
 
             if ((requirement.RequiredAccess.HasValue && user.SyncPlayAccess == requirement.RequiredAccess)
             if ((requirement.RequiredAccess.HasValue && user.SyncPlayAccess == requirement.RequiredAccess)
-                || (user.SyncPlayAccess == SyncPlayAccess.JoinGroups || user.SyncPlayAccess == SyncPlayAccess.CreateAndJoinGroups))
+                || user.SyncPlayAccess == SyncPlayAccess.CreateAndJoinGroups)
             {
             {
                 context.Succeed(requirement);
                 context.Succeed(requirement);
             }
             }

+ 2 - 0
Jellyfin.Api/Controllers/SyncPlayController.cs

@@ -69,6 +69,7 @@ namespace Jellyfin.Api.Controllers
         /// <returns>A <see cref="NoContentResult"/> indicating success.</returns>
         /// <returns>A <see cref="NoContentResult"/> indicating success.</returns>
         [HttpPost("Join")]
         [HttpPost("Join")]
         [ProducesResponseType(StatusCodes.Status204NoContent)]
         [ProducesResponseType(StatusCodes.Status204NoContent)]
+        [Authorize(Policy = Policies.SyncPlayAccess)]
         public ActionResult SyncPlayJoinGroup(
         public ActionResult SyncPlayJoinGroup(
             [FromBody, Required] JoinGroupRequestDto requestData)
             [FromBody, Required] JoinGroupRequestDto requestData)
         {
         {
@@ -100,6 +101,7 @@ namespace Jellyfin.Api.Controllers
         /// <returns>An <see cref="IEnumerable{GroupInfoView}"/> containing the available SyncPlay groups.</returns>
         /// <returns>An <see cref="IEnumerable{GroupInfoView}"/> containing the available SyncPlay groups.</returns>
         [HttpGet("List")]
         [HttpGet("List")]
         [ProducesResponseType(StatusCodes.Status200OK)]
         [ProducesResponseType(StatusCodes.Status200OK)]
+        [Authorize(Policy = Policies.SyncPlayAccess)]
         public ActionResult<IEnumerable<GroupInfoDto>> SyncPlayGetGroups()
         public ActionResult<IEnumerable<GroupInfoDto>> SyncPlayGetGroups()
         {
         {
             var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request);
             var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request);

+ 1 - 1
Jellyfin.Server/Extensions/ApiServiceCollectionExtensions.cs

@@ -131,7 +131,7 @@ namespace Jellyfin.Server.Extensions
                     policy =>
                     policy =>
                     {
                     {
                         policy.AddAuthenticationSchemes(AuthenticationSchemes.CustomAuthentication);
                         policy.AddAuthenticationSchemes(AuthenticationSchemes.CustomAuthentication);
-                        policy.AddRequirements(new SyncPlayAccessRequirement());
+                        policy.AddRequirements(new SyncPlayAccessRequirement(SyncPlayAccess.JoinGroups));
                     });
                     });
                 options.AddPolicy(
                 options.AddPolicy(
                     Policies.SyncPlayCreateGroupAccess,
                     Policies.SyncPlayCreateGroupAccess,