lowbase / yii2-user
Yii2 用户模块
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 的名称。因为模块中的模型和控制器可能被应用程序继承(用于定制),并且需要更改 captchaAction
和 baseAuthUrl
以确保验证码和社交媒体登录的功能正常。
创建数据库表
使用命令行运行迁移
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']]) ?>