validate(['email' => ['required', 'string', 'email']]); Password::sendResetLink($request->only('email')); return response()->json(['message' => __('messages.password_reset_link_sent')]); } /** * Confirma el restablecimiento con el token del email. Si sale bien, * cierra todas las sesiones OAuth activas de la cuenta — el motivo más * común para resetear una contraseña es sospechar que se filtró, así * que no tiene sentido dejar vigente lo que se emitió con la vieja. */ public function resetPassword(Request $request) { $data = $request->validate([ 'token' => ['required', 'string'], 'email' => ['required', 'string', 'email'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); $status = Password::reset( $data, function (User $user, string $password) use ($request) { $user->forceFill(['password' => Hash::make($password)])->save(); $revoked = UserSessions::revokeAll($user); AuditLog::record($request, 'user.password_reset', 'user', $user->id, $user->email, [ 'sessions_revoked' => $revoked, ]); } ); if ($status !== Password::PASSWORD_RESET) { throw ValidationException::withMessages(['email' => __($status)]); } return response()->noContent(); } }