Esempio n. 1
0
        /// <summary>
        /// sets the user's or role's persmission for a document or documentCategory
        /// </summary>
        /// <param name="userOrRole"></param>
        /// <param name="category"></param>
        /// <param name="a"></param>
        public static void Set(string userOrRole, string category, Permission a)
        {
            string categoryWithPermission;
            if (!(category.StartsWith("+") || category.StartsWith("-"))) categoryWithPermission = ((a == Permission.Allowed) ? "+" : "-") + category;
            else {
                categoryWithPermission = category;
                category = category.Substring(1);
            }

            using (var db = new Silversite.Context()) {
                var rights = db.EditRights.Find(userOrRole);
                if (rights != null) {
                    var categoriesWithPermission = rights.DocumentCategories.SplitList<string>(s => s, ',', ';').ToList();
                    var categories = categoriesWithPermission.Select(c => (c.StartsWith("+") || c.StartsWith("-")) ? c.Substring(1) : c).ToList();
                    if (categories.Contains(category)) {
                        categoriesWithPermission[categories.IndexOf(category)] = categoryWithPermission;
                    } else {
                        categoriesWithPermission.Add(categoryWithPermission);
                    }
                    rights.DocumentCategories = categoriesWithPermission.StringList("; ");
                } else {
                    rights = new EditRights { UserOrRole= userOrRole, DocumentCategories = categoryWithPermission, IsUser = IsNameUser(db, userOrRole) };
                    db.EditRights.Add(rights);
                }
                db.SaveChanges();
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Sets the person's or the role's rights so they can edit the document or the document category.
 /// </summary>
 /// <param name="userOrRole">A user or a role.</param>
 /// <param name="documentCategories">A comma or semicolon separated list of documents or document categories.</param>
 public static void Set(string userOrRole, string documentCategories)
 {
     using (var db = new Silversite.Context()) {
         var rights = db.EditRights.Find(userOrRole);
         if (rights != null) {
             rights.DocumentCategories = documentCategories;
         } else {
             rights = new EditRights { UserOrRole= userOrRole, DocumentCategories = documentCategories, IsUser = IsNameUser(db, userOrRole) };
             db.EditRights.Add(rights);
         }
         db.SaveChanges();
     }
 }