ログインIDは「ope_id」⇒「login_id」に変更
All checks were successful
Deploy main / deploy (push) Successful in 25s
All checks were successful
Deploy main / deploy (push) Successful in 25s
This commit is contained in:
parent
e7d517edff
commit
96c72b9bda
@ -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])],
|
||||
]);
|
||||
|
||||
@ -41,6 +41,7 @@ class ResetPasswordController extends Controller
|
||||
return back()->withErrors(['email' => 'ユーザーが見つかりません。']);
|
||||
}
|
||||
$user->password = Hash::make($request->password);
|
||||
$user->updated_at = now();
|
||||
$user->save();
|
||||
|
||||
// トークン削除
|
||||
|
||||
Loading…
Reference in New Issue
Block a user