Initialer Laravel Commit für BetiX
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled

This commit is contained in:
2026-04-04 18:01:50 +02:00
commit 0280278978
374 changed files with 65210 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Auth\Events\Verified;
class EmailVerificationCodeController extends Controller
{
/**
* Handle email verification via short code.
*/
public function __invoke(Request $request)
{
$request->validate([
'code' => ['required','string','regex:/^\d{6}$/'],
]);
$user = $request->user();
if (!$user) {
return redirect()->route('login');
}
if ($user->hasVerifiedEmail()) {
return redirect()->route('dashboard')->with('status', 'Email already verified.');
}
$cacheKey = 'email_verify_code:'.$user->getKey();
$expected = Cache::get($cacheKey);
// Normalize submitted code to digits-only string
$submitted = (string) $request->input('code', '');
$submitted = preg_replace('/\D+/', '', $submitted ?? '');
if (!$expected || $expected !== $submitted) {
return back()->withErrors(['code' => 'Invalid or expired verification code.']);
}
// Mark as verified and clear the code
if ($user->markEmailAsVerified()) {
event(new Verified($user));
}
Cache::forget($cacheKey);
return redirect()->route('dashboard')->with('status', 'Email verified successfully.');
}
}