Exemple #1
0
        public async Task <List <ClaimDomain> > BuildAsync(IUser user, IEnumerable <ClaimConfiguration> claimsConfigurations)
        {
            if (user == null || user.Id <= 0 || claimsConfigurations == null || !claimsConfigurations.Any())
            {
                return(null);
            }
            var claimDomains = new ClaimDomainDictionary();

            foreach (var claimConfig in claimsConfigurations)
            {
                await BuildClaimAsync(user, claimDomains, claimConfig);
            }
            return(claimDomains.Values.ToList());
        }
Exemple #2
0
        internal async Task BuildClaimAsync(IUser user, ClaimDomainDictionary claimDomains, ClaimConfiguration claimConfig)
        {
            var domainName = string.IsNullOrWhiteSpace(claimConfig.Domain) ? claimConfig.Entity : claimConfig.Domain;
            var domain     = claimDomains[domainName];

            if (claimConfig.Entity == "User")
            {
                var value = user.GetPropertyValue(claimConfig.EntityProperty).ToString();
                domain.Claims.Add(new Claim {
                    Name = claimConfig.Name, Value = value
                });
            }
            else
            {
                var claims = await BuildClaimFromEntityAsync(user, claimConfig);

                if (claims != null && claims.Any())
                {
                    domain.Claims.AddRange(claims);
                }
            }
        }