< Summary

Information
Class: FAU.API.Security.PermissionPolicyProvider
Assembly: FAU.API
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.API/Security/PermissionPolicyProvider.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 10
Coverable lines: 10
Total lines: 33
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 2
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
GetPolicyAsync(...)0%620%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.API/Security/PermissionPolicyProvider.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Authorization;
 2using Microsoft.Extensions.Options;
 3
 4namespace FAU.API.Security;
 5
 6/// <summary>
 7/// Crea dinámicamente políticas del tipo "Permission:xxx".
 8/// </summary>
 9public sealed class PermissionPolicyProvider : DefaultAuthorizationPolicyProvider
 10{
 11    public const string PolicyPrefix = "Permission:";
 12
 13    public PermissionPolicyProvider(IOptions<AuthorizationOptions> options)
 014        : base(options)
 15    {
 016    }
 17
 18    public override Task<AuthorizationPolicy?> GetPolicyAsync(string policyName)
 19    {
 020        if (policyName.StartsWith(PolicyPrefix, StringComparison.OrdinalIgnoreCase))
 21        {
 022            var permission = policyName[PolicyPrefix.Length..];
 023            var policy = new AuthorizationPolicyBuilder()
 024                .RequireAuthenticatedUser()
 025                .AddRequirements(new PermissionRequirement(permission))
 026                .Build();
 27
 028            return Task.FromResult<AuthorizationPolicy?>(policy);
 29        }
 30
 031        return base.GetPolicyAsync(policyName);
 32    }
 33}