CakePHP Многопользовательские роли / PRO Членство Роль - PullRequest
0 голосов
/ 13 октября 2019

У меня есть приложение CakePHP, и в настоящее время есть 2 user_type (s).

  1. admin (администратор)
  2. учетная запись (обычный пользователь)

Я работаю над тем, что пользователи могут платить за дополнительную плату, и это дает им доступ к большему количеству контента и страниц. Я собирался создать новый user_type с именем PRO и использовать его, но членам 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, чтобы я мог работать над адаптацией приложения под свои нужды. До сих пор это сообщество было очень полезным, и я надеюсь, что смогу продолжать все работать!

1 Ответ

0 голосов
/ 14 октября 2019

С моей точки зрения, я сделаю все изменения в 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) и я могу помочь вамБольше. Сейчас много неизвестных и сделано много предположений о помощи. В любом случае, мой подход может легко помочь вам добавить новые роли.

...