Запретить группе пользователей доступ к общему документу с помощью csom - PullRequest
0 голосов
/ 06 ноября 2019

Я хочу запретить группе пользователей в sharepoint (например, член) иметь доступ к «Общим документам» с помощью csom. Однако, это не работает, когда я извиняюсь за мой код (Учетная запись, которая находится в группе, о которой я упоминал выше, все еще имеет доступ на моем сайте. Вот мой код:

ClientContext context = new ClientContext("https://example.com/sites/Litware");
            SecureString password = new SecureString();
            foreach (char c in "abcd".ToCharArray()) password.AppendChar(c);
            context.Credentials = new SharePointOnlineCredentials("example@example.onmicrosoft.com", password);
            var web = context.Web;
            context.Load(web);
            context.ExecuteQuery();
            var memGroup = web.SiteGroups.GetByName("Member");
            context.Load(memGroup);            
            var users = memGroup.Users;
            context.Load(users);
            context.ExecuteQuery();
            foreach (var user in users)
            {
                Principal principal = web.EnsureUser(user.LoginName);
                var folder = web.GetFolderByServerRelativeUrl("/Shared Documents");
                var roleDef = context.Site.RootWeb.RoleDefinitions.GetByType(RoleType.None);                               
                var roleBindings = new RoleDefinitionBindingCollection(context) { roleDef };
                folder.ListItemAllFields.BreakRoleInheritance(true, false);
                folder.ListItemAllFields.RoleAssignments.Add(principal, roleBindings);
            }

Так, где я взял этоне так и как это решить?

1 Ответ

0 голосов
/ 06 ноября 2019

Пожалуйста, используйте следующий код:

Folder folder = ctx.Web.GetFolderByServerRelativeUrl("/sites/dev/shared%20documents");
ctx.Load(folder);
ctx.Load(folder.ListItemAllFields);
ctx.ExecuteQuery();
Group groupToRemove = ctx.Web.SiteGroups.GetByName("dev Members");
ctx.Load(groupToRemove);
ctx.ExecuteQuery();
folder.ListItemAllFields.BreakRoleInheritance(true, false);
folder.ListItemAllFields.RoleAssignments.GetByPrincipal(groupToRemove).DeleteObject();
ctx.ExecuteQuery();

Ссылка:

Удаление определенных пользовательских разрешений из одной папки в Sharepoint online с powershell

...