public static void DeletePermission(string deletedCollectionName)
        {
            TweezersObject rolesObj = TweezersSchemaFactory.Find(RolesSchemaName, true, true);

            rolesObj.Fields["permissions"].FieldProperties.ObjectReference.Fields.Remove(deletedCollectionName);

            SafeAddSchema(rolesObj);

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

            foreach (JObject role in roles.Items)
            {
                JObject permissions = JObject.FromObject(role["permissions"]);
                permissions.Remove(deletedCollectionName);
                role["permissions"] = permissions;
                rolesObj.Update(TweezersSchemaFactory.DatabaseProxy, role["_id"].ToString(), role);
            }
        }
        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);
            }
        }
 public static IEnumerable <TweezersObject> GetAll(bool includeInternal = false)
 {
     return(DatabaseProxy.List(ObjectMetadataCollectionName, FindOptions <JObject> .Default(0, 500)).Items
            .Select(jObj => jObj.ToStrongType <TweezersObject>())
            .Where(tweezersObj => includeInternal || !tweezersObj.Internal));
 }