【Lalavel5.6】auth機能のカスタマイズ

Laravel

やりたいこと

Lalavel5.6のデフォルトの認証機能を使って、ユーザログインの実装を行う。

その際プロジェクトの方針で下記の仕様を実現する必要がある

  • auth機能に元からあるusersテーブルの名称変更
  • ログイン時に削除フラグなどをみて有効なユーザかを確認する

usersテーブルの名称変更

新しいテーブル用のモデルを作成しても良いが、影響を考えて既存のuserモデルで使用するテーブル名を変更してあげる。

app\User.php

class User extends Authenticatable
{
use Notifiable;

/**
  * 使用テーブル名
  * @var string
  */
protected $table = 'user_table';

簡単だがこれで既存のテーブルから「user_table」に向き先が変更できた。

※もともとusersテーブルにあった「remember_token」などはこちらのテーブルでも作成しておく。

ログイン時に削除フラグを確認する

次にログイン時に削除フラグといったステータス確認を追加する場合の処理は下記の通りとなる。

app\User.php

/**
  * The attributes that are mass assignable.
  *
  * @var array
  */
protected $fillable = [
    'loginid', 'user_name', 'password', 'mail', 'status_flg', 'create_user', 'update_user'
];
/**
  * The attributes that should be hidden for arrays.
  *
  * @var array
  */
protected $hidden = [
    'password', 'remember_token',
];

app\Http\Controllers\Auth\LoginController.php

/**
  * Get the login username to be used by the controller.
  *
  * @return string
  */
public function username()
{
    // 有効なユーザがログインできる
    request()->merge(['status_flg' => 0, 'deleted_at' => NULL]);
    return 'login_id';
}
protected function credentials(Request $request)
{
    return $request->only($this->username(), 'password', 'status_flg', 'deleted_at');
}

黄色の部分がポイントとなる。

コメント