2012-07-11 140 views
2

我想允许某些用户在特定时间访问某些内容, 使用Plone 3中的“动态角色”(http://collective-docs.readthedocs.org/en/latest/security/dynamic_roles.html)。如何在Plone 3中实现动态角色?

为此,我创建了一个带有示例代码复制粘贴的插件 - 除了现在getDummyRolesOnContext()总是返回我的角色。

但Plone永远不会调用或实例化我的DummyLocalRoleAdapter,显然我的用户永远不会分配角色。

这是我目前所知:

  • 我的能动作用是在rolemap.xml定义,并得到的时创建附加安装。
  • 我的插件正在导入 - 它的第一行中的例外防止Zope启动
  • DummyLocalRoleAdapter没有被调用 - 我已经用警告和例外标注了所有的DummyLocalRoleAdapter。
  • 适配器确实已注册。

我该如何继续调试 - 我失踪的魔法部分是什么?

谢谢!

回答

1

我的猜测是,你需要以某种方式激活borg.localprole PAS插件在acl_users:

https://github.com/plone/borg.localrole/blob/master/borg/localrole/utils.py

可能有过borg.localrole附加在过去的安装项,但现在似乎没有一个。我的猜测是,您需要在自己的插件中手动调用borg.localrole插件设置代码中的操作。

acl_users borg.localroles是否正确安装时:

acl_users when borg.localroles is active

+0

这正是我acl_users样子 - 虽然我给重新安装试一试。 – 2012-07-11 09:20:13

+0

尝试在borg.localroles.workspace中放入pdb断点并逐步完成以查看1)是否它获得了适配器2)如果它实际上读取它,那么为什么它会丢失https://github.com/plone/borg .localrole/blob/master/borg/localrole/workspace.py#L476 – 2012-07-11 13:33:04

+0

断点不会触发.-我在哪里可以将门户传递给setup_localrole_plugin()? – 2012-07-12 07:01:28