CakePHP多个用户角色/ PRO成员角色

问题描述 投票:0回答:1

我有一个CakePHP应用,目前有2个user_type。

  1. 管理员(管理员)
  2. 帐户(普通用户)

我正在做一些需要用户支付额外费用的事情,它使他们可以访问更多的内容和页面。我打算创建一个名为PRO的新user_type并使用它,但是PRO成员仍然需要访问拥有user_type帐户的人可以访问的所有东西。

基本上,最简单的设置方法是,我可以授予用户使用与我当前使用的代码相似的代码查看某些内容和页面的权限:

<?php if( $currentUser['user_type'] == 'account' ) { ?><?php } ?>用于限制内容

if( $this->User['user_type'] == 'account')) {

            switch ($this->request->getParam('action')) {
                case 'PAGE':
                    return true;
                default:
                    return false;
                    break;
            }
        }

用于控制页面访问

此外,我还需要一种简单的方法来通过前端管理面板为用户提供访问权限。我目前使用以下代码,并且需要一种方法来使其适应于此新的“ PRO”选项。

if( $user->user_type != 'admin' && $currentUser['id'] = 1 )
              echo $this->Form->postLink(__('Make Admin'), ['action' => 'make_admin', $user->id], ['confirm' => __('Are you sure you want to make admin?', $user->name), 'class'=>'btn btn-danger btn-md']);
            else 
               echo $this->Form->postLink(__('Revoke Admin'), ['action' => 'revoke_admin', $user->id], ['confirm' => __('Are you sure you want to remove admin rights?', $user->name), 'class'=>'btn btn-danger btn-md']);

我在cakephp上是一个菜鸟,所以对您的帮助非常感谢。我没有制作基本应用程序,而是聘请了一名开发人员来完成该工作,因此我正在学习cakephp,以便我可以根据自己的需求更好地适应该应用程序。到目前为止,这个社区一直非常有帮助,我希望我可以继续使一切正常!

php cakephp authorization cakephp-3.x
1个回答
0
投票

我的观点是,我将在AppController中进行所有更改,然后从那里放置权限。然后,我可以轻松处理其余的情况,而无需麻烦。

例如在AppController beforeFilter()内部

$this->authenticatedUser = AuthComponent::user();
//$this->authenticatedUser['superadmin'] = false; //if you set true, this will be your root user

并在此处设置您的新角色

$this->authenticatedUser['role'] = 'PRO' //or your `account` with your condition

如果将角色account更改为PRO角色,则可以设置$this->authenticatedUser['role']来设置新角色。

 if(in_array($this->authenticatedUser['role'],['account','PRO'])) {

        switch ($this->request->getParam('action')) {
            case 'PAGE':
                return true;
            default:
                return false;
                break;
        }
    }

或者您可以更改类似的内容>

if(!$this->authenticatedUser['superadmin']) 

if($this->authenticatedUser['superadmin'])

如果我可以看到更多您的AppController(BaseController),可以为您提供更多帮助。现在,有很多未知数,并且做出了很多假设以寻求帮助。无论如何,我的方法很容易就能帮助您添加新角色。

© www.soinside.com 2019 - 2024. All rights reserved.