Я хочу создать приложение, в котором только администратор может выполнять все операции crud, но другие пользователи могут создавать и обновлять сообщения. Я нашел учебники на основе rbac, но только для расширенного шаблона, но я использую базовый шаблон. Я также следовал руководству yii2, но я не очень хорошо его понимал, как выполнение команды ./yii rbac / init console. Как мне это сделать?
прежде всего создайте в папке с образцом класс помощников 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(); } ], ], ], }
И теперь вам нужно обновить себя в БД с помощью role = 100, и вы настроены.
Я сам использую расширенный шаблон, поэтому могут быть небольшие изменения в пространствах имен и т. Д. Но это должно быть довольно легко понять. Удачи!