2017 © Pedro Peláez
 

library laravel-user

将用户独立出一个模块,以提高代码可复用性

image

goodwong/laravel-user

将用户独立出一个模块,以提高代码可复用性

  • Monday, August 28, 2017
  • by goodwong
  • Repository
  • 1 Watchers
  • 0 Stars
  • 4 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 6 Versions
  • 0 % Grown

The README.md

Laravel 5 User

将用户独立出一个模块,以提高代码可复用性。, (*1)

本模块除Laravel本身外,不依赖其它模块。, (*2)

安装

  1. 通过composer安装, (*3)

    composer require goodwong/laravel-user
    
  2. 修改config/auth.php:, (*4)

    App\User::class,
    
    // 修改为
    Goodwong\User\Entities\User::class,
    
  3. 同样修改config/services.php:, (*5)

    App\User::class,
    
    // 修改为
    Goodwong\User\Entities\User::class,
    

使用

  1. 查询用户, (*6)

    // User 继承自Eloquent
    $user = Goodwong\User\Entities\User::find($user_id);
    $users = Goodwong\User\Entities\User::get();
    

    ** 注意:** 不要使用Eloquent方式创建用户, (*7)

  2. 通过Goodwong\User\Handlers\UserHandler创建用户, (*8)

    $userHandler = app('Goodwong\User\Handlers\UserHandler');
    $attributes = [
        'name' => 'User Name',
        'email' => 'email', // unique, 可以使用任意字符串,只要保证唯一
        'password' => 'xxxx' // raw password, optional
    ];
    $user = $userHandler->create($attributes);
    
  3. 通过Goodwong\User\Handlers\AuthHandler登录用户, (*9)

    $authHandler = app('Goodwong\User\Handlers\AuthHandler');
    $authHandler->login($user);
    ~~$success = $authHandler->attempt($credentials);~~ // 暂未实现
    

    ** 注意:** 不要使用Auth::login($user);,这样得不到事件通知, (*10)

事件

  • UserCreated 创建用户触发, (*11)

  • UserAuthorized 用户登录系统触发, (*12)

安装路由规则

安装路由规则前的特别说明

Laravel 5.4在使用第三方插件的路由规则时有问题,见 When namespaces begin with \ they should reset. #18078, (*13)

  • 所以需要修改app/Providers/RouteServiceProvider.php文件,并且所有路由规则不能省略命名空间。, (*14)

  • 同时嵌套第三方路由规则时注意外层不要包裹命名空间,例如这样:, (*15)

    // routes/web.php
      Route::group(['namespace' => 'App\\Http\\Controllers'], function () {
          William\\SomePackage\\Router::route();
      });
      // 这样是**不对的**,会导致最终调用的是
      // App\Http\Controllers\William\SomePackage\Router::route()
      

具体修改:

  1. 修改 app/Providers/RouteServiceProvider.php
class RouteServiceProvider extends ServiceProvider
{
    /**
     * This namespace is applied to your controller routes.
     *
     * In addition, it is set as the URL generator's root namespace.
     *
     * @var string
     */
    protected $namespace = 'App\Http\Controllers';
    // 修改为
    protected $namespace = '';
    ...
}

配置路由规则

  1. 修改 routes/web.php,增加:, (*16)

    \Goodwong\User\Router::route();
    

    当然你也可以嵌套prefixmiddleware, (*17)

    Route::group(['prefix' => '/auth'], function () {
        \Goodwong\User\Router::route();
    });
    

    但是不可以嵌套~~namespace~~,例如这样:, (*18)

    // 这样是错误的
    Route::group(['namespace' => 'App\\Http\\Controllers'], function () {
        \Goodwong\User\Router::route();
    });
    

ROADMAP

  1. 增加更多事件, (*19)

    • UserLogouted
  2. 注册用户, (*20)

  3. 管理用户, (*21)

  4. 支持非cookie的登录方案(用于app、微信小程序), (*22)

The Versions

28/08 2017

dev-master

9999999-dev

将用户独立出一个模块,以提高代码可复用性

  Sources   Download

MIT

09/05 2017

v1.0.4

1.0.4.0

将用户独立出一个模块,以提高代码可复用性

  Sources   Download

MIT

09/05 2017

v1.0.3

1.0.3.0

将用户独立出一个模块,以提高代码可复用性

  Sources   Download

MIT

09/05 2017

v1.0.2

1.0.2.0

将用户独立出一个模块,以提高代码可复用性

  Sources   Download

MIT

09/05 2017

v1.0.1

1.0.1.0

将用户独立出一个模块,以提高代码可复用性

  Sources   Download

MIT

09/05 2017

v1.0.0

1.0.0.0

将用户独立出一个模块,以提高代码可复用性

  Sources   Download

MIT