示例#1
0
        public IEnumerable <SPBinding> ResolvePermissions(IDictionary permissions)
        {
            var keys       = permissions.Keys.Cast <string>().ToArray();
            var bindingCol = new SPBindingCollection();

            for (int i = 0; i < keys.Length; i++)
            {
                var      key   = keys[i];
                var      prins = permissions[key];
                var      role  = Convert.ToString(key);
                string[] allPrins;
                if (!prins.GetType().IsArray)
                {
                    bindingCol.Add(new SPBinding(Convert.ToString(prins), role));
                }
                else
                {
                    allPrins = ((IEnumerable)prins).Cast <string>().ToArray();
                    for (int p = 0; p < allPrins.Length; p++)
                    {
                        var prin = allPrins[p];
                        bindingCol.Add(new SPBinding(prin, role));
                    }
                }
            }
            return(bindingCol);
        }
        public SPFolder AddSubFolder(string folderName, SPBindingCollection bindingCol, bool permissionsApplyRecursively)
        {
            var newFolder = (SPFolder)CTX.SP1.Web.Folders.Add(_fol.ServerRelativeUrl + "/" + folderName);

            newFolder.AddPermission(bindingCol, true, permissionsApplyRecursively);
            return(newFolder);
        }
        public SPFile UploadFile(string localFilePath, SPBindingCollection bindingCol, bool permissionsApplyRecursively, bool copyRoleAssignments = true,
                                 bool forceOverwrite = false, bool refreshFiles = true)
        {
            var uploadedFile = UploadFile(localFilePath, forceOverwrite, refreshFiles);

            uploadedFile.BreakInheritance(copyRoleAssignments, true);
            uploadedFile.AddPermission(bindingCol, true, permissionsApplyRecursively);
            return(uploadedFile);
        }
        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 ()
        }
        private void AddPermissionRecursively(List list, SPBindingCollection bindCol)
        {
            var query = new CamlQuery()
            {
                ViewXml = RECURSE_CAML_QUERY
            };
            var lic = (SPListItemCollection)list.GetItems(query);

            for (int i = 0; i < lic.Count; i++)
            {
                var li = lic[i];
                li.AddPermission(bindCol, true, false);
            }
        }
示例#6
0
        public void AddPermission(SPBindingCollection bindingCol, bool forceBreak = false)
        {
            // This is the main "AddPermission" method that the other methods call.
            if (HasUniquePermissions.HasValue && !HasUniquePermissions.Value)
            {
                if (!forceBreak)
                {
                    throw new NoForceBreakException(_web.Id);
                }
                else
                {
                    _web.BreakRoleInheritance(true, true);
                }
            }
            else if (!HasUniquePermissions.HasValue)
            {
                throw new InvalidOperationException("This object's permissions 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(_web.RoleAssignments.Add(
                             binding.Principal, bCol));
                foreach (var ass in list)
                {
                    CTX.Lae(ass, false);
                }
                _web.Update();
                CTX.Lae();
            }
            if (Permissions == null)
            {
                this.GetPermissions();
            }
            else
            {
                Permissions.AddRange(list);
            }
        }
        private void AddPermissionRecursively(SPBindingCollection bindCol)
        {
            var thisType = this.GetType().Name;

            switch (thisType)
            {
            case "SPFolder":
                AddPermissionRecursively((SPFolder)this, bindCol);
                break;

            case "SPFile":
                AddPermissionRecursively((SPFile)this, bindCol);
                break;

            default:
                throw new InvalidOperationException("What the f**k?");
            }
        }
 private void AddPermissionRecursively(SPFolder fol, SPBindingCollection bindCol) =>
 this.AddPermissionRecursively(((Folder)fol.ShowOriginal()).ListItemAllFields.ParentList, bindCol);
 private void AddPermissionRecursively(SPFile file, SPBindingCollection bindCol) =>
 this.AddPermissionRecursively(((File)file.ShowOriginal()).ListItemAllFields.ParentList, bindCol);