вторник, 12 сентября 2017 г.

Установка yii2 + usuario

Предположим, наш сайт будет называться shop, а админка его будет доступна по урлу http://backend.shop.lo


Создаём проект согласно инструкции на оф. сайте


composer.phar global require "fxp/composer-asset-plugin:^1.2.0"
composer.phar create-project yiisoft/yii2-app-advanced shop
cd shop
./init

На вопросы отвечаем:

Your choice [0-1, or "q" to quit] 0
Initialize the application under 'Development' environment? [yes|no] y

Затем создаем базу данных

mysqladmin -uroot create shop

Устанавливаем usuario согласно оф. документации

composer require 2amigos/yii2-usuario

Добавляем пути к миграциям

В console/config/main.php добавляем

'controllerMap' => [
    ...
    'migrate' => [
        'class' => \yii\console\controllers\MigrateController::class,
        'migrationNamespaces' => [
            'Da\User\Migration',
        ],
    ],
],

В backend/config/main.php добавляем

'components' => [
    ...
    'authManager' => [
        'class' => 'yii\rbac\DbManager',
    ],

В common/config/main.php добавляем

'modules' => [
    'user' => [
        'class' => Da\User\Module::class,
        'administratorPermissionName' => 'fullAccess',
    ]
]

Удаляем стартовую миграцию yii

rm console/migrations/m130524_201442_init.php

Запускаем миграции

./yii migrate --migrationPath=@yii/rbac/migrations

Изменяем настройки identityClass в backend/config/main.php

'components' => [
    ...
    'user' => [
        'identityClass' => Da\User\Model\User::class, // здесь раньше было 'common\models\User'

Создаём администратора c почтой admin@shop.lo логином admin и паролем 123456

./yii user/create admin@shop.lo admin 123456

Создаём команду для генерации базового доступа согласно оф. документации

console/controllers/RbacController.php

< ?php
namespace console\controllers;

use Yii;
use yii\console\Controller;

class RbacController extends Controller
{
    public function actionInit()
    {
        $auth = Yii::$app->authManager;

        $fullAccessPerm = $auth->createPermission(Yii::$app->getModule('user')->administratorPermissionName);
        $fullAccessPerm->description = 'Полный доступ';
        $auth->add($fullAccessPerm);

        $admin = $auth->createRole('admin');
        $auth->add($admin);
        $auth->addChild($admin, $fullAccessPerm);

        $auth->assign($admin, 1);
    }
}

Запускаем её

./yii rbac/init

Проверяем

Заходим на http://backend.shop.lo/index.php?r=user%2Fadmin%2Findex
После авторизации должно показать панель управления пользователями и доступами