yii2mod / yii2-user
User module
Installs: 15 724
Dependents: 1
Suggesters: 0
Security: 0
Stars: 27
Watchers: 8
Forks: 10
Open Issues: 4
Type:yii2-extension
Requires
- php: >=5.6
- yii2mod/yii2-enum: *
- yiisoft/yii2: >=2.0.8
- yiisoft/yii2-swiftmailer: *
Requires (Dev)
README
Yii2 User Extension
Flexible user registration and authentication module for Yii2
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist yii2mod/yii2-user "*"
or add
"yii2mod/yii2-user": "*"
to the require section of your composer.json
file.
Actions
This extension provides several independent action classes, which provides particular operation support:
- [[yii2mod\user\actions\LoginAction]] - Logs in a user. The following additional parameters are available:
view
- name of the view, which should be rendered.modelClass
- login model class name.layout
- the name of the layout to be applied to this view.returnUrl
- url which user should be redirected to on success.
- [[yii2mod\user\actions\LogoutAction]] - Logs out the current user. The following additional parameters are available:
returnUrl
- url which user should be redirected to on success.
- [[yii2mod\user\actions\SignupAction]] - Signup a user. The following additional parameters are available:
view
- name of the view, which should be rendered.modelClass
- signup model class name.returnUrl
- url which user should be redirected to on success.
- [[yii2mod\user\actions\RequestPasswordResetAction]] - Request password reset for a user. The following additional parameters are available:
view
- name of the view, which should be rendered.modelClass
- request password model class.successMessage
- message to the user when the mail is sent successfully.errorMessage
- error message for the user when the email was not sent.returnUrl
- url which user should be redirected to on success.
- [[yii2mod\user\actions\PasswordResetAction]] - Reset password for a user. The following additional parameters are available:
view
- name of the view, which should be rendered.modelClass
- reset password model class.successMessage
- message to be set on success.returnUrl
- url which user should be redirected to on success.
Configuration
- If you use this extension without base template, then you need execute migration by the following command:
php yii migrate/up --migrationPath=@vendor/yii2mod/yii2-user/migrations
- You need to configure the
params
section in your project configuration:
'params' => [ 'user.passwordResetTokenExpire' => 3600 ]
- Your need to create the UserModel class that be extends of UserModel and configure the property
identityClass
foruser
component in your project configuration, for example:
'user' => [ 'identityClass' => 'yii2mod\user\models\UserModel', // for update last login date for user, you can call the `afterLogin` event as follows 'on afterLogin' => function ($event) { $event->identity->updateLastLogin(); } ],
-
For sending emails you need to configure the
mailer
component in the configuration of your project. -
If you don't have the
passwordResetToken.php
template file in the mail folder of your project, then you need to create it, for example:
<?php use yii\helpers\Html; /* @var $this yii\web\View */ /* @var $user */ $resetLink = Yii::$app->urlManager->createAbsoluteUrl(['site/password-reset', 'token' => $user->password_reset_token]); ?> Hello <?php echo Html::encode($user->username) ?>, Follow the link below to reset your password: <?php echo Html::a(Html::encode($resetLink), $resetLink) ?>
This template used for password reset email.
- Add to SiteController (or configure via
$route
param in urlManager):
/** * @return array */ public function actions() { return [ 'login' => [ 'class' => 'yii2mod\user\actions\LoginAction' ], 'logout' => [ 'class' => 'yii2mod\user\actions\LogoutAction' ], 'signup' => [ 'class' => 'yii2mod\user\actions\SignupAction' ], 'request-password-reset' => [ 'class' => 'yii2mod\user\actions\RequestPasswordResetAction' ], 'password-reset' => [ 'class' => 'yii2mod\user\actions\PasswordResetAction' ], ]; }
You can then access to this actions through the following URL:
- http://localhost/site/login
- http://localhost/site/logout
- http://localhost/site/signup
- http://localhost/site/request-password-reset
- http://localhost/site/password-reset
- Also some actions send flash messages, so you should use an AlertWidget to render flash messages on your site.
Using action events
You may use the following events:
/** * @return array */ public function actions() { return [ 'login' => [ 'class' => 'yii2mod\user\actions\LoginAction', 'on beforeLogin' => function ($event) { // your custom code }, 'on afterLogin' => function ($event) { // your custom code }, ], 'logout' => [ 'class' => 'yii2mod\user\actions\LogoutAction', 'on beforeLogout' => function ($event) { // your custom code }, 'on afterLogout' => function ($event) { // your custom code }, ], 'signup' => [ 'class' => 'yii2mod\user\actions\SignupAction', 'on beforeSignup' => function ($event) { // your custom code }, 'on afterSignup' => function ($event) { // your custom code }, ], 'request-password-reset' => [ 'class' => 'yii2mod\user\actions\RequestPasswordResetAction', 'on beforeRequest' => function ($event) { // your custom code }, 'on afterRequest' => function ($event) { // your custom code }, ], 'password-reset' => [ 'class' => 'yii2mod\user\actions\PasswordResetAction', 'on beforeReset' => function ($event) { // your custom code }, 'on afterReset' => function ($event) { // your custom code }, ], ]; }
Console commands
Setup
To enable console commands, you need to add module into console config of you app.
/config/console.php
in yii2-app-basic template, or /console/config/main.php
in yii2-app-advanced.
return [ 'id' => 'app-console', 'modules' => [ 'user' => [ 'class' => 'yii2mod\user\ConsoleModule', ], ],
Available console actions
- user/create - Creates a new user.
./yii user/create <email> <username> <password> - email (required): string - username (required): string - password (required): string
- user/role/assign - Assign role to the user.
./yii user/role/assign <roleName> <email> - roleName (required): string - email (required): string
- user/role/revoke - Revoke role from the user.
./yii user/role/revoke <roleName> <email> - roleName (required): string - email (required): string
- user/delete - Deletes a user.
./yii user/delete <email> - email (required): string
- user/update-password - Updates user's password to given.
./yii user/update-password <email> <password> - email (required): string - password (required): string
Internationalization
All text and messages introduced in this extension are translatable under category 'yii2mod.user'. You may use translations provided within this extension, using following application configuration:
return [ 'components' => [ 'i18n' => [ 'translations' => [ 'yii2mod.user' => [ 'class' => 'yii\i18n\PhpMessageSource', 'basePath' => '@yii2mod/user/messages', ], // ... ], ], // ... ], // ... ];
Support us
Does your business depend on our contributions? Reach out and support us on Patreon. All pledges will be dedicated to allocating workforce on maintenance and new awesome stuff.