ログイン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
* @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,6 +260,7 @@ class LoginController extends Controller
$this->throttleKey($request)
);
// 画面側のエラー表示キーは仕様に合わせて ope_id のまま
throw ValidationException::withMessages([
'ope_id' => [trans('auth.throttle', ['seconds' => $seconds])],
]);

View File

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