public static PSIScopeElement ConvertToPSType(this ScopeElement value)
        {
            if (value == null)
            {
                return(null);
            }

            var hasInValue = value.AdditionalProperties.Any(keyValuePair => "in".Equals(keyValuePair.Key, StringComparison.InvariantCultureIgnoreCase));

            if (hasInValue)
            {
                return(new PSScopeElementIn(value.Field,
                                            (value.AdditionalProperties.First(keyValuePair => "in".Equals(keyValuePair.Key, StringComparison.InvariantCultureIgnoreCase)).Value as JArray)?.ToObject <string[]>()));
            }

            return(new PSScopeElementContains(
                       value.Field,
                       value.AdditionalProperties.FirstOrDefault(keyValuePair => "contains".Equals(keyValuePair.Key, StringComparison.InvariantCultureIgnoreCase)).Value?.ToString()));
        }
コード例 #2
0
        public static Scope ToModel(this ScopeElement scopeElement)
        {
            if (scopeElement == null)
            {
                return(null);
            }

            var scope = new Scope
            {
                Identifier            = new Uri(scopeElement.Identifier),
                UseRelativeUri        = scopeElement.UseRelativeUri,
                Url                   = scopeElement.UseRelativeUri ? scopeElement.Uri.ReplaceWithLocalhostWhenRelative() : new Uri(scopeElement.Uri),
                UseClaimsPolicyEngine = scopeElement.UseClaimsPolicyEngine
            };

            if (scopeElement.Issuers != null)
            {
                var issuers = new List <ClaimProvider>();
                foreach (AllowedClaimProviderElement allowedIssuer in scopeElement.Issuers)
                {
                    issuers.Add(allowedIssuer.ToModel());
                }

                scope.AllowedIssuers = issuers;
            }

            if (scopeElement.ClaimRequirements != null)
            {
                var claimRequirements = new List <ClaimTypeRequirement>();
                foreach (ClaimRequirementElement claimReq in scopeElement.ClaimRequirements)
                {
                    claimRequirements.Add(claimReq.ToModel());
                }

                scope.ClaimTypeRequirements = claimRequirements;
            }

            return(scope);
        }
コード例 #3
0
 static public IEnumerable <IEnumerable <T> > GetReferenceables <T>(this ScopeElement item, string id, ScopeAccess access, IList <Scope> path)
 {
     return(item.GetLocalScope().GetReferenceables <T>(id, access, path));
 }
コード例 #4
0
 static public Scope GetParentScope(this ScopeElement item)
 {
     return(item.GetLocalScope().GetParentScope());
 }
コード例 #5
0
 static public Scope GetLocalScope(this ScopeElement item)
 {
     return(item.GetSelfOrParent <Scope>());
 }