yiisolutions/yii2-user-module

Yii2 用户模块

安装: 9

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

公开问题: 0

类型:yii2-extension

dev-master 2016-12-20 20:35 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:47:38 UTC


README

Latest Stable Version Total Downloads Build Status codecov License

Yii2 用户模块。

安装

使用 composer

composer require "yiisolutions/yii2-user-module: @dev"

或将它添加到 composer.json

{
  "require": {
    "yiisolutions/yii2-user-module": "@dev"
  }
}

配置

为了启用用户模块,请编辑您的配置文件

<?php

return [
    // ...
    'modules' => [
        // ...
        'user' => [
            'class' => 'yiisolutions\user\Module',
        ],
        // ...
    ],
    // ...
];

控制台命令

此模块提供控制台命令以管理用户

  • user/commands/create - 创建新用户
  • user/commands/truncate - 清空用户表

Web 控制器动作

此模块提供 Web 控制器动作

  • yiisolutions\user\actions\LoginAction - 用于用户登录
  • yiisolutions\user\actions\LogoutAction - 用于注销
  • yiisolutions\user\actions\SignUpAction - 用于注册新用户

要启用这些动作,请使用控制器 actions() 方法

<?php

namespace app\controllers;

use Yii;
use yii\web\Controller;
use yii\web\IdentityInterface;
use yiisolutions\user\actions\LoginAction;
use yiisolutions\user\actions\LogoutAction;
use yiisolutions\user\actions\SignUpAction;
use yiisolutions\user\events\LoginEvent;
use yiisolutions\user\models\LoginFormInterface;

class AccountController extends Controller
{
    public function actions()
    {
        return [
            'login' => [
                'class' => LoginAction::className(), 
                'view' => 'login',  // use @app/views/account/login.php view file
                'on loginSuccess' => [$this, 'onLoginSuccess'], // alternative success callback (default redirect to back)
                'on loginFailed' => [$this, 'onLoginFailed'], // do something when login failed (for example, logging)
            ],
            'logout' => [
                'class' => LogoutAction::className(),
            ],
            'sign-up' => [
                'class' => SignUpAction::className(),
            ],
        ];        
    }    
    
    /**
     * Run when login success.
     */
    public function onLoginSuccess(LoginEvent $event, LoginFormInterface $model)
    {
        // do something ...
        $username = $model->getUserIdentity()->username;
        Yii::info("User '{$username}' logged in");
        
        // override default action return value
        $event->return = $this->redirect('/profile');
    }
    
    /**
     * Run when login error. 
     */
    public function onLoginFailed(LoginEvent $event, LoginFormInterface $model)
    {
        // do something ...
        $user = $model->getUserIdentity();
        if ($user instanceof IdentityInterface) {
            // do something, when exists user fail login ...
        } else {
            // do something, else ...
        }
        
        $user = $model->getUserIdentity();
        if ($user) {
            // send email notification, increment attempt counter etc ...
        }
    }
}