Exemple #1
0
        internal async Task <List <Claim> > BuildClaimFromEntityAsync(IUser user, ClaimConfiguration claimConfig)
        {
            var entities = await GetEntities(claimConfig.Entity, claimConfig.EntityIdProperty, user.GetPropertyValue(claimConfig.RelatedEntityIdProperty, "Id").ToString());

            if (entities == null || !entities.Any())
            {
                return(null);
            }
            var claims = new List <Claim>();

            foreach (var entity in entities)
            {
                var jobject = JObject.Parse(entity.Object.ToString());
                var value   = jobject[claimConfig.EntityProperty]?.ToObject <string>();
                claims.Add(new Claim {
                    Name = claimConfig.Name, Value = value
                });
            }
            return(claims);
        }
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);
                }
            }
        }