diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 0727ba7..9f8bce6 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -70,7 +70,9 @@ class LoginController extends Controller /** * ログインリクエストのバリデーション - * Laravel 12変更点:ope_id, ope_passフィールドを使用(Laravel 5.7と同じ) + * + * 仕様上の入力名(フォーム側)は ope_id / ope_pass のまま維持し、 + * 内部の認証キーは login_id に寄せる(login_id 統一)。 * * @param \Illuminate\Http\Request $request * @return void @@ -79,10 +81,10 @@ class LoginController extends Controller { // 個別未入力メッセージ(仕様1,2) $request->validate([ - 'ope_id' => 'required|string', + 'ope_id' => 'required|string', // フォームの入力名は現状維持(実体は login_id) 'ope_pass' => 'required|string', ], [ - 'ope_id.required' => 'ログインIDが未入力です。', + 'ope_id.required' => 'ログインIDが未入力です。', 'ope_pass.required' => 'パスワードが未入力です。', ]); } @@ -90,36 +92,46 @@ class LoginController extends Controller /** * ログイン認証を試行 * + * + * - 画面入力(ope_id)= DBの login_id として扱う + * - 退職フラグチェックも login_id で取得して判定する + * * @param \Illuminate\Http\Request $request * @return bool */ protected function attemptLogin(Request $request) { // 先にIDのみでオペレータ取得して退職フラグを確認(仕様5-1) - $opeId = $request->input('ope_id'); - $operator = \App\Models\Ope::where('ope_id', $opeId)->first(); + $loginId = $request->input('ope_id'); // 入力名は ope_id だが中身は login_id + $operator = \App\Models\Ope::where('login_id', $loginId)->first(); + if ($operator && (int)($operator->ope_quit_flag) === 1) { // 退職扱いは認証失敗と同じメッセージ(仕様5-1 と 3/4 統一表示) return false; } + + // 認証実行(credentials() で login_id / password を渡す) return Auth::attempt($this->credentials($request), false); } /** * 認証用の資格情報を取得 - * Laravel 12変更点:ope_idとope_passをpasswordフィールドにマッピング + * + * + * - 認証IDを login_id に統一 + * - パスワード入力(ope_pass)は Auth 側の password にマッピング * * @param \Illuminate\Http\Request $request * @return array */ protected function credentials(Request $request) { - // Laravel 5.7: ope_id, ope_passをそのまま使用 - // Laravel 12: ope_passをpasswordにマッピングして認証 - return $request->only('ope_id') + ['password' => $request->input('ope_pass')]; + return [ + 'login_id' => $request->input('ope_id'), // フォーム入力(ope_id)→ DB列 login_id + 'password' => $request->input('ope_pass'), // フォーム入力(ope_pass)→ 認証用 password + ]; } - /** * ログイン成功時のレスポンス * @@ -130,8 +142,11 @@ class LoginController extends Controller { $request->session()->regenerate(); $this->clearLoginAttempts($request); + // 仕様5: ログインIDをセッション保持 + // ここで保持する値も login_id(入力名は ope_id のまま) $request->session()->put('login_ope_id', $request->input('ope_id')); + return redirect()->intended($this->redirectTo); } @@ -143,6 +158,7 @@ class LoginController extends Controller */ protected function sendFailedLoginResponse(Request $request) { + // 画面側のエラー表示キーは仕様に合わせて ope_id のまま throw ValidationException::withMessages([ 'ope_id' => [trans('auth.failed')], ]); @@ -176,7 +192,8 @@ class LoginController extends Controller protected function hasTooManyLoginAttempts(Request $request) { return RateLimiter::tooManyAttempts( - $this->throttleKey($request), 5 + $this->throttleKey($request), + 5 ); } @@ -189,7 +206,8 @@ class LoginController extends Controller protected function incrementLoginAttempts(Request $request) { RateLimiter::hit( - $this->throttleKey($request), 60 + $this->throttleKey($request), + 60 ); } @@ -218,12 +236,16 @@ class LoginController extends Controller /** * レート制限用のスロットルキーを取得 * + * + * - 画面入力名は ope_id のまま + * - ただし内容は login_id を想定(ログインID文字列) + * * @param \Illuminate\Http\Request $request * @return string */ protected function throttleKey(Request $request) { - return Str::lower($request->input('ope_id')).'|'.$request->ip(); + return Str::lower($request->input('ope_id')) . '|' . $request->ip(); } /** @@ -238,8 +260,9 @@ class LoginController extends Controller $this->throttleKey($request) ); + // 画面側のエラー表示キーは仕様に合わせて ope_id のまま throw ValidationException::withMessages([ 'ope_id' => [trans('auth.throttle', ['seconds' => $seconds])], ]); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php index 6e1a896..815e80f 100644 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -41,6 +41,7 @@ class ResetPasswordController extends Controller return back()->withErrors(['email' => 'ユーザーが見つかりません。']); } $user->password = Hash::make($request->password); + $user->updated_at = now(); $user->save(); // トークン削除