如何根据modx用户的组成员身份显示/隐藏html元素

时间:2014-03-20 19:59:47

标签: modx-revolution

如何根据modx用户的组成员身份显示或隐藏html元素?

例如,我在给定页面上有一个编辑按钮和一个视图按钮,我希望有权访问编辑资源的用户能够看到该按钮,同时应该向所有其他用户隐藏该按钮。

更新 我最后写了一些东西来完成工作:

call snippet getButton

[[!getButton? &rid =`20` &btn=`ButtonEditTpl` &qs=`contract_id=[[!+contract_id]]`]]

摘录

<?php
    $btn = isset($btn) ? $btn : null;

    $qs = isset($qs) ? $qs : 'this=that';

    $rid = isset($rid) ? $rid : 0;

    $output = '';

    $resource = $modx->getObject('modResource',$rid);

    if($resource){

      $url = $modx->makeUrl($rid, '', $qs);

      $output = $modx->getChunk($btn,array('url' => $url));

    }

    return $output;
?>

2 个答案:

答案 0 :(得分:0)

只需使用Personalize代码段http://bobsguides.com/personalize-tutorial.html

即可
[[!Personalize?
    &yesChunk=`@CODE:<p>Place for your button</p>`
    &noChunk=`@CODE:<p>You are not logged in</p>`
    &allowedGroups=`MembersOnly,Managers`
]]

答案 1 :(得分:0)

在MODX风格中有两种正确的方法可以解决这个问题:资源和上下文权限。

  • 首先,您应该为具有新自定义权限的用户创建新的“策略模板”(安全»访问控制)。例如:“can_edit_my_resources_permission”。 Policies template

“管理员模板组”的权限在任何用户组中的所有用户的上下文中都有效,该用户组可以使用自定义策略访问上下文。 “资源模板组”的权限在指定资源组中的所有资源的上下文中有效。

  • 您应该根据自定义模板创建新的“访问策略”。必须检查您的许可。
  • 在那一步你应该决定:你的风格是什么?

如果您拥有资源的smidgen,其中用户应具有新权限,则可以选择资源组。此时,您还必须创建新的资源组。

如果有大量资源或将在不久的将来,您必须选择具有自定义上下文策略的用户组:

所以我们接近尾声。

  • 让我们刷新权限并清除所有缓存。
  • 毕竟你可以通过MODX api检查权限。

上下文:$modx->hasPermission('can_edit_my_resources_permission');

资源:$modx->resource->checkPolicy('can_edit_my_resources_permission');

无论如何,对于作为您的用户组成员的用户,您将获得true,这些用户可以访问您的上下文访问策略,或者可以使用相同的访问策略访问您的资源组。

P.S。:所有角色必须相同。其他不起作用的方式:)