protected virtual void WriteRole(XmlTextWriter writer, AuthorizedRole ar) { using (ElementWriter role = new ElementWriter("role", writer)) { role.Write(ar.Role); } }
/// <summary>Copies this AuthorizedRole clearing id and enclosing item.</summary> /// <returns>A copy of this AuthorizedRole.</returns> public virtual AuthorizedRole Clone() { AuthorizedRole cloned = (AuthorizedRole)this.MemberwiseClone(); cloned.id = 0; cloned.enclosingItem = null; return(cloned); }
static void CloneAuthorizedRoles(ContentItem source, ContentItem destination) { if (source.AuthorizedRoles != null) { destination.authorizedRoles = new List <Security.AuthorizedRole>(); foreach (Security.AuthorizedRole role in source.AuthorizedRoles) { Security.AuthorizedRole clonedRole = role.Clone(); clonedRole.EnclosingItem = destination; destination.authorizedRoles.Add(clonedRole); } } }
public static void SetRoles(ContentItem item, Permission permission, params string[] roles) { foreach (Permission permissionLevel in SplitPermission(permission)) { if (permissionLevel == Permission.Read) { for (int i = item.AuthorizedRoles.Count - 1; i >= 0; i--) { AuthorizedRole role = item.AuthorizedRoles[i]; if (Array.IndexOf(roles, role.Role) < 0) { item.AuthorizedRoles.RemoveAt(i); } } foreach (string role in roles) { AuthorizedRole temp = new AuthorizedRole(item, role); if (!item.AuthorizedRoles.Contains(temp)) { item.AuthorizedRoles.Add(temp); } } AlterPermissions(item.AuthorizedRoles.Count > 0, item, permissionLevel); } else { string collectionName = AuthorizedRolesPrefix + permissionLevel; if (roles.Length == 0) { var dc = item.DetailCollections[collectionName]; if (dc != null) { dc.EnclosingItem = null; item.DetailCollections.Remove(collectionName); } } else { DetailCollection details = item.GetDetailCollection(collectionName, true); details.Replace(roles); } AlterPermissions(roles.Length > 0, item, permissionLevel); } } }
public static void SetRoles(ContentItem item, Permission permission, params string[] roles) { foreach (Permission permissionLevel in SplitPermission(permission)) { if(permissionLevel == Permission.Read) { for (int i = item.AuthorizedRoles.Count - 1; i >= 0; i--) { AuthorizedRole role = item.AuthorizedRoles[i]; if(Array.IndexOf(roles, role.Role) < 0) item.AuthorizedRoles.RemoveAt(i); } foreach(string role in roles) { AuthorizedRole temp = new AuthorizedRole(item, role); if(!item.AuthorizedRoles.Contains(temp)) item.AuthorizedRoles.Add(temp); } AlterPermissions(item.AuthorizedRoles.Count > 0, item, permissionLevel); } else { string collectionName = AuthorizedRolesPrefix + permissionLevel; if (roles.Length == 0) { var dc = item.DetailCollections[collectionName]; if (dc != null) { dc.EnclosingItem = null; item.DetailCollections.Remove(collectionName); } } else { DetailCollection details = item.GetDetailCollection(collectionName, true); details.Replace(roles); } AlterPermissions(roles.Length > 0, item, permissionLevel); } } }