, (*1)
Yii2 User Extension
Flexible user registration and authentication module for Yii2, (*2)
, (*3)
Installation
The preferred way to install this extension is through composer., (*4)
Either run, (*5)
php composer.phar require --prefer-dist yii2mod/yii2-user "*"
or add, (*6)
"yii2mod/yii2-user": "*"
to the require section of your composer.json
file., (*7)
Actions
This extension provides several independent action classes, which provides particular operation support:, (*8)
-
[[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
1) If you use this extension without base template, then you need execute migration by the following command:, (*9)
php yii migrate/up --migrationPath=@vendor/yii2mod/yii2-user/migrations
2) You need to configure the params
section in your project configuration:, (*10)
'params' => [
'user.passwordResetTokenExpire' => 3600
]
3) Your need to create the UserModel class that be extends of UserModel and configure the property identityClass
for user
component in your project configuration, for example:, (*11)
'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();
}
],
4) For sending emails you need to configure the mailer
component in the configuration of your project., (*12)
5) 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:, (*13)
urlManager->createAbsoluteUrl(['site/password-reset', 'token' => $user->password_reset_token]);
?>
Hello username) ?>,
Follow the link below to reset your password:
This template used for password reset email., (*14)
6) Add to SiteController (or configure via $route
param in urlManager):, (*15)
/**
* @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:, (*16)
- http://localhost/site/login
- http://localhost/site/logout
- http://localhost/site/signup
- http://localhost/site/request-password-reset
- http://localhost/site/password-reset
7) Also some actions send flash messages, so you should use an AlertWidget to render flash messages on your site., (*17)
Using action events
You may use the following events:, (*18)
/**
* @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., (*19)
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:, (*20)
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., (*21)