Flexible user registration and authentication module for Yii2
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.
This extension provides several independent action classes, which provides particular operation support:
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.returnUrl
- url which user should be redirected to on success.view
- name of the view, which should be rendered.modelClass
- signup model class name.returnUrl
- url which user should be redirected to on success.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.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.1) 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
2) You need to configure the params
section in your project configuration:
'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:
'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.
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:
<?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.
6) 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:
7) Also some actions send flash messages, so you should use an AlertWidget to render flash messages on your site.
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
},
],
];
}
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',
],
],
./yii user/create <email> <username> <password>
- email (required): string
- username (required): string
- password (required): string
./yii user/role/assign <roleName> <email>
- roleName (required): string
- email (required): string
./yii user/role/revoke <roleName> <email>
- roleName (required): string
- email (required): string
./yii user/delete <email>
- email (required): string
./yii user/update-password <email> <password>
- email (required): string
- password (required): string
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',
],
// ...
],
],
// ...
],
// ...
];
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.
Comments