Beispiel #1
0
        internal static void SetBits(SenseNet.Security.PermissionBitMask permissionMask)
        {
            ulong allowBits = permissionMask.AllowBits;
            ulong denyBits  = permissionMask.DenyBits;

            var perms  = PermissionType.PermissionTypes.ToArray();
            var values = new SenseNet.Security.PermissionValue[perms.Length];

            foreach (var perm in perms)
            {
                values[perm.Index] = GetValue(allowBits, denyBits, perm);
            }
            foreach (var perm in perms)
            {
                if (values[perm.Index] == SenseNet.Security.PermissionValue.Allowed)
                {
                    SetBits(ref allowBits, ref denyBits, perm, SenseNet.Security.PermissionValue.Allowed);
                }
            }
            foreach (var perm in perms)
            {
                if (values[perm.Index] == SenseNet.Security.PermissionValue.Denied)
                {
                    SetBits(ref allowBits, ref denyBits, perm, SenseNet.Security.PermissionValue.Denied);
                }
            }

            permissionMask.AllowBits = allowBits;
            permissionMask.DenyBits  = denyBits;
        }
Beispiel #2
0
        /// <summary>
        /// Sets the allowed and denied permissions by the passed bitmask.
        /// This method can not reset any allowed or denied.
        /// </summary>
        /// <param name="entityId">The requested entity.</param>
        /// <param name="identityId">The requested identity.</param>
        /// <param name="localOnly">Determines whether the edited entry is inheritable or not.</param>
        /// <param name="permissionMask">Contains one or more permissions to allow or deny.</param>
        /// <returns>A reference to this instance for calling more operations.</returns>
        public new SnAclEditor Set(int entityId, int identityId, bool localOnly, SenseNet.Security.PermissionBitMask permissionMask)
        {
            SetBits(permissionMask);

            base.Set(entityId, identityId, localOnly, permissionMask);
            return(this);
        }
Beispiel #3
0
        /// <summary>
        /// Resets the allowed and denied permissions by the passed bitmask.
        /// </summary>
        /// <param name="entityId">The requested entity.</param>
        /// <param name="identityId">The requested identity.</param>
        /// <param name="localOnly">Determines whether the edited entry is inheritable or not.</param>
        /// <param name="permissionMask">Contains one or more permissions to allow or deny.</param>
        /// <returns>A reference to this instance for calling more operations.</returns>
        public new SnAclEditor Reset(int entityId, int identityId, bool localOnly, SenseNet.Security.PermissionBitMask permissionMask)
        {
            var permissionsToReset = new List <SenseNet.Security.PermissionTypeBase>();
            var bits = permissionMask.AllowBits | permissionMask.DenyBits;

            for (var i = 0; i < PermissionType.PermissionCount; i++)
            {
                if ((bits & (1uL << i)) != 0)
                {
                    permissionsToReset.Add(PermissionType.GetByIndex(i));
                }
            }
            ClearPermission(entityId, identityId, localOnly, permissionsToReset.ToArray());
            return(this);
        }