< Summary

Information
Class: Elsa.ExternalAuthentication.Services.FinalLoginPathGuard
Assembly: Elsa.ExternalAuthentication
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.ExternalAuthentication/Services/FinalLoginPathGuard.cs
Line coverage
90%
Covered lines: 10
Uncovered lines: 1
Coverable lines: 11
Total lines: 29
Line coverage: 90.9%
Branch coverage
92%
Covered branches: 24
Total branches: 26
Branch coverage: 92.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
AuthorizeAsync()94.44%191887.5%
IsNormal(...)100%44100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.ExternalAuthentication/Services/FinalLoginPathGuard.cs

#LineLine coverage
 1using System.Security.Claims;
 2using Elsa.Authorization;
 3using Elsa.ExternalAuthentication.Contracts;
 4using Elsa.ExternalAuthentication.Models;
 5using Elsa.ExternalAuthentication.Options;
 6using Elsa.ExternalAuthentication.Permissions;
 7using Microsoft.Extensions.Options;
 8
 9namespace Elsa.ExternalAuthentication.Services;
 10
 11/// <summary>Prevents a management edit from removing the final ordinary sign-in path by accident.</summary>
 1212public sealed class FinalLoginPathGuard(IIdentityProviderConnectionRegistry registry, IOptions<ExternalAuthenticationOpt
 13{
 14    public async ValueTask<FinalLoginPathGuardResult> AuthorizeAsync(IdentityProviderConnection existing, IdentityProvid
 15    {
 2016        var guard = options.Value.FinalLoginPathGuard;
 2017        if (!guard.IsEnabled || !guard.RequireRecoveryMethod || !IsNormal(existing) || IsNormal(candidate) || guard.HasB
 1718            return FinalLoginPathGuardResult.Allowed;
 319        var effective = await registry.GetAsync(targetTenantId, cancellationToken);
 520        if (effective.Connections.Any(x => !string.Equals(x.Connection.Id, existing.Id, StringComparison.Ordinal) && IsN
 021            return FinalLoginPathGuardResult.Allowed;
 322        var canOverride = confirmedOverride && permissionEvaluator.HasPermission(actor, guard.PrivilegedOverridePermissi
 323        return canOverride ? FinalLoginPathGuardResult.Allowed : FinalLoginPathGuardResult.Denied;
 2024    }
 25
 926    private static bool IsNormal(IdentityProviderConnection connection) => connection is { IsEnabled: true, ArchivedAt: 
 27}
 28
 29public enum FinalLoginPathGuardResult { Allowed, Denied }