RBAC для базового шаблона yii2

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

1

Решение

Прежде всего создайте вспомогательный класс с именем 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, и все готово.

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]