Exemplo n.º 1
0
/// <summary>
/// Deserialize from a user object
/// </summary>
/// <param name="uo"></param>
/// <returns></returns>

        public static AccessControlList Deserialize(UserObject uo)
        {
            AccessControlList acl;

            if (uo == null || uo.AccessLevel == UserObjectAccess.None)
            {
                return(new AccessControlList());
            }

            else if (uo.AccessLevel == UserObjectAccess.Private ||
                     uo.AccessLevel == UserObjectAccess.Public)
            {
                acl = new AccessControlList();
                acl.AddReadWriteUserItem(uo.Owner);

                if (uo.AccessLevel == UserObjectAccess.Public)
                {
                    acl.AddPublicReadItem();
                }

                return(acl);
            }

            else if (uo.AccessLevel == UserObjectAccess.ACL)
            {
                return(Deserialize(uo.ACL));
            }

            else
            {
                throw new Exception("Unexpected AccessLevel: " + uo.AccessLevel);
            }
        }
Exemplo n.º 2
0
/// <summary>
/// Update permissions to reflect a change in ownership
/// </summary>
/// <param name="uo"></param>
/// <param name="userName"></param>

        public static void UpdateAclForNewOwner(
            UserObject uo,
            string oldOwner,
            string newOwner)
        {
            if (uo.AccessLevel != UserObjectAccess.ACL)
            {
                return;                                                     // only need to do for ACL
            }
            AccessControlList acl = AccessControlList.Deserialize(uo.ACL);

            acl.RemoveUserItem(oldOwner);
            acl.AddReadWriteUserItem(newOwner);
            uo.ACL = acl.Serialize();
        }