Я работал с расширенным шаблоном yii2, и теперь я хочу внедрить некоторые RBAC в контроллеры моего внешнего проекта.
Я очень впечатлен панелью управления RBAC Yeesoft/Yii2 cms с https://github.com/yeesoft/yii2-yee-cms, хотя я, вероятно, не буду использовать большую часть их функций управления контентом. Однако я впечатлен его панелью управления и хотел бы использовать ее для управления доступом к внешнему интерфейсу, предоставляя определенные разрешения своим сотрудникам.
Я включил этот код в его интерфейс\config\main.php в разделе его компонентов.
'components' => [
'authManager' => [
'class' => 'yii\rbac\DbManager'
],
]
Это позволяет мне включать код, подобный следующему, во внешние контроллеры.
if (!\Yii::$app->user->can('createEmployee')) {
throw new \yii\web\ForbiddenHttpException('You do not have permission to create an employee.');
}
для контроля доступа.
Я использую базу данных yeesoft и обдумываю перенос всех своих данных из моей внешней базы данных в базу данных yeesoft cms, потому что я могу создавать разрешения под ней с помощью панели управления и получать доступ к данным разрешений без необходимости писать обширный код миграции консоли, используя
Yii::$app->authManager;
и другой сложный код, например следующий:
$auth = Yii::$app->authManager;
//create the permission
$manageCleansbutnotusers = $auth->createPermission('manageCleansbutnotusers');
$manageCleansbutnotusers->description = 'Manage Cleans but not Users';
//add the permission
$auth->add($manageCleansbutnotusers);
//create the permission
$manageCleansandusers = $auth->createPermission('manageCleansandusers');
$manageCleansandusers->description = 'Manage Cleans and Users';
//add the permission
$auth->add($manageCleansandusers);
//create the role
$moderator = $auth->createRole('moderator');
$moderator->description = 'Moderator';
//add the role
$auth->add($moderator);
//attach the permissions to the role
$auth->addChild($moderator, $manageCleansbutnotusers);
//create the role
$admin = $auth->createRole('admin');
$admin->description = 'Administrator';
//add the role
$auth->add($admin);
//attach both permissions to the admin role
$auth->addChild($admin, $moderator);
$auth->addChild($admin, $manageCleansandusers);
который я использовал в прошлом для целей миграции.
Может ли кто-нибудь посоветовать мне, какой лучший подход? Я уверен, что кто-то использовал панель управления Yeesoft cms для управления доступом к внешнему интерфейсу, не прибегая к следующему:
'components' => [
'authManager' => [
'class' => 'yii\rbac\DbManager'
],
]