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