Как интегрировать Yeesoft/Yii2 cms RBAC (управление доступом на основе ролей) с внешним интерфейсом YII2 RBAC?

Я работал с расширенным шаблоном 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'
    ],
]

person Addi    schedule 05.04.2018    source источник
comment
Почему бы не использовать общий конфиг? Он используется интерфейсом и сервером.   -  person Jairus Martin    schedule 09.04.2018
comment
Я буду использовать общий конфиг. Спасибо.   -  person Addi    schedule 09.04.2018
comment
Это достигло вашей цели? Если да, не могли бы вы принять ответ ниже?   -  person Jairus Martin    schedule 09.04.2018


Ответы (1)


В расширенной настройке Yii2: внешнее и внутреннее приложения имеют свои собственные конфигурации. Общая конфигурация может быть использована для случаев, когда внешний и внутренний интерфейсы имеют общие черты. Например, конфигурации для баз данных, логинов AD или подключаемых расширений.

  • backend — серверное веб-приложение.
  • общие — файлы, общие для всех приложений.
  • консоль - консольное приложение.
  • environments - конфиги окружения.
  • frontend — внешнее веб-приложение.

См. Yii-App-Advanced.

person Jairus Martin    schedule 09.04.2018