lowbase/yii2-user

Yii2 用户模块

安装次数: 1,478

依赖项: 2

建议者: 0

安全性: 0

星标: 13

关注者: 4

分支: 5

开放问题: 1

类型:yii2-extension

1.0.3 2016-05-08 20:21 UTC

This package is not auto-updated.

Last update: 2024-09-20 18:30:52 UTC


README

Yii2-user - lowBase组件集的一个独立模块,包含管理面板和完整的功能。

  • 通过 Email 进行身份验证和注册(需确认)
  • 通过社交媒体进行身份验证和注册
  • 通过 Email 恢复密码
  • 最全面的用户资料
  • 用户管理和按参数扩展的搜索
  • 国家/城市(来自 VKontakte 的数据库)以及与这些信息的用户资料关联
  • 使用权限系统、继承和规则来划分角色和进行管理
  • 身份验证小部件、在线固定、将用户资料与社交媒体关联(用于后续登录)
  • 支持多语言
  • 支持自定义显示和邮件模板,无需继承

安装

php composer.phar require --prefer-dist lowbase/yii2-user "*"

"lowbase/yii2-user": "*"

配置配置文件

//-----------------------
// Компонент пользователя
//-----------------------

'user' => [
    'identityClass' => 'lowbase\user\models\User',
    'enableAutoLogin' => true,
    'loginUrl' => ['/login'],
    'on afterLogin' => function($event) {
        lowbase\user\models\User::afterLogin($event->identity->id);
    }
],

//--------------------------------------------------------
// Компонент OAUTH для авторизации через социальные сети,
// где вмето ? указываем полученные после регистрации
// клиентский ID и секретный ключ.
// В комментария указаны ссылки для регистрации приложений
// в соответствующих социальных сетях.
//--------------------------------------------------------

'authClientCollection' => [
   'class' => 'yii\authclient\Collection',
   'clients' => [
       'vkontakte' => [
           // https://vk.com/editapp?act=create
           'class' => 'lowbase\user\components\oauth\VKontakte',
           'clientId' => '?',
           'clientSecret' => '?',
           'scope' => 'email'
       ],
       'google' => [
           // https://console.developers.google.com/project
           'class' => 'lowbase\user\components\oauth\Google',
           'clientId' => '?',
           'clientSecret' => '?',
       ],
       'twitter' => [
            // https://dev.twitter.com/apps/new
           'class' => 'lowbase\user\components\oauth\Twitter',
           'consumerKey' => '?',
           'consumerSecret' => '?',
       ],
       'facebook' => [
            // https://developers.facebook.com/apps
           'class' => 'lowbase\user\components\oauth\Facebook',
           'clientId' => '?',
           'clientSecret' => '?',
       ],
       'github' => [
            // https://github.com/settings/applications/new
           'class' => 'lowbase\user\components\oauth\GitHub',
           'clientId' => '?',
           'clientSecret' => '?',
           'scope' => 'user:email, user'
       ],
       'yandex' => [
            // https://oauth.yandex.ru/client/new
           'class' => 'lowbase\user\components\oauth\Yandex',
           'clientId' => '?',
           'clientSecret' => '?',
       ],
   ],
],

//---------------------------------------------
// Для реализации разделения прав пользователей
// с помощью коробочного модуля Yii2 RBAC.
//---------------------------------------------

'authManager' => [
    'class' => 'yii\rbac\DbManager',
    'itemTable' => 'lb_auth_item',
    'itemChildTable' => 'lb_auth_item_child',
    'assignmentTable' => 'lb_auth_assignment',
    'ruleTable' => 'lb_auth_rule'
],

//-------------------------------------------------
// Прописываем правила роутинга для соответствующих
// действий с модулем в приложении.
//-------------------------------------------------

'urlManager' => [
   'enablePrettyUrl' => true,
   'showScriptName' => false,
   'rules' => [
       //Взаимодействия с пользователем на сайте
       '<action:(login|logout|signup|confirm|reset|profile|remove|online)>' => 'lowbase-user/user/<action>',
       //Взаимодействия с пользователем в панели админстрирования
       'admin/user/<action:(index|update|delete|view|rmv|multidelete|multiactive|multiblock)>' => 'lowbase-user/user/<action>',
       //Авторизация через социальные сети
       'auth/<authclient:[\w\-]+>' => 'lowbase-user/auth/index',
       //Просмотр пользователя
       'user/<id:\d+>' => 'lowbase-user/user/show',
       //Взаимодействия со странами в панели админстрирования
       'admin/country/<action:(index|create|update|delete|view|multidelete)>' => 'lowbase-user/country/<action>',
       //Поиск населенного пункта (города)
       'city/find' => 'lowbase-user/city/find',
       //Взаимодействия с городами в панели администрирования
       'admin/city/<action:(index|create|update|delete|view|multidelete)>' => 'lowbase-user/city/<action>',
       //Работа с ролями и разделением прав доступа
       'admin/role/<action:(index|create|update|delete|view|multidelete)>' => 'lowbase-user/auth-item/<action>',
       //Работа с правилами контроля доступа
       'admin/rule/<action:(index|create|update|delete|view|multidelete)>' => 'lowbase-user/auth-rule/<action>',
   ],
],

//-----------------------
// Подключаем сами модули
//-----------------------

'modules' => [
   'gridview' =>  [
       'class' => '\kartik\grid\Module'
   ],
   'lowbase-user' => [
       'class' => '\lowbase\user\Module',
   ],
],

注意!!!

建议不要在配置文件中更改模块 lowbase-user 的名称。因为模块中的模型和控制器可能被应用程序继承(用于定制),并且需要更改 captchaActionbaseAuthUrl 以确保验证码和社交媒体登录的功能正常。

创建数据库表

使用命令行运行迁移

php yii migrate/up --migrationPath=@vendor/lowbase/yii2-user/migrations

迁移会创建所需的表,并填充最小预定义值。最初设置了两个角色:管理员和版主

//Администратор по умолчанию
const ADMIN_FIRST_NAME = 'Имя_администратора';
const ADMIN_LAST_NAME = 'Фамилия_администратора';
const ADMIN_EMAIL = 'admin@example.ru';
const ADMIN_PASSWORD = 'admin';

//Модератор по умолчанию
const MODERATOR_FIRST_NAME = 'Имя_модератора';
const MODERATOR_LAST_NAME = 'Фамилия_модератора';
const MODERATOR_EMAIL = 'moderator@example.ru';
const MODERATOR_PASSWORD = 'moderator';

国家/城市表将是空的。如果您想从 VKontakte 的数据库中导入记录,则需要从迁移文件夹导入文件。

dump_city.sql

模块页面的用户显示

'modules' => [
    'user' => [
        'class' => '\lowbase\user\Module',
        'customViews' => [
            // Меняем стандартное отображение профиля
            'login' => '@app/views/user/profile'
        ]
    ],
],
// Допустимые отображения для кастомизации:
//
// signup - регистрация
// login - авторизация
// profile - профиль
// repass - восстановление пароля
// show - просмотр пользователя
// confirmEmail - шаблон письма подтверждения Email
// passwordResetToken - шаблон письма сброса пароля

启动小部件

use lowbase\user\components\LoginWidget;
use lowbase\user\components\OnlineWidget;
use lowbase\user\components\AuthKeysManager;
use lowbase\user\components\AuthChoice;

// Виджет авторизации (с отключеными иконками соц. сетей)
<?= LoginWidget::widget(['oauth' => false]) ?>

// Виджет проверяющий пользователя Online (с установкой времени опроса 300 секунд)
<?= OnlineWidget::widget(['time' => 300]) ?>

// Виджет авторизации через социальные сети
<?= AuthChoice::widget([['baseAuthUrl' => ['/lowbase-user/auth/index']]]) ?>

// Виджет привязки социальных сетей к профилю
 <?= AuthKeysManager::widget(['baseAuthUrl' => ['/lowbase-user/auth/index']]) ?>