コード例 #1
0
        public void AddPermission(SPBindingCollection bindingCol, bool forceBreak, bool permissionsApplyRecursively)
        {
            if (HasUniquePermissions.HasValue && !HasUniquePermissions.Value)
            {
                if (!forceBreak)
                {
                    throw new NoForceBreakException(this.Id);
                }
                else
                {
                    SecObj.BreakRoleInheritance(true, true);
                }
            }
            else if (!HasUniquePermissions.HasValue)
            {
                throw new InvalidOperationException("The permissions for object id \"" + Convert.ToString(this.Id) + "\" cannot be modified!");
            }

            var list = new List <RoleAssignment>(bindingCol.Count);

            for (int i = 0; i < bindingCol.Count; i++)
            {
                var binding = bindingCol[i];
                var bCol    = new RoleDefinitionBindingCollection(CTX.SP1)
                {
                    binding.Definition
                };
                list.Add(SecObj.RoleAssignments.Add(
                             binding.Principal, bCol));

                foreach (var ass in list)
                {
                    CTX.Lae(ass, false);
                }
                Update();
                CTX.Lae();
            }
            if (Permissions != null)
            {
                for (int ra = 0; ra < list.Count; ra++)
                {
                    var r = list[ra];
                    CTX.Lae(r, true, ras => ras.Member.Id, ras => ras.Member.Title);
                }
                Permissions.AddRange(this, list);
            }
            else
            {
                this.GetPermissions();
            }

            //if ()
        }
コード例 #2
0
        public bool ResetInheritance()
        {
            bool result = true;

            if (!HasUniquePermissions.HasValue || (HasUniquePermissions.HasValue && !HasUniquePermissions.Value))
            {
                throw new InvalidResetInheritanceException(this.Id);
            }

            SecObj.ResetRoleInheritance();
            try
            {
                CTX.Lae();
            }
            catch
            {
                result = false;
            }
            return(result);
        }
コード例 #3
0
        public bool BreakInheritance(bool copyRoleAssignments, bool clearSubscopes)
        {
            bool result = true;

            if (HasUniquePermissions.HasValue && HasUniquePermissions.Value)
            {
                throw new InvalidBreakInheritanceException(this.Id);
            }

            SecObj.BreakRoleInheritance(copyRoleAssignments, clearSubscopes);
            try
            {
                CTX.Lae();
            }
            catch
            {
                result = false;
            }
            return(result);
        }
コード例 #4
0
        //public SPPermissionCollection GetUserPermissions(string userId)
        //{
        //    if (this.CanSetPermissions)
        //    {
        //        var user = new SPUser(userId, true);
        //        if (this.Permissions == null)
        //            this.GetPermissions();

        //        if (this.Permissions)
        //    }
        //    else
        //        return null;
        //}

        #endregion

        #region GET PERMISSIONS

        public SPPermissionCollection GetPermissions()
        {
            if (!SecObj.IsPropertyReady(x => x.RoleAssignments))
            {
                CTX.Lae(SecObj, true, s => s.RoleAssignments);
            }

            Type secType     = SecObj.GetType();
            var  genMeth     = ExpressionMethod.MakeGenericMethod(secType);
            var  expressions = genMeth.Invoke(this, new object[1] {
                new string[2] {
                    NameProperty, IdProperty
                }
            });

            var specLae = typeof(CTX).GetMethod("SpecialLae", BindingFlags.NonPublic | BindingFlags.Static).MakeGenericMethod(SecObj.GetType());

            specLae.Invoke(null, new object[3] {
                SecObj, true, expressions
            });

            Permissions = SPPermissionCollection.ResolvePermissions(this);
            return(Permissions);
        }