kuzmiand/yii2-users

这是一个管理用户及其权限的模块,支持通过社交服务注册,并为每个用户分配多个社交服务。

维护者

详细信息

github.com/kuzmiand/yii2-users

源代码

安装: 27

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 39

类型:yii2-extension

0.1.9 2015-11-04 16:00 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:36:20 UTC


README

这是一个支持通过社交服务注册并管理用户及其权限的模块,每个用户可以分配多个社交服务。

功能

通过电子邮件和社交网络进行用户注册和授权,可以将多个不同社交网络账号绑定到您网站的一个账号上

Authorization widget OAuth keys manage widget

修改密码

Changing password

密码找回

Recovering password

修改电子邮件。确认邮件将发送到旧邮箱和新邮箱

Changing e-mai

编辑个人资料

Editinig profile

用户管理模块

Admin module

通过图形界面编辑RBAC结构和用户权限

Editing RBAC structure

Editiong user permissions

安装

安装此扩展的首选方式是通过 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/signup

个人资料: 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\uservendor\kuzmiand\yii2-users\mail 文件夹的视图。