Phalcon PhP - 如何在 .volt 视图中使用 $this->acl->isAllowed
Phalcon PhP - how to use $this->acl->isAllowed in .volt view
我正在使用 ACL 控制权限的 Phalcon 2.0.13 项目中工作。我的问题是:有没有办法让我在 .volt 视图中使用 isAllowed?
我的目标是根据用户权限控制我在 .volt 视图中显示的一些选项。
澄清一下我指的是哪个函数:
if( !$this->acl->isAllowed( $userRole, ucfirst( $this->dispatcher->getControllerName() ), $this->dispatcher->getActionName() ) ){
$this->response->redirect( $this->url->get(['for' => 'admin-index-login']) );
}
这是我在基本控制器中 运行 的一段代码,我想在 .volt 视图中检查权限,例如 {{ if isAllowed("User", "New") }} xxxx {{ endif }}
感谢您的帮助
这是我为解决问题所做的工作。我的权限系统在数据库中,因为管理员可以为角色、用户组或特定用户设置权限。
- 当用户登录系统时,我把他所有的权限都保留在session
- 我没有使用 acl(我以前这样做过),而是创建了一个函数来检查用户是否在 controller/action 中具有权限(我的权限基于控制器和操作,如 ACL)。
我创建了一个在 .volt 视图中使用的自定义函数:
$compiler = $volt->getCompiler();
//Custom volt functions
$compiler->addFunction('has_permission', function($resolvedArgs, $exprArgs) {
return '\HelperFunctions::UserHasPermission(' . $resolvedArgs . ')';
});
UserHasPermission
接收控制器和操作名称以检查用户是否具有权限。我是这样使用它的:
{% if has_permission("user", "*") %}
<li>
<a href="#" title="Users"><i class="fa fa-lg fa-fw fa-user"></i> <span class="menu-item-parent">Users</span></a>
<ul>
<li>
<a href="{{ url(['for': 'admin-user-index']) }} " title="Users"><span class="menu-item-parent">Users</span></a>
</li>
</ul>
</li>
{% endif %}
操作名称中的 *
表示用户是否具有任何 UserController 操作的权限。
到目前为止,我对解决方案很满意,如果在某个时候我想切换回 Phalcon 的 ACL,这非常简单。
如果将 acl 添加为服务,则只需执行以下操作:
{% if acl.isAllowed("User", "New") %}
{% endif %}
无需自定义伏特函数。基于 Phalcon ACL 内存的选项比数据库多得多,而且速度更快。
我正在使用 ACL 控制权限的 Phalcon 2.0.13 项目中工作。我的问题是:有没有办法让我在 .volt 视图中使用 isAllowed?
我的目标是根据用户权限控制我在 .volt 视图中显示的一些选项。
澄清一下我指的是哪个函数:
if( !$this->acl->isAllowed( $userRole, ucfirst( $this->dispatcher->getControllerName() ), $this->dispatcher->getActionName() ) ){
$this->response->redirect( $this->url->get(['for' => 'admin-index-login']) );
}
这是我在基本控制器中 运行 的一段代码,我想在 .volt 视图中检查权限,例如 {{ if isAllowed("User", "New") }} xxxx {{ endif }}
感谢您的帮助
这是我为解决问题所做的工作。我的权限系统在数据库中,因为管理员可以为角色、用户组或特定用户设置权限。
- 当用户登录系统时,我把他所有的权限都保留在session
- 我没有使用 acl(我以前这样做过),而是创建了一个函数来检查用户是否在 controller/action 中具有权限(我的权限基于控制器和操作,如 ACL)。
我创建了一个在 .volt 视图中使用的自定义函数:
$compiler = $volt->getCompiler(); //Custom volt functions $compiler->addFunction('has_permission', function($resolvedArgs, $exprArgs) { return '\HelperFunctions::UserHasPermission(' . $resolvedArgs . ')'; });
UserHasPermission
接收控制器和操作名称以检查用户是否具有权限。我是这样使用它的:
{% if has_permission("user", "*") %}
<li>
<a href="#" title="Users"><i class="fa fa-lg fa-fw fa-user"></i> <span class="menu-item-parent">Users</span></a>
<ul>
<li>
<a href="{{ url(['for': 'admin-user-index']) }} " title="Users"><span class="menu-item-parent">Users</span></a>
</li>
</ul>
</li>
{% endif %}
操作名称中的 *
表示用户是否具有任何 UserController 操作的权限。
到目前为止,我对解决方案很满意,如果在某个时候我想切换回 Phalcon 的 ACL,这非常简单。
如果将 acl 添加为服务,则只需执行以下操作:
{% if acl.isAllowed("User", "New") %}
{% endif %}
无需自定义伏特函数。基于 Phalcon ACL 内存的选项比数据库多得多,而且速度更快。