Tridion 如何获取和设置文件夹';通过核心服务的组和用户权限设置?

Tridion 如何获取和设置文件夹';通过核心服务的组和用户权限设置?,tridion,tridion-2011,Tridion,Tridion 2011,我可以通过以下方式获取表示给定文件夹的组和用户权限的字符串 代码 //假定核心服务客户端为“客户端” var folderData=client.Read(“tcm:5-26-2”,new ReadOptions())作为folderData; var accessControlEntryDataArray= folderData.AccessControlList.AccessControlEntries; Console.WriteLine(folderData.Title); foreac

我可以通过以下方式获取表示给定文件夹的组和用户权限的字符串

代码
//假定核心服务客户端为“客户端”
var folderData=client.Read(“tcm:5-26-2”,new ReadOptions())作为folderData;
var accessControlEntryDataArray=
folderData.AccessControlList.AccessControlEntries;
Console.WriteLine(folderData.Title);
foreach(accessControlEntryDataArray中的var accessControlEntryData)
{
WriteLine({0}有{1}),
accessControlEntryData.Trusteer.Title,
accessControlEntryData.AllowedPermissions.ToString());
}
输出 一些文件夹
每个人都有阅读
编辑器没有
任何

主编没有任何
出版物管理器没有 交互管理器没有 T2011-CB-R2\areyes拥有全部
[scope]编辑器020创建具有读取、写入功能 T2011-CB-R2\local1具有读取、写入和删除功能 [权限]作者-内容有

似乎“AllowedPermissions”的四个可能值是:

  • None
  • 读取
  • 读、写
  • 读、写、删除
  • All
这对于我创建文件夹权限报告的用例非常有用。我可以
.Replace()
将它们替换为熟悉的符号(例如
rw--
rwdl

但是操作这些
字符串
值也是设置权限的正确方法吗?我想象我想要对象,或者可能是枚举。有人能给我指出正确的方向吗


我还注意到我将一些但不是所有不适用的组设置为
None
。我在这里并不特别需要它们,但我很好奇是什么决定了它们是否会被返回——我的代码中是否遗漏了什么?

权限和
权限实际上是枚举。您可以使用下面的方法进行设置。如果要设置多个权限,应执行类似“
rights.Read | rights.Write
”的操作

请记住,此方法将返回您必须在之后保存\更新\创建的对象

public static organizationemdata SetPermissionsOnOrganizationalItem(
OrganizationItemData OrganizationItem,
受托人数据受托人,
权限允许的权限,
权限deniedPermissions=权限。无)
{
if(organizationalItem.AccessControlList==null)
{
organizationalItem.AccessControlList
=新的AccessControlListData
{AccessControlEntries=new AccessControlEntryData[0]};
}
var entries=organizationalItem.AccessControlList
.AccessControlEntries.ToList();
//首先检查此受信者是否已具有某些权限
var entry=entries.SingleOrDefault(
ace=>ace.Trusteer.IdRef==Trusteer.Id);
if(条目!=null)
{
//删除此条目
条目。删除(条目);
}
条目。添加(新的AccessControlEntryData
{
AllowedPermissions=AllowedPermissions,
DeniedPermissions=DeniedPermissions,
受信者=新链接信任数据{IdRef=受信者.Id}
});
organizationalItem.AccessControlList.AccessControlEntries
=entries.ToArray();
返回组织;
}

权限
权限
确实是枚举。您可以使用下面的方法进行设置。如果要设置多个权限,应执行类似“
rights.Read | rights.Write
”的操作

请记住,此方法将返回您必须在之后保存\更新\创建的对象

public static organizationemdata SetPermissionsOnOrganizationalItem(
OrganizationItemData OrganizationItem,
受托人数据受托人,
权限允许的权限,
权限deniedPermissions=权限。无)
{
if(organizationalItem.AccessControlList==null)
{
organizationalItem.AccessControlList
=新的AccessControlListData
{AccessControlEntries=new AccessControlEntryData[0]};
}
var entries=organizationalItem.AccessControlList
.AccessControlEntries.ToList();
//首先检查此受信者是否已具有某些权限
var entry=entries.SingleOrDefault(
ace=>ace.Trusteer.IdRef==Trusteer.Id);
if(条目!=null)
{
//删除此条目
条目。删除(条目);
}
条目。添加(新的AccessControlEntryData
{
AllowedPermissions=AllowedPermissions,
DeniedPermissions=DeniedPermissions,
受信者=新链接信任数据{IdRef=受信者.Id}
});
organizationalItem.AccessControlList.AccessControlEntries
=entries.ToArray();
返回组织;
}

+1并接受,比我拥有的要干净得多。也谢谢你的有用的方法。+1和接受,比我的干净多了。谢谢你的有用的方法。