Ongeldige Uitnodiging

Deze uitnodigingslink is ongeldig, verlopen of al eerder gebruikt.

Naar Inloggen
"); } $error = null; if (empty($_SESSION['invite_totp_secret'])) { $_SESSION['invite_totp_secret'] = TOTP::generateSecret(16); } $secret = $_SESSION['invite_totp_secret']; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $name = trim($_POST['name'] ?? ''); $password = $_POST['password'] ?? ''; $confirmPassword = $_POST['confirm_password'] ?? ''; $totpCode = trim($_POST['totp_code'] ?? ''); if (empty($name) || empty($password) || empty($totpCode)) { $error = "Alle velden (inclusief 2FA verificatiecode) zijn verplicht."; } elseif (strlen($password) < 8) { $error = "Het wachtwoord moet minimaal 8 tekens lang zijn."; } elseif ($password !== $confirmPassword) { $error = "Wachtwoorden komen niet overeen."; } elseif (!TOTP::verifyCode($secret, $totpCode)) { $error = "Ongeldige 2FA verificatiecode. Controleer de tijd op uw smartphone."; } else { try { $db = get_db_connection(); $passwordHash = password_hash($password, PASSWORD_DEFAULT); $backupCodes = TOTP::generateBackupCodes(8); $db->beginTransaction(); // 1. Maak gebruiker aan $stmt = $db->prepare(" INSERT INTO users (name, email, password_hash, role, two_factor_secret, two_factor_enabled, backup_codes) VALUES (?, ?, ?, ?, ?, 1, ?) "); $stmt->execute([ $name, $invite['email'], $passwordHash, $invite['role'], $secret, json_encode($backupCodes) ]); $newUserId = (int)$db->lastInsertId(); // 2. Markeer invite als gebruikt $stmtInvite = $db->prepare("UPDATE invites SET used_at = NOW() WHERE id = ?"); $stmtInvite->execute([$invite['id']]); $db->commit(); // Start sessie $_SESSION['user_id'] = $newUserId; $_SESSION['user_name'] = $name; $_SESSION['user_email'] = $invite['email']; $_SESSION['user_role'] = $invite['role']; $_SESSION['is_2fa_verified'] = true; issue_remember_token($newUserId); unset($_SESSION['invite_totp_secret']); header('Location: /planner.php'); exit; } catch (Exception $e) { if ($db->inTransaction()) $db->rollBack(); $error = "Fout bij registreren: " . $e->getMessage(); } } } $otpAuthUrl = TOTP::getOtpAuthUrl($invite['email'], $secret, 'Fociz'); $qrCodeUrl = TOTP::getQrCodeUrl($otpAuthUrl, 180); $pageTitle = "Fociz — Uitnodiging Accepteren"; ?> <?= htmlspecialchars($pageTitle) ?>

Welkom bij Fociz

Uitgenodigd door voor

Verplichte Tweestapsverificatie (2FA)

Scan deze QR-code in uw authenticator app (Google Authenticator, Microsoft Authenticator of 1Password):

2FA QR Code
Sleutel: