< Summary

Class:SVETA.Api.Helpers.Authorize.MethodAuthorizationHandler
Assembly:SVETA.Api
File(s):/opt/dev/sveta_api_build/SVETA.Api/Helpers/Authorize/MethodAuthorizationHandler.cs
Covered lines:0
Uncovered lines:24
Coverable lines:24
Total lines:44
Line coverage:0% (0 of 24)
Covered branches:0
Total branches:12
Branch coverage:0% (0 of 12)

Metrics

MethodLine coverage Branch coverage
.ctor(...)0%100%
HandleRequirementAsync(...)0%0%

File(s)

/opt/dev/sveta_api_build/SVETA.Api/Helpers/Authorize/MethodAuthorizationHandler.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Authorization;
 2using Microsoft.Extensions.Logging;
 3using System;
 4using System.Collections.Generic;
 5using System.Linq;
 6using System.Security.Claims;
 7using System.Threading.Tasks;
 8using WinSolutions.Sveta.Server.Services.Interfaces;
 9
 10namespace SVETA.Api.Helpers.Authorize
 11{
 12    public class MethodAuthorizationHandler : AuthorizationHandler<MethodRequirement>
 13    {
 14        private ILogger<MethodAuthorizationHandler> _logger;
 15        private IMethodRolesService _methodRolesService;
 016        public MethodAuthorizationHandler(ILogger<MethodAuthorizationHandler> logger,
 017            IMethodRolesService methodRolesService)
 018        {
 019            _logger = logger;
 020            _methodRolesService = methodRolesService;
 021        }
 22        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MethodRequirement requiremen
 023        {
 024            var roles = context.User.FindAll(c => c.Type == ClaimTypes.Role);
 025            if (roles != null )
 026            {
 027                var baseRoles = _methodRolesService.GetMethodRoles(requirement.Method);
 028                if (baseRoles == null)
 029                {
 030                    return Task.CompletedTask;
 31                }
 032                foreach(var role in roles.ToList())
 033                {
 034                    if (baseRoles.Any(d => d.Roles != null && d.Roles.Name == role.Value))
 035                    {
 036                        context.Succeed(requirement);
 037                        break;
 38                    }
 039                }
 040            }
 041            return Task.CompletedTask;
 042        }
 43    }
 44}