< Summary - Jellyfin

Information
Class: Jellyfin.Api.Auth.UserPermissionPolicy.UserPermissionHandler
Assembly: Jellyfin.Api
File(s): /srv/git/jellyfin/Jellyfin.Api/Auth/UserPermissionPolicy/UserPermissionHandler.cs
Line coverage
84%
Covered lines: 11
Uncovered lines: 2
Coverable lines: 13
Total lines: 55
Line coverage: 84.6%
Branch coverage
75%
Covered branches: 6
Total branches: 8
Branch coverage: 75%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
HandleRequirementAsync(...)75%8.51880%

File(s)

/srv/git/jellyfin/Jellyfin.Api/Auth/UserPermissionPolicy/UserPermissionHandler.cs

#LineLine coverage
 1using System.Threading.Tasks;
 2using Jellyfin.Api.Extensions;
 3using Jellyfin.Extensions;
 4using MediaBrowser.Common.Extensions;
 5using MediaBrowser.Controller.Library;
 6using Microsoft.AspNetCore.Authorization;
 7
 8namespace Jellyfin.Api.Auth.UserPermissionPolicy
 9{
 10    /// <summary>
 11    /// User permission authorization handler.
 12    /// </summary>
 13    public class UserPermissionHandler : AuthorizationHandler<UserPermissionRequirement>
 14    {
 15        private readonly IUserManager _userManager;
 16
 17        /// <summary>
 18        /// Initializes a new instance of the <see cref="UserPermissionHandler"/> class.
 19        /// </summary>
 20        /// <param name="userManager">Instance of the <see cref="IUserManager"/> interface.</param>
 1721        public UserPermissionHandler(IUserManager userManager)
 22        {
 1723            _userManager = userManager;
 1724        }
 25
 26        /// <inheritdoc />
 27        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, UserPermissionRequirement re
 28        {
 29            // Api keys have global permissions, so just succeed the requirement.
 530            if (context.User.GetIsApiKey())
 31            {
 032                context.Succeed(requirement);
 33            }
 34            else
 35            {
 536                var userId = context.User.GetUserId();
 537                if (!userId.IsEmpty())
 38                {
 439                    var user = _userManager.GetUserById(context.User.GetUserId());
 440                    if (user is null)
 41                    {
 042                        throw new ResourceNotFoundException();
 43                    }
 44
 445                    if (user.HasPermission(requirement.RequiredPermission))
 46                    {
 447                        context.Succeed(requirement);
 48                    }
 49                }
 50            }
 51
 552            return Task.CompletedTask;
 53        }
 54    }
 55}