public static void AppendNewPermission(TweezersObject newObject)
        {
            TweezersObject rolesObj = TweezersSchemaFactory.Find(RolesSchemaName, true, true);

            TweezersFieldProperties fieldProperties =
                Schemas.PermissionTemplateFieldProperties.Deserialize <TweezersFieldProperties>();

            fieldProperties.Name        = newObject.CollectionName;
            fieldProperties.DisplayName = newObject.PluralName;

            rolesObj.Fields["permissions"].FieldProperties.ObjectReference.Fields.Add(newObject.CollectionName,
                                                                                      new TweezersField()
            {
                FieldProperties = fieldProperties
            });

            SafeAddSchema(rolesObj);

            DefaultPermission permission            = newObject.DefaultPermission;
            TweezersMultipleResults <JObject> roles = rolesObj.FindInDb(TweezersSchemaFactory.DatabaseProxy, FindOptions <JObject> .Default(0, int.MaxValue), true);

            foreach (JObject role in roles.Items)
            {
                role["permissions"][newObject.CollectionName] = permission.ToString();
                rolesObj.Update(TweezersSchemaFactory.DatabaseProxy, role["_id"].ToString(), role);
            }
        }
        private static TweezersObject CreateRolesSchema()
        {
            TweezersObject rolesInitialSchema = Schemas.RolesMetaJson.Deserialize <TweezersObject>();

            IEnumerable <TweezersObject> additionalInternalSchemas = new[] { rolesInitialSchema };

            if (SchemaManagement.CanChangeSchema)
            {
                additionalInternalSchemas = additionalInternalSchemas.Append(SchemaManagement.SchemaMetadata);
            }

            IEnumerable <TweezersObject> otherObjects =
                TweezersSchemaFactory.GetAll(true).Concat(additionalInternalSchemas);

            TweezersObject permissionsObjectReference =
                rolesInitialSchema.Fields["permissions"].FieldProperties.ObjectReference;

            foreach (TweezersObject @object in otherObjects)
            {
                TweezersFieldProperties fieldProperties =
                    Schemas.PermissionTemplateFieldProperties.Deserialize <TweezersFieldProperties>();

                fieldProperties.Name        = @object.CollectionName;
                fieldProperties.DisplayName = @object.PluralName;

                if (permissionsObjectReference.Fields.ContainsKey(@object.CollectionName))
                {
                    continue;
                }

                permissionsObjectReference.Fields.Add(@object.CollectionName,
                                                      new TweezersField()
                {
                    FieldProperties = fieldProperties
                });
            }

            return(rolesInitialSchema);
        }
 public static IValidator Create(TweezersFieldProperties arrayFieldProperties)
 {
     return(new ArrayValidator(arrayFieldProperties));
 }
 private ArrayValidator(TweezersFieldProperties fieldProperties)
 {
     this.FieldProperties = fieldProperties;
 }