Skip to content

Commit c45f48e

Browse files
committed
Adding updates to the Verify Email Functionality
1 parent a994387 commit c45f48e

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

app/Http/Controllers/Auth/VerifyEmailController.php

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,39 @@
33
namespace App\Http\Controllers\Auth;
44

55
use App\Http\Controllers\Controller;
6+
use App\Models\User;
67
use Illuminate\Auth\Events\Verified;
7-
use Illuminate\Foundation\Auth\EmailVerificationRequest;
8+
use Illuminate\Http\Request;
89
use Illuminate\Http\RedirectResponse;
10+
use Illuminate\Support\Facades\Auth;
911

1012
class VerifyEmailController extends Controller
1113
{
1214
/**
1315
* Mark the authenticated user's email address as verified.
1416
*/
15-
public function __invoke(EmailVerificationRequest $request): RedirectResponse
17+
public function __invoke(Request $request, int $id, string $hash): RedirectResponse
1618
{
17-
if ($request->user()->hasVerifiedEmail()) {
18-
return redirect()->intended(route('dashboard', absolute: false).'?verified=1');
19+
if (! $request->hasValidSignature()) {
20+
abort(403, 'Invalid or expired verification link.');
1921
}
20-
21-
if ($request->user()->markEmailAsVerified()) {
22-
/** @var \Illuminate\Contracts\Auth\MustVerifyEmail $user */
23-
$user = $request->user();
22+
23+
$user = User::findOrFail($id);
24+
25+
if (! hash_equals($hash, sha1($user->getEmailForVerification()))) {
26+
abort(403, 'Invalid verification hash.');
27+
}
28+
29+
// Now you can verify the email
30+
if (! $user->hasVerifiedEmail()) {
31+
$user->markEmailAsVerified();
32+
33+
// Fire event when email is verified
2434
event(new Verified($user));
2535
}
36+
37+
// Always log the user in, regardless of verification status
38+
Auth::login($user);
2639

2740
return redirect()->intended(route('dashboard', absolute: false).'?verified=1');
2841
}

0 commit comments

Comments
 (0)