ログインIDは「ope_id」⇒「login_id」に変更
All checks were successful
Deploy main / deploy (push) Successful in 25s

This commit is contained in:
你的名字 2026-01-06 18:37:45 +09:00
parent e7d517edff
commit 96c72b9bda
2 changed files with 38 additions and 14 deletions

View File

@ -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 * @param \Illuminate\Http\Request $request
* @return void * @return void
@ -79,7 +81,7 @@ class LoginController extends Controller
{ {
// 個別未入力メッセージ仕様1,2 // 個別未入力メッセージ仕様1,2
$request->validate([ $request->validate([
'ope_id' => 'required|string', 'ope_id' => 'required|string', // フォームの入力名は現状維持(実体は login_id
'ope_pass' => 'required|string', 'ope_pass' => 'required|string',
], [ ], [
'ope_id.required' => 'ログインIDが未入力です。', 'ope_id.required' => 'ログインIDが未入力です。',
@ -90,36 +92,46 @@ class LoginController extends Controller
/** /**
* ログイン認証を試行 * ログイン認証を試行
* *
*
* - 画面入力ope_id= DBの login_id として扱う
* - 退職フラグチェックも login_id で取得して判定する
*
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return bool * @return bool
*/ */
protected function attemptLogin(Request $request) protected function attemptLogin(Request $request)
{ {
// 先にIDのみでオペレータ取得して退職フラグを確認仕様5-1 // 先にIDのみでオペレータ取得して退職フラグを確認仕様5-1
$opeId = $request->input('ope_id'); $loginId = $request->input('ope_id'); // 入力名は ope_id だが中身は login_id
$operator = \App\Models\Ope::where('ope_id', $opeId)->first(); $operator = \App\Models\Ope::where('login_id', $loginId)->first();
if ($operator && (int)($operator->ope_quit_flag) === 1) { if ($operator && (int)($operator->ope_quit_flag) === 1) {
// 退職扱いは認証失敗と同じメッセージ仕様5-1 と 3/4 統一表示) // 退職扱いは認証失敗と同じメッセージ仕様5-1 と 3/4 統一表示)
return false; return false;
} }
// 認証実行credentials() で login_id / password を渡す)
return Auth::attempt($this->credentials($request), false); 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 * @param \Illuminate\Http\Request $request
* @return array * @return array
*/ */
protected function credentials(Request $request) protected function credentials(Request $request)
{ {
// Laravel 5.7: ope_id, ope_passをそのまま使用 return [
// Laravel 12: ope_passをpasswordにマッピングして認証 'login_id' => $request->input('ope_id'), // フォーム入力ope_id→ DB列 login_id
return $request->only('ope_id') + ['password' => $request->input('ope_pass')]; 'password' => $request->input('ope_pass'), // フォーム入力ope_pass→ 認証用 password
];
} }
/** /**
* ログイン成功時のレスポンス * ログイン成功時のレスポンス
* *
@ -130,8 +142,11 @@ class LoginController extends Controller
{ {
$request->session()->regenerate(); $request->session()->regenerate();
$this->clearLoginAttempts($request); $this->clearLoginAttempts($request);
// 仕様5: ログインIDをセッション保持 // 仕様5: ログインIDをセッション保持
// ここで保持する値も login_id入力名は ope_id のまま)
$request->session()->put('login_ope_id', $request->input('ope_id')); $request->session()->put('login_ope_id', $request->input('ope_id'));
return redirect()->intended($this->redirectTo); return redirect()->intended($this->redirectTo);
} }
@ -143,6 +158,7 @@ class LoginController extends Controller
*/ */
protected function sendFailedLoginResponse(Request $request) protected function sendFailedLoginResponse(Request $request)
{ {
// 画面側のエラー表示キーは仕様に合わせて ope_id のまま
throw ValidationException::withMessages([ throw ValidationException::withMessages([
'ope_id' => [trans('auth.failed')], 'ope_id' => [trans('auth.failed')],
]); ]);
@ -176,7 +192,8 @@ class LoginController extends Controller
protected function hasTooManyLoginAttempts(Request $request) protected function hasTooManyLoginAttempts(Request $request)
{ {
return RateLimiter::tooManyAttempts( return RateLimiter::tooManyAttempts(
$this->throttleKey($request), 5 $this->throttleKey($request),
5
); );
} }
@ -189,7 +206,8 @@ class LoginController extends Controller
protected function incrementLoginAttempts(Request $request) protected function incrementLoginAttempts(Request $request)
{ {
RateLimiter::hit( RateLimiter::hit(
$this->throttleKey($request), 60 $this->throttleKey($request),
60
); );
} }
@ -218,6 +236,10 @@ class LoginController extends Controller
/** /**
* レート制限用のスロットルキーを取得 * レート制限用のスロットルキーを取得
* *
*
* - 画面入力名は ope_id のまま
* - ただし内容は login_id を想定ログインID文字列
*
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return string * @return string
*/ */
@ -238,6 +260,7 @@ class LoginController extends Controller
$this->throttleKey($request) $this->throttleKey($request)
); );
// 画面側のエラー表示キーは仕様に合わせて ope_id のまま
throw ValidationException::withMessages([ throw ValidationException::withMessages([
'ope_id' => [trans('auth.throttle', ['seconds' => $seconds])], 'ope_id' => [trans('auth.throttle', ['seconds' => $seconds])],
]); ]);

View File

@ -41,6 +41,7 @@ class ResetPasswordController extends Controller
return back()->withErrors(['email' => 'ユーザーが見つかりません。']); return back()->withErrors(['email' => 'ユーザーが見つかりません。']);
} }
$user->password = Hash::make($request->password); $user->password = Hash::make($request->password);
$user->updated_at = now();
$user->save(); $user->save();
// トークン削除 // トークン削除