/// <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(); } }
/// <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(); } }