krgm.so-manager-dev.com/app/Http/Controllers/Auth/ResetPasswordController.php
OU.ZAIKOU 6aa82dde3b
All checks were successful
Deploy main / deploy (push) Successful in 22s
【定期パスワード変更】実装
2026-01-27 01:13:17 +09:00

55 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use App\Models\Ope;
class ResetPasswordController extends Controller
{
public function showResetForm(Request $request)
{
$token = $request->query('token');
$email = $request->query('email');
return view('auth.reset-password', compact('token', 'email'));
}
public function reset(Request $request)
{
$request->validate([
'email' => 'required|email',
'token' => 'required',
'password' => 'required|confirmed|min:8',
]);
// トークンチェック
$record = DB::table('password_reset_tokens')
->where('ope_mail', $request->email)
->where('token', $request->token)
->first();
if (!$record) {
return back()->withErrors(['email' => '無効なトークンまたはメールアドレスです。']);
}
// パスワード更新
$user = Ope::where('ope_mail', $request->email)->first();
if (!$user) {
return back()->withErrors(['email' => 'ユーザーが見つかりません。']);
}
$user->password = Hash::make($request->password);
$user->updated_at = now();
// パスワード再設定時もope_pass_changed_atを更新
$user->ope_pass_changed_at = now();
$user->save();
// トークン削除
DB::table('password_reset_tokens')->where('ope_mail', $request->email)->delete();
// パスワード再設定成功画面へリダイレクト
return redirect()->route('password.change.success');
}
}