Я хочу создать приложение, где только администратор может выполнять все грубые операции, но другие пользователи могут только создавать и обновлять сообщения. Я нашел учебники, основанные на rbac, но только для продвинутых шаблонов, но я использую базовый шаблон. Я также следовал руководству по yii2, но не очень хорошо понимал его, как выполнение консольной команды ./yii rbac / init. Как мне это сделать?
Прежде всего создайте вспомогательный класс с именем 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, и все готово.
Я сам использую расширенный шаблон, поэтому могут быть небольшие изменения в пространствах имен и тому подобное. Но это должно быть довольно легко выяснить. Удачи!
Других решений пока нет …