Exemple #1
0
        internal static DeserializedDocument DeserializeAndValidate(string json, List <ValidationError> validationErrors)
        {
            DeserializedDocument deserializedDocument = null;

            try
            {
                deserializedDocument = JsonConvert.DeserializeObject <DeserializedDocument>(json);
            }
            catch (JsonReaderException ex)
            {
                validationErrors.Add(new ValidationError(nameof(json), ResourceString.ValidationJsonParsingError, ex.LineNumber, ex.LinePosition, ex.Message));
            }
            catch (JsonSerializationException ex)
            {
                validationErrors.Add(new ValidationError(nameof(json), ResourceString.ValidationJsonParsingError, 0, 0, ex.Message));
            }
            if (deserializedDocument == null)
            {
                validationErrors.Add(new ValidationError(nameof(json), ResourceString.ValidationCouldNotDeserializeJson));
            }
            if (validationErrors.Count > 0)
            {
                return(null);
            }
            InternalValidateDocument(deserializedDocument, validationErrors);
            return(deserializedDocument);
        }
Exemple #2
0
        internal GrouperDocument(DeserializedDocument deserializedDocument)
        {
            Id = Guid.Parse(deserializedDocument.Id);
            ProcessingInterval = deserializedDocument.Interval;
            GroupName          = deserializedDocument.GroupName;
            GroupId            = Guid.Parse(deserializedDocument.GroupId);
            Store = (GroupStores)Enum.Parse(typeof(GroupStores), deserializedDocument.Store, true);
            Owner = (GroupOwnerActions)Enum.Parse(typeof(GroupOwnerActions), deserializedDocument.Owner, true);
            GroupMemberTypes memberType = Store == GroupStores.OnPremAd ? GroupMemberTypes.OnPremAd : GroupMemberTypes.AzureAd;

            _members = deserializedDocument.Members.Select(m => new GrouperDocumentMember(m, memberType)).ToList();
        }
Exemple #3
0
 public void Validate(DeserializedDocument deserializedDocument, DeserializedMember deserializedMember, List <ValidationError> validationErrors)
 {
     foreach (DeserializedRule rule in deserializedMember.Rules)
     {
         if (rule.Name.IEquals("Group"))
         {
             if (rule.Value.IEquals(deserializedDocument.GroupId))
             {
                 validationErrors.Add(new ValidationError(nameof(rule.Value), ResourceString.ValidationErrorSourceGroupSameAsTarget));
             }
         }
     }
 }
Exemple #4
0
 public void Validate(DeserializedDocument deserializedDocument, DeserializedMember deserializedMember, List <ValidationError> validationErrors)
 {
     foreach (DeserializedRule rule in deserializedMember.Rules)
     {
         if (rule.Name.IEquals("Upn"))
         {
             if (!IsUpnValid(rule.Value))
             {
                 validationErrors.Add(new ValidationError(nameof(rule.Value), ResourceString.ValidationErrorInvalidUpn, rule.Value));
             }
         }
     }
 }
Exemple #5
0
 private static void InternalValidateDocument(DeserializedDocument deserializedDocument, List <ValidationError> validationErrors)
 {
     if (string.IsNullOrEmpty(deserializedDocument.Id) || !guidRegex.IsMatch(deserializedDocument.Id))
     {
         validationErrors.Add(new ValidationError(nameof(deserializedDocument.Id), ResourceString.ValidationErrorDocumentIdNotValid, deserializedDocument.Id));
     }
     if (deserializedDocument.Interval < 0)
     {
         validationErrors.Add(new ValidationError(nameof(deserializedDocument.Interval), ResourceString.ValidationErrorIllegalInterval));
     }
     if (string.IsNullOrEmpty(deserializedDocument.GroupName))
     {
         validationErrors.Add(new ValidationError(nameof(deserializedDocument.GroupName), ResourceString.ValidationErrorGroupNameIsNullOrEmpty));
     }
     if (string.IsNullOrEmpty(deserializedDocument.GroupId) || !guidRegex.IsMatch(deserializedDocument.GroupId))
     {
         validationErrors.Add(new ValidationError(nameof(deserializedDocument.GroupId), ResourceString.ValidationErrorGroupIdNotValid, deserializedDocument.GroupId));
     }
     if (!Enum.TryParse(deserializedDocument.Owner, true, out GroupOwnerActions _))
     {
         validationErrors.Add(new ValidationError(nameof(deserializedDocument.Owner), ResourceString.ValidationErrorInvalidOwnerAction, deserializedDocument.Owner));
     }
     if (deserializedDocument.Store == null || !Enum.TryParse(deserializedDocument.Store, true, out GroupStores store))
     {
         validationErrors.Add(new ValidationError(nameof(deserializedDocument.Store), ResourceString.ValidationErrorInvalidGroupStore, deserializedDocument.Store));
         return;
     }
     if (!storeLocations.TryGetValue(store, out ResourceLocation groupLocation))
     {
         validationErrors.Add(new ValidationError(nameof(deserializedDocument.Store), ResourceString.ValidationErrorStoreNotRecognized, store.ToString()));
         return;
     }
     InternalValidateMembers(deserializedDocument.Members, deserializedDocument.Store, groupLocation, validationErrors);
     if (validationErrors.Count > 0)
     {
         return;
     }
     foreach (DeserializedMember deserializedMember in deserializedDocument.Members)
     {
         if (memberSources.TryGetValue(deserializedMember.Source, out MemberSourceInfo memberSourceInfo))
         {
             if (memberSourceInfo.CustomValidators != null)
             {
                 foreach (ICustomValidator validator in memberSourceInfo.CustomValidators)
                 {
                     validator.Validate(deserializedDocument, deserializedMember, validationErrors);
                 }
             }
         }
     }
 }
Exemple #6
0
        public static GrouperDocument FromJson(string json, List <ValidationError> validationErrors)
        {
            if (validationErrors == null)
            {
                throw new ArgumentNullException(nameof(validationErrors));
            }
            DeserializedDocument deserializedDocument = DocumentValidator.DeserializeAndValidate(json, validationErrors);

            if (validationErrors.Count > 0)
            {
                return(null);
            }
            return(new GrouperDocument(deserializedDocument));
        }