Установка yii2 с авторизацией через БД и управлением правами пользователей

Ниже описана установка yii2 с модулем yii2-users. Не смотря на длинную простыню текста-пугаться не стоит, тут не написано ни одной строчки кода,чисто установка приложения. Новичкам также не стоит пугаться-глаза боятся,а руки делают.
Для установки yii2 потребуется composer и PHP версии не ниже 5.4

Начнем, установив базовую версию yii2:

composer create-project --prefer-dist yiisoft/yii2-app-basic basic

В папке basic выполним:

php init

Выведется диалог, на который отвечаем 0 или 1(я отвечаю 0):

Yii Application Initialization Tool v1.0                            
                                                              
Which environment do you want the application to be initialized in? 
                                                                    
  [0] Development                                                   
  [1] Production                                                    
                                                                    
  Your choice [0-1, or "q" to quit]  /*выбираем 0 или 1*/  /*Enter*/

в папке basic появилось наше приложение. Перейдем в папку basic. Добавим строчку

"budyaga/yii2-users":"*"

в файл composer.json в секцию required, должно быть примерно так:

    "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": "~2.0.5",
        "yiisoft/yii2-bootstrap": "~2.0.0",
        "yiisoft/yii2-swiftmailer": "~2.0.0",
        "budyaga/yii2-users":"*"
    },

Дальше в консоли выполним:

composer update

Подгрузятся необходимые пакеты, которые предназначены для авторизации и управления правами пользователей.
Отредактируем конфиг приложения(НЕ ТРОГАТЬ ТОЛЬКО ‘cookieValidationKey’ => »), который расположен в basic/config и называется web.php и приведем к виду:


<?php 
    $params = require(__DIR__ . '/params.php'); $config = [ 'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'components' => [
        'user' => [
                'identityClass' => 'budyaga\users\models\User',
                'enableAutoLogin' => true,
                'loginUrl' => ['/login'],
        ],
        'authClientCollection' => [
                'class' => 'yii\authclient\Collection',
                'clients' => [
                ],
        ],

        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => 'CHANGE CODE',
        ],
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        /*'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],*/
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'db' => require(__DIR__ . '/db.php'),
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
            '/signup' => '/user/user/signup',
            '/login' => '/user/user/login',
            '/logout' => '/user/user/logout',
            '/requestPasswordReset' => '/user/user/request-password-reset',
            '/resetPassword' => '/user/user/reset-password',
            '/profile' => '/user/user/profile',
            '/retryConfirmEmail' => '/user/user/retry-confirm-email',
            '/confirmEmail' => '/user/user/confirm-email',
            '/unbind/<id:[\w\-]+>' => '/user/auth/unbind',
            ],
        ],
        'authManager' => [
                'class' => 'yii\rbac\DbManager',
        ],

    ],
'modules' => [
    'user' => [
        'class' => 'budyaga\users\Module',
        'userPhotoUrl' => 'http://example.com/uploads/user/photo',
        'userPhotoPath' => '@frontend/web/uploads/user/photo'
    ],
],
    'params' => $params,
];

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
    ];

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
    ];
}
return $config;

Сохраняем файл. Так как мы в конфиге указали,что будем использовать ЧПУ, нужно прописать правила в .htaccess по пути basic/web.

RewriteEngine on

# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php

Сохраняем. Осталось выполнить миграцию, с помощью которой добавим нужные таблицы в базу, но перед тем как ее выполнять убедитесь что указан правильный логин и пароль в конфиге db.php, который лежит в basic/config. Как убедитесь — запускайте в консоли:

yii migrate/up --migrationPath=@vendor/budyaga/yii2-users/migrations

В результате появится 9 таблиц.
На этом в принципе все. ~за 15 минут получилось практически рабочее приложение. Подробней о модуле авторизации можно почитать тут:
http://krivochenko.ru/blog/post/using-yii2-users

Понравилась статья? Поделиться с друзьями: