我们何时在给定OrganizationalItemData属性的情况下明确设置CME权限?

时间:2012-11-07 20:48:21

标签: tridion

我正在使用核心服务为OrganizationalItemData对象创建权限设置列表,并且正在寻找帮助确认何时在CME中明确设置权限。

问题

鉴于组织项目并了解其共享,本地化和权限继承设置,我们何时需要为其明确设置权限(在Properties> Security下的CME中?)

API详细信息

鉴于OrganizationalItemData orgItem我可以查看以下内容(文档中的详细信息)。

  • IsShared
    获取或设置是否在当前上下文发布中共享该项。

  • IsLocalized
    获取或设置项目是否已在当前上下文发布中本地化。

  • IsPermissionsInheritanceRoot
    如果为项目本身指定了权限,则为true;否则为false,如果item继承父项的权限。

示例代码

我可以使用Core Service检查给定CMS中的权限设置。例如:

var CreatedHere = !orgItem.BluePrintInfo.IsShared.GetValueOrDefault();
var IsLocalized = orgItem.BluePrintInfo.IsLocalized.GetValueOrDefault();
var PermissionsFromParent = !orgItem.IsPermissionsInheritanceRoot.GetValueOrDefault();

我想输出给定组织项的权限,还有CMS管理员实际需要在其出版物中设置属性的说明。例如,我可以使用针对CMS测试的脚本来显示CMS生产可能需要的内容。

方案

这是事实(我认为)。

Shared  Local(ized)  PermissionsRoot  Set here?
No      No           No               No, set in parent in this Publication.
No      No           Yes              Yes, set in this "local" item.
No      Yes          No               Not possible. Can't localize non-shared item. 
No      Yes          Yes              Not possible. Can't localize non-shared item. 
Yes     No           No               No, set in parent item in higher Publication. 
Yes     No           Yes              No, set in this item but in a higher publication. 
Yes     Yes          No               No, set in parent item in this Publication. 
Yes     Yes          Yes              Yes

我对这些选项的理解可能有误,但到目前为止我们似乎只需要为两种情况明确设置权限:

  1. 对于权限为root(Inherit Security Settings from Parent未选中)的非共享(本地)项目
  2. 对于作为权限root的共享本地化项目。
  3. 我是否有正确的场景和/或我在上述2 ^ 3场景中遗漏了什么?

1 个答案:

答案 0 :(得分:5)

我认为你对Alvin有正确的看法。

首先,您唯一拥有权限的地方是继承根。 其次,适用正常的蓝图规则。

我以前用带锯齿形箭头的图表绘制,显示搜索权限:

(想象一下你是一个试图找出东西的文件夹)

  1. 我是本地继承根吗?不 - 继续寻找
  2. 好的 - 所以BluePrinting适用,所以也许我是一个共享文件夹,我通过bluePrinting成为继承根?不?好的 - 继续看,
  3. 那么树上方的那个文件夹怎么样?那里有任何权限吗?它是本地继承根吗?它是BluePrinting的继承根吗?不 - 继续寻找
  4. 等一直到顶部
  5. 所以看着你的桌子:任何地方"权限root"是错误的,不能拥有它自己的权限,所以正确地说,你对这些权限都没有或不可能。 对于 继承根的组织项目,下一个问题是它们是本地/本地化还是共享。你似乎再次证明了这一点。

    我提到的只有一个关注点,也就是那个可能"本地化"是第二列的错误名称。我说"本地"代替。如果项目未共享,则该项目是本地项目,这可能是因为它已从其他出版物中的共享项目进行了本地化,或者因为它已在本出版物中本地创建。我认为您意识到您采用的任何脚本或编程方法都需要适应这两种情况。