public Task TransformAsync()

in src/Saas.Lib/Saas.Authorization/Saas.AspNetCore.Authorization/ClaimTransformers/ClaimPermissionToRoleTransformer.cs [33:61]


    public Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
    {
        System.Collections.Generic.IEnumerable<Claim> customClaims = principal.Claims
            .Where(c => _sourceClaimType
                .Equals(c.Type, StringComparison.OrdinalIgnoreCase));
        
        System.Collections.Generic.IEnumerable<Claim> roleClaims = customClaims
            .SelectMany(c =>
            {
                return c.Value.Split(' ').Select(s => 
                    new Claim(_roleClaimType, s));
            });

        if (!roleClaims.Any())
        {
            return Task.FromResult(principal);
        }

        ClaimsPrincipal transformed = new(principal);
        
        ClaimsIdentity rolesIdentity = new(
            roleClaims, 
            _authenticationType, 
            null, 
            _roleClaimType);
        
        transformed.AddIdentity(rolesIdentity);
        return Task.FromResult(transformed);
    }