protected virtual void WriteRole(XmlTextWriter writer, AuthorizedRole ar)
		{
			using (ElementWriter role = new ElementWriter("role", writer))
			{
				role.Write(ar.Role);
			}
		}
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
 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);
         }
     }
 }
Beispiel #4
0
        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);
				}
			}
		}