kuzmiand / yii2-users
这是一个管理用户及其权限的模块,支持通过社交服务注册,并为每个用户分配多个社交服务。
Requires
README
这是一个支持通过社交服务注册并管理用户及其权限的模块,每个用户可以分配多个社交服务。
功能
通过电子邮件和社交网络进行用户注册和授权,可以将多个不同社交网络账号绑定到您网站的一个账号上
修改密码
密码找回
修改电子邮件。确认邮件将发送到旧邮箱和新邮箱
编辑个人资料
用户管理模块
通过图形界面编辑RBAC结构和用户权限
安装
安装此扩展的首选方式是通过 composer。
运行以下命令:
php composer.phar require --prefer-dist kuzmiand/yii2-users "*"
或者在您的 composer.json
文件的 require 部分添加:
"kuzmiand/yii2-users": "*"
to
配置
'user' => [
'identityClass' => 'kuzmiand\users\models\User',
'enableAutoLogin' => true,
'loginUrl' => ['/login'],
],
'authClientCollection' => [
'class' => 'yii\authclient\Collection',
'clients' => [
'vkontakte' => [
'class' => 'kuzmiand\users\components\oauth\VKontakte',
'clientId' => 'XXX',
'clientSecret' => 'XXX',
'scope' => 'email'
],
'google' => [
'class' => 'kuzmiand\users\components\oauth\Google',
'clientId' => 'XXX',
'clientSecret' => 'XXX',
],
'facebook' => [
'class' => 'kuzmiand\users\components\oauth\Facebook',
'clientId' => 'XXX',
'clientSecret' => 'XXX',
],
'github' => [
'class' => 'kuzmiand\users\components\oauth\GitHub',
'clientId' => 'XXX',
'clientSecret' => 'XXX',
'scope' => 'user:email, user'
],
'linkedin' => [
'class' => 'kuzmiand\users\components\oauth\LinkedIn',
'clientId' => 'XXX',
'clientSecret' => 'XXX',
],
'live' => [
'class' => 'kuzmiand\users\components\oauth\Live',
'clientId' => 'XXX',
'clientSecret' => 'XXX',
],
'yandex' => [
'class' => 'kuzmiand\users\components\oauth\Yandex',
'clientId' => 'XXX',
'clientSecret' => 'XXX',
],
'twitter' => [
'class' => 'kuzmiand\users\components\oauth\Twitter',
'consumerKey' => 'XXX',
'consumerSecret' => 'XXX',
],
],
],
'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',
'/oauth/<authclient:[\w\-]+>' => '/user/auth/index'
],
],
'authManager' => [
'class' => 'yii\rbac\DbManager',
],
'modules' => [
'user' => [
'class' => 'kuzmiand\users\Module',
'userPhotoUrl' => 'http://example.com/uploads/user/photo',
'userPhotoPath' => '@frontend/web/uploads/user/photo'
],
],
您需要用您自己的值替换 XXX。为了获取这些值,您必须在社交网络上创建应用程序。
如果您使用的是高级模板和 Yandex 客户端,那么您需要在前端和后端应用程序的配置中添加 authClientCollection。但是 Yandex 客户端只能添加到其中一个应用程序中。原因在于 Yandex 的一个应用程序只能与一个域名配合工作,您不能在不同的域名上添加两个不同的回调 URL。
并非所有服务都返回所有用户数据。如果服务没有返回某些数据,则会使用默认设置。
数据库迁移
yii migrate/up --migrationPath=@vendor/kuzmiand/yii2-users/migrations
此迁移创建模块操作所需的所有表和两个用户
使用
在主布局中
use kuzmiand\users\components\AuthorizationWidget;
<?= AuthorizationWidget::widget() ?>
个人资料: http://example.com/profile
密码恢复: http://example.com/requestPasswordReset
管理用户: http://example.com/user/admin
管理 RBAC: http://example.com/user/rbac
自定义视图和电子邮件模板
如果您想使用自定义视图和电子邮件模板,您可以在配置中覆盖它们。例如
'modules' => [
'user' => [
'class' => 'kuzmiand\users\Module',
'customViews' => [
'login' => '@app/views/site/login'
],
'customMailViews' => [
'confirmChangeEmail' => '@app/mail/confirmChangeEmail' //in this case you have to create files confirmChangeEmail-html.php and confirmChangeEmail-text.php in mail folder
]
],
],
您可以覆盖所有来自 vendor\kuzmiand\yii2-users\views\user 和 vendor\kuzmiand\yii2-users\mail 文件夹的视图。