lms/app/Http/Controllers/Auth/VerifyEmailController.php
Ahmed Darrazi 4aa98c1921
All checks were successful
Build & Push Docker Image / docker (push) Successful in 1m48s
lang bugfix
2025-12-18 20:59:36 +01:00

56 lines
1.6 KiB
PHP

<?php
namespace App\Http\Controllers\Auth;
use App\Enums\UserType;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Auth\Events\Verified;
use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Password;
class VerifyEmailController extends Controller
{
/**
* Mark the user's email address as verified via signed link.
*/
public function __invoke(Request $request): RedirectResponse
{
$user = User::find($request->route('id'));
if (!$user) {
abort(404);
}
if (!hash_equals(sha1($user->getEmailForVerification()), (string) $request->route('hash'))) {
abort(403);
}
if (!$user->hasVerifiedEmail()) {
$user->markEmailAsVerified();
event(new Verified($user));
}
if ($request->boolean('invite')) {
$token = Password::createToken($user);
return redirect()->route('password.reset', [
'token' => $token,
'email' => $user->email,
], absolute: false);
}
if (Auth::check()) {
$redirect = Auth::user()->role === UserType::STUDENT->value
? route('student.index', ['tab' => 'courses'], absolute: false)
: route('dashboard', absolute: false);
return redirect()->intended($redirect . '?verified=1');
}
return redirect()->route('login')->with('status', __('auth.email_verified_successfully'));
}
}