我可以使用以下内容获取表示给定文件夹的组和用户权限的字符串。
// assumes Core Service client "client"
var folderData = client.Read("tcm:5-26-2", new ReadOptions()) as FolderData;
var accessControlEntryDataArray =
folderData.AccessControlList.AccessControlEntries;
Console.WriteLine(folderData.Title);
foreach (var accessControlEntryData in accessControlEntryDataArray)
{
Console.WriteLine("{0} has {1}",
accessControlEntryData.Trustee.Title,
accessControlEntryData.AllowedPermissions.ToString());
}
一些文件夹
每个人都阅读
编辑器无
主编有无
出版经理有无
交互管理器具有无
T2011-CB-R2 \ areyes具有全部
[范围]编辑器020创建有读,写
T2011-CB-R2 \ local1有读,写,删除
[rights]作者 - 内容无
似乎'AllowedPermissions的四个可能值是:
None
Read
Read, Write
Read, Write, Delete
All
这适用于我的用例来创建文件夹权限报告。我可以.Replace()
使用熟悉的符号(例如rw--
或rwdl
)。
但是操纵这些string
值是否也是设置权限的正确方法?我想我会想要对象或者枚举词。有人能指出我正确的方向吗?
另外我注意到我得到了一些,但所有不适用的组都设置为None
。我在这里并不特别需要它们,但我很好奇是什么决定了它们是否会被返回 - 我的代码中是否遗漏了什么?
答案 0 :(得分:4)
Rights
和Permissions
是枚举。您可以使用以下方法进行设置。如果要设置多个权限,则应执行“Rights.Read | Rights.Write
”
请记住,此方法将返回您必须在
之后保存\ update \ create的对象 public static OrganizationalItemData SetPermissionsOnOrganizationalItem(
OrganizationalItemData organizationalItem,
TrusteeData trustee,
Permissions allowedPermissions,
Permissions deniedPermissions = Permissions.None)
{
if (organizationalItem.AccessControlList == null)
{
organizationalItem.AccessControlList
= new AccessControlListData
{AccessControlEntries = new AccessControlEntryData[0]};
}
var entries = organizationalItem.AccessControlList
.AccessControlEntries.ToList();
// First check if this trustee already has some permissions
var entry = entries.SingleOrDefault(
ace => ace.Trustee.IdRef == trustee.Id);
if (entry != null)
{
// Remove this entry
entries.Remove(entry);
}
entries.Add(new AccessControlEntryData
{
AllowedPermissions = allowedPermissions,
DeniedPermissions = deniedPermissions,
Trustee = new LinkToTrusteeData { IdRef = trustee.Id }
});
organizationalItem.AccessControlList.AccessControlEntries
= entries.ToArray();
return organizationalItem;
}