- Laravel 13.9 + PHP 8.5 + MySQL - Bootstrap 5.3 + jQuery 3.7 + Chart.js (replacing Alpine/Tailwind) - Packages: intervention/image, dompdf, simple-qrcode, league/csv, laravel/breeze, laravel/boost - 17 database migrations: users, programs, qr_codes, participants, attendances, certificates, questionnaires, email_logs, audit_logs - 13 Eloquent models with full relationships - Admin layout (Bootstrap 5 sidebar) + public layout (mobile-first) - Rate limiters: checkin (60/min), certificate (30/min) - Admin seeder: admin@mbip.gov.my - Storage directories + symlink configured Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
46 lines
1.3 KiB
PHP
46 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Auth;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Password;
|
|
use Illuminate\Validation\ValidationException;
|
|
use Illuminate\View\View;
|
|
|
|
class PasswordResetLinkController extends Controller
|
|
{
|
|
/**
|
|
* Display the password reset link request view.
|
|
*/
|
|
public function create(): View
|
|
{
|
|
return view('auth.forgot-password');
|
|
}
|
|
|
|
/**
|
|
* Handle an incoming password reset link request.
|
|
*
|
|
* @throws ValidationException
|
|
*/
|
|
public function store(Request $request): RedirectResponse
|
|
{
|
|
$request->validate([
|
|
'email' => ['required', 'email'],
|
|
]);
|
|
|
|
// We will send the password reset link to this user. Once we have attempted
|
|
// to send the link, we will examine the response then see the message we
|
|
// need to show to the user. Finally, we'll send out a proper response.
|
|
$status = Password::sendResetLink(
|
|
$request->only('email')
|
|
);
|
|
|
|
return $status == Password::RESET_LINK_SENT
|
|
? back()->with('status', __($status))
|
|
: back()->withInput($request->only('email'))
|
|
->withErrors(['email' => __($status)]);
|
|
}
|
|
}
|