我想弄清楚用户是否有权访问共享点项目。
我可以调用 url 来检索驱动器项目上的 effectiveBasePermissions,但我不太明白响应。
回复:
{'d': {'EffectiveBasePermissions': {'High': '688',
'Low': '1006836463',
'__metadata': {'type': 'SP.BasePermissions'}}}}
我如何知道这些 id 的含义以及如何确定(当前登录的)用户是否可以访问该文件?这就是我需要知道的全部,某种布尔值就可以了。
其中一个答案中的 PermissionKind 列表看起来是硬编码的,这些数字与我在上面的回复中得到的数字不相关。
我也称这个角色定义端点
https://mydomain.sharepoint.com/sites/mySite/_api/web/roledefinitions
和回应:
{'d': {'results': [{'BasePermissions': {'High': '2147483647',
'Low': '4294967295',
'__metadata': {'type': 'SP.BasePermissions'}},
'Description': 'Has full control.',
'Hidden': False,
'Id': 1073741829,
'Name': 'Full Control',
'Order': 1,
'RoleTypeKind': 5,
'__metadata': {'id': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741829)',
'type': 'SP.RoleDefinition',
'uri': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741829)'}},
{'BasePermissions': {'High': '432',
'Low': '1012866047',
'__metadata': {'type': 'SP.BasePermissions'}},
'Description': 'Can view, add, update, delete, approve, '
'and customize.',
'Hidden': False,
'Id': 1073741828,
'Name': 'Design',
'Order': 32,
'RoleTypeKind': 4,
'__metadata': {'id': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741828)',
'type': 'SP.RoleDefinition',
'uri': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741828)'}},
{'BasePermissions': {'High': '432',
'Low': '1011030767',
'__metadata': {'type': 'SP.BasePermissions'}},
'Description': 'Can add, edit and delete lists; can view, '
'add, update and delete list items and '
'documents.',
'Hidden': False,
'Id': 1073741830,
'Name': 'Edit',
'Order': 48,
'RoleTypeKind': 6,
'__metadata': {'id': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741830)',
'type': 'SP.RoleDefinition',
'uri': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741830)'}},
{'BasePermissions': {'High': '432',
'Low': '1011028719',
'__metadata': {'type': 'SP.BasePermissions'}},
'Description': 'Can view, add, update, and delete list '
'items and documents.',
'Hidden': False,
'Id': 1073741827,
'Name': 'Contribute',
'Order': 64,
'RoleTypeKind': 3,
'__metadata': {'id': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741827)',
'type': 'SP.RoleDefinition',
'uri': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741827)'}},
{'BasePermissions': {'High': '176',
'Low': '138612833',
'__metadata': {'type': 'SP.BasePermissions'}},
'Description': 'Can view pages and list items and download '
'documents.',
'Hidden': False,
'Id': 1073741826,
'Name': 'Read',
'Order': 128,
'RoleTypeKind': 2,
'__metadata': {'id': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741826)',
'type': 'SP.RoleDefinition',
'uri': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741826)'}},
{'BasePermissions': {'High': '65584',
'Low': '134418433',
'__metadata': {'type': 'SP.BasePermissions'}},
'Description': 'Can view pages, list items, and documents. '
'Documents can be viewed in the browser but '
'not downloaded.',
'Hidden': True,
'Id': 1073741832,
'Name': 'Restricted View',
'Order': 144,
'RoleTypeKind': 8,
'__metadata': {'id': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741832)',
'type': 'SP.RoleDefinition',
'uri': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741832)'}},
{'BasePermissions': {'High': '48',
'Low': '134287360',
'__metadata': {'type': 'SP.BasePermissions'}},
'Description': 'Can view specific lists, document '
'libraries, list items, folders, or '
'documents when given permissions.',
'Hidden': True,
'Id': 1073741825,
'Name': 'Limited Access',
'Order': 160,
'RoleTypeKind': 1,
'__metadata': {'id': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741825)',
'type': 'SP.RoleDefinition',
'uri': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741825)'}},
{'BasePermissions': {'High': '560',
'Low': '134221824',
'__metadata': {'type': 'SP.BasePermissions'}},
'Description': 'Can only view the web when given '
'permissions.',
'Hidden': True,
'Id': 1073741833,
'Name': 'Web-Only Limited Access',
'Order': 176,
'RoleTypeKind': 9,
'__metadata': {'id': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741833)',
'type': 'SP.RoleDefinition',
'uri': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741833)'}},
{'BasePermissions': {'High': '48',
'Low': '134418465',
'__metadata': {'type': 'SP.BasePermissions'}},
'Description': None,
'Hidden': True,
'Id': 1073741924,
'Name': 'System.LimitedView',
'Order': 2147483647,
'RoleTypeKind': 255,
'__metadata': {'id': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741924)',
'type': 'SP.RoleDefinition',
'uri': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741924)'}},
{'BasePermissions': {'High': '48',
'Low': '134418471',
'__metadata': {'type': 'SP.BasePermissions'}},
'Description': None,
'Hidden': True,
'Id': 1073741925,
'Name': 'System.LimitedEdit',
'Order': 2147483647,
'RoleTypeKind': 255,
'__metadata': {'id': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741925)',
'type': 'SP.RoleDefinition',
'uri': 'https://mydomain.sharepoint.com/sites/mySite/_api/Web/RoleDefinitions(1073741925)'}}]}}
再说一遍,这些数字都与我在上述回复中针对某一特定项目得到的数字无关,所以我怎么知道高 688 意味着什么?
虽然您的问题“权限如何表示”已经被回答了
我想你的问题更多的是如何检索此信息。
正如链接答案中的人指出的那样,数字不是 ID,而是位域。位域只是一种以存储友好的方式存储布尔值(例如权限)的更智能方式。您不应将这些“数字”视为整数,而应将其视为二进制表示形式。因此,为了显示数字的相等性,您可以查看某个位索引处的位是否已设置为 1 或零。
链接答案中的表格为您提供了某些权限的索引。
例如为了获得许可
EditListItems
,您必须检查第三位。
Low 和 High 用于存储 uint32 数字中的位字段,但权限超过 32 个,因此它们存储在两个不同的位字段中。
获得许可,例如对于
EditListItems
- 输入您只需 and
以及您要检查的权限的位掩码。
editBitmask = 0b100
access = 0b110
canEdit = bool(editBitmask & access)
如果您想一次检查多个权限,您可以
or
将它们全部放入一个示例位掩码中:
editBitmask = 0b100
readBitmask = 0b1
bitmask = editBitmask | readBitmask
access = 0b110
canAccess = bool(bitmask & access)
从您的问题来看,不清楚您要检查哪些权限,但我想这只是您是否可以查看列表条目。所以函数是:
def canViewList(inputLow: str):
lowBitfield = int(inputLow)
return bool(lowBitfield & 0b1)
print(canViewList("1006836463"))
这是查看 sharepoint-stackexchange 上的答案并对位字段进行一些研究所提供的所有信息。
堆栈溢出不是一个应该取代最低限度研究的地方。