Laravel Cartalyst Sentinel - 向用户表添加用户名列(正确的方法)

ark*_*Dev 7 php acl laravel cartalyst-sentinel

我已经进入了cartalyst/sentinel,并且我已经运行了生成表所需的迁移

php artisan migrate --package=cartalyst/sentinel
Run Code Online (Sandbox Code Playgroud)

我注意到这些是users表中可用的列

  1. ID
  2. 电子邮件
  3. 密码
  4. 权限
  5. 上次登录
  6. 名字
  7. created_at
  8. 的updated_at

我想在电子邮件后添加用户名.所以我创建了一个迁移文件.

//add a column username after email in the users table
$table->string('username')->after('email')->unique();
Run Code Online (Sandbox Code Playgroud)

现在我使用Sentinel :: register

$credentials = Input::all();
$user = Sentinel::register($credentials);
Run Code Online (Sandbox Code Playgroud)

用户名不会保存在表格中.所以我设法通过编辑vendor/cartalyst/sentinel/src/Users/EloquentUser.php来获取它.

protected $fillable = [
    'email',
    'username', /* i added this */
    'password',
    'last_name',
    'first_name',
    'permissions',
];
Run Code Online (Sandbox Code Playgroud)

现在这个工作,用户名存储在表中.但我想知道我在做什么是对的?我们不应该触摸packages文件夹中的文件.我们如何解决这个问题?

Ant*_*iro 12

几乎.您必须创建自己的用户clas,扩展vendor/cartalyst/sentinel/src/Users/EloquentUser.php:

use Cartalyst\Sentinel\Users\EloquentUser as CartalystUser;

class User extends CartalystUser {

    protected $fillable = [
        'email',
        'username', /* i added this */
        'password',
        'last_name',
        'first_name',
        'permissions',
    ];

}
Run Code Online (Sandbox Code Playgroud)

发布Sentinel的配置:

php artisan config:publish cartalyst/sentinel
Run Code Online (Sandbox Code Playgroud)

在配置文件中,将用户模型设置为您自己的模型:

'users' => [

    'model' => 'Your\Namespace\User',

],
Run Code Online (Sandbox Code Playgroud)