#microsoft-graph-api #microsoft-graph-files
#microsoft-graph-api #microsoft-graph-files
Вопрос:
Как получить текущую роль разрешения пользователя для папки (или файла) с помощью MS Graph Api?
но массив ролей пуст для всех, кроме владельца…
Я хотел бы показать пользователю определенный значок, если он может читать или записывать в папку.
Спасибо
—Редактировать 1—
у пользователя не было прямого разрешения на доступ к папке, но он входит в группу безопасности, у которой есть роль чтения.
пользователь может читать (открывать) любую информацию из этой папки, мне просто нужно что-то знать, может ли он читать и записывать (или нет) в папке.
Когда я пытаюсь писать без разрешения good, я получаю ошибку 403, я хотел бы знать «до» этой ошибки, которую пользователь не смог записать в эту папку..
—Правка 2—
Я пробую все, что говорится в документе: https://learn.microsoft.com/en-us/graph/api/permission-get?view=graph-rest-1.0amp;tabs=http
GET /диски/{идентификатор диска}/ элементы/{идентификатор элемента}/разрешения/{пермский идентификатор} => Роли пустые
GET /groups/{group-id}/drive/items/{item-id}/permissions/{perm-id} => У групп безопасности не было никакого диска
GET /me/drive/items/{item-id}/permissions/{perm-id} => Элемент (папка) отсутствует на пользовательском диске
GET /sites/{site-id}/drive/items/{item-id}/permissions/{perm-id} => это не сайт sharepoint
GET /users/{user-id}/drive/items/{item-id}/permissions/{perm-id} => Роли пустые
Чего я не понимаю, так это того, что я могу читать, перечислять, добавлять и удалять файл (если у меня есть роль записи) без каких-либо проблем, но я не вижу список ролей..
— Правка 3 —
Если вы хотите воспроизвести pb, выполните это :
-
Создайте пользователя в Azure Active Directory (AAD), добавьте к нему лицензию Microsoft Office 365 (в моем случае business) с именем «User1»
-
Создайте в нем папку Onedrive для бизнеса с именем «Общий»
-
Создайте в AAD группу безопасности (пусть назовет ее «Читатели»)
-
Поделитесь предыдущей папкой с группой «Читатели» и сделайте ее доступной только для чтения (в моем случае я использую для этого онлайн-сайт onedrive)
-
Создайте в AAD другого пользователя (с лицензией или без нее) с именем «User2»
-
Добавьте его в группу «Читатели»
Теперь перейдите в Graph Explorer и введите этот URL-адрес в текстовое поле ввода :
https://graph.microsoft.com/v1.0/drives /[Идентификатор диска пользователя 1]/элементы/[Идентификатор элемента «Общей» папки]/Разрешения
вы должны получить этот результат :
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives('...')/items('...')/permissions",
"value": [
{
"id": "...",
"roles": [],
"grantedTo": {
"user": {
"displayName": "Readers"
}
}
},
{
"id": "...",
"roles": [
"owner"
],
"grantedTo": {
"user": {
"email": "user1@mydomain.com",
"id": "...",
"displayName": "User1"
}
}
}
]
}
Как вы можете видеть, первый массив ролей пуст, а массив ролей владельца — нет..
Комментарии:
1. Если массив ролей пуст, это означает, что другим пользователям, кроме владельца, не назначено разрешение. Пожалуйста, попробуйте добавить разрешение для пользователя / пользователей, а затем попытайтесь получить разрешение.
2. спасибо за ваш ответ, это правда, у «пользователя» не было никаких разрешений для учетной записи is, но он находится внутри группы безопасности, у которой есть разрешение на чтение в этой папке. вот почему у меня может быть другая информация (например, имя пользователя и группы, которые могут читать или записывать в эту папку), но единственное, чего не хватает, — это пустой массив «rorle»…
3. Вы пробовали с помощью идентификатора группы проверять наличие разрешений, я имею в виду получение разрешений для идентификатора группы?
4. Да, и у групп безопасности не было никакого диска, диск принадлежит другому пользователю, который имеет на него некоторые разрешения для групп безопасности. Показать мое редактирование 2
5. Не могли бы вы сообщить нам, какой сценарий вы используете, делегированные или прикладные разрешения, и используете ли вы какую-либо учетную запись MSA или учетную запись Work / school?