相关内容:
我不理解这是什么意思。
SP.ListItem.getUserEffectivePermissions
方法 返回:
指定一组权限的枚举值的按位组合。
该示例演示了如何解析 SP.BasePermissions
值并确定用户是否被授予阅读项目的权限:
BasePermissions permissions = new BasePermissions(138612833L,176L);
String[] roles = permissions.parse();
if(Arrays.asList(roles).contains("ViewListItems"))
System.out.println("User has permissions to read items");
PermissionKind
和 BasePermissions
类在某种程度上相当于 SharePoint Client SDK 中的 BasePermissions
和 PermissionKind
类:
import java.util.ArrayList;
import java.util.List;
public class BasePermissions {
private final long low;
private final long high;
public BasePermissions(long low, long high) {
this.low = low;
this.high = high;
}
public String[] parse() {
List<String> result = new ArrayList<>();
for (PermissionKind value : PermissionKind.values()) {
if(has(value)){
result.add(value.toString());
}
}
return result.toArray(new String[0]);
}
public Boolean has(PermissionKind perm)
{
switch (perm)
{
case EmptyMask:
return true;
case FullMask:
if ((this.high & 32767) == 32767)
return this.low == 65535;
return false;
default:
long n = perm.getValue() - 1;
long val = 1;
if (n >= 0 && n < 32)
return 0 != (this.low & (val << n));
if (n >= 32 && n < 64)
return 0 != (this.high & (val << n - 32));
return false;
}
}
}
and
public enum PermissionKind {
EmptyMask(0),
ViewListItems(1),
AddListItems(2),
EditListItems(3),
DeleteListItems(4),
ApproveItems(5),
OpenItems(6),
ViewVersions(7),
DeleteVersions(8),
CancelCheckout(9),
ManagePersonalViews(10),
ManageLists(12),
ViewFormPages(13),
AnonymousSearchAccessList(14),
Open(17),
ViewPages(18),
AddAndCustomizePages(19),
ApplyThemeAndBorder(20),
ApplyStyleSheets(21),
ViewUsageData(22),
CreateSSCSite(23),
ManageSubwebs(24),
CreateGroups(25),
ManagePermissions(26),
BrowseDirectories(27),
BrowseUserInfo(28),
AddDelPrivateWebParts(29),
UpdatePersonalWebParts(30),
ManageWeb(31),
AnonymousSearchAccessWebLists(32),
UseClientIntegration(37),
UseRemoteAPIs(38),
ManageAlerts(39),
CreateAlerts(40),
EditMyUserInfo(41),
EnumeratePermissions(63),
FullMask(65);
PermissionKind(long value) {
this.value = value;
}
public long getValue() { return value; }
private final long value;
}