やりたいこと
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');
}
黄色の部分がポイントとなる。


コメント