2014-12-18 2 views
1

Я хочу создать приложение, в котором только администратор может выполнять все операции crud, но другие пользователи могут создавать и обновлять сообщения. Я нашел учебники на основе rbac, но только для расширенного шаблона, но я использую базовый шаблон. Я также следовал руководству yii2, но я не очень хорошо его понимал, как выполнение команды ./yii rbac/init console. Как мне это сделать?RBAC для базового шаблона yii2

+0

Hi @Raj. Эта же проблема со мной тоже. Где я должен объявить DB с ролью = 100? В config/db.php? –

+0

@NanaPartykar извините, я больше не код в yii2. – Raaz

+0

Ok @Raj. NP. Спасибо. –

ответ

0

первую очередь создать вспомогательный класс называется PermissionHelpers в вашей папке модели:

namespace app\models; 
use Yii; 

class PermissionHelpers { 

    public static function requireAdmin() { 

     if(Yii::$app->user->identity->role == 100) 
     { 
      return true; 
     } 
     else return false; 
    } 
} 

Затем обновите ваш контроллер с:

// at top with your other use 
use yii\filters\AccessControl; 
use app\models\PermissionHelpers; 


// first function inside the class 
public function behaviors() 
{ 
    return [ 
     'access' => [ 
      'class' => AccessControl::className(), 
      'only' => ['privateaction1', 'privateaction2'], 
      'rules' => [ 
       [ 
        'actions' => ['privateaction1', 'privateaction2'], 
        'allow' => true, 
        'roles' => ['@'], 
        'matchCallback' => function($rule, $action) { 
          return PermissionHelpers::requireAdmin(); 
         } 
       ], 
      ], 
     ], 
} 

А теперь вам нужно обновить себя в БД с ролью = 100, и вы настроены.

Я использую расширенный шаблон самостоятельно, поэтому могут быть небольшие изменения в пространствах имен и т. Д. Но это должно быть довольно легко понять. Удачи!

+0

Привет @Jorgen. Затем мы можем использовать RBAC в версии yii2-basic. Это ? Потому что, читая учебник yii2-rbac, я обнаружил, что RBAC предназначен для версии yii2. –