powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / SharePoint [игнор отключен] [закрыт для гостей] / убрать уникальный доступ к файлу и вернуть наследование прав
2 сообщений из 2, страница 1 из 1
убрать уникальный доступ к файлу и вернуть наследование прав
    #40056854
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть такой код, вроде работает, но что-то не нравится

вопросы:

- чем сбрасывать в false свойство HasUniqueRoleAssignments - ResetRoleInheritance или BreakRoleInheritance?
- надо ли удалять доступа конкретных пользователей?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
                        // удаляем доступ всем
                        result.result_text = "";
                        result.HasUniqueRoleAssignments = item.HasUniqueRoleAssignments;

                        RoleAssignmentCollection rac = item.RoleAssignments;
                        clientContext.Load(
                                rac,
                                roleAssigned => roleAssigned.Include(
                                        ra => ra.Member,
                                        ra => ra.Member.Title,
                                        ra => ra.Member.LoginName,
                                        ra => ra.Member.PrincipalType
                                        )
                                );
                        clientContext.ExecuteQuery();

                        Principal Member;
                        foreach (RoleAssignment ra in rac)
                        {
                            Member = ra.Member;

                            if (Member.PrincipalType == PrincipalType.User)
                            {
                                existsUserForRemove = true;
                                ra.RoleDefinitionBindings.RemoveAll();
                                ra.Update();

                                result.result_text += $"{Member.LoginName} access start removed. ";
                            }
                        }
                        try
                        {
                            if (existsUserForRemove)
                            {
                                //item.BreakRoleInheritance(true, true);    // вернуть наследование
                                // выполним на сервере запрос удаления юзеров
                                clientContext.ExecuteQuery();
                                result.result_text += "all personal accesses removed;; ";
                            }
                            else
                            {
                                result.result_text += "not found personal access for removed;; ";
                            }

                            if (item.HasUniqueRoleAssignments)
                            {

                                result.result_text += $"HasUniqueRoleAssignments={item.HasUniqueRoleAssignments};; ";
                                item.ResetRoleInheritance();    // вернуть наследование
                                clientContext.ExecuteQuery();
                                result.result_text += "ResetRoleInheritance executed;; ";
                                clientContext.Load(item, l => l.HasUniqueRoleAssignments);  // прочитать признак заново
                                clientContext.ExecuteQuery();
                                result.HasUniqueRoleAssignments = item.HasUniqueRoleAssignments;
                                result.result_text += $"HasUniqueRoleAssignments={item.HasUniqueRoleAssignments};; ";

                            }
                            else
                            {
                                result.result_text += "not found access for removed";
                            }

                        }
                        catch (Exception err)
                        {
                            result.result_text = "all accesses removed";
                            result.error_text = 
                                $"SetFileAccess: Ошибка при удалении всех доступов к документу:  {err.Message} {err.InnerException} {err.ToString()}";
                            return false;
                        }
                        return true;
...
Рейтинг: 0 / 0
убрать уникальный доступ к файлу и вернуть наследование прав
    #40058217
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потестили
вроде получается, что хватает
Код: c#
1.
2.
  item.ResetRoleInheritance();    // вернуть наследование
  clientContext.ExecuteQuery();

и чистить всех отдельно взятых юзеров не надо
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / SharePoint [игнор отключен] [закрыт для гостей] / убрать уникальный доступ к файлу и вернуть наследование прав
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (8): Анонимы (6), Bing Bot, Yandex Bot
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]