diff --git a/assets/pasted-20260217-232157-017555a6.png b/assets/pasted-20260217-232157-017555a6.png new file mode 100644 index 0000000..7489531 Binary files /dev/null and b/assets/pasted-20260217-232157-017555a6.png differ diff --git a/assets/pasted-20260217-232953-088c1965.png b/assets/pasted-20260217-232953-088c1965.png new file mode 100644 index 0000000..ee0e85c Binary files /dev/null and b/assets/pasted-20260217-232953-088c1965.png differ diff --git a/auth/register.php b/auth/register.php index c0ba2b4..2feab09 100644 --- a/auth/register.php +++ b/auth/register.php @@ -1,4 +1,7 @@ prepare("INSERT INTO users (username, display_name, email, password_hash) VALUES (?, ?, ?, ?)"); - $stmt->execute([$username, $username, $email, $hash]); - $userId = db()->lastInsertId(); - - // Add to default server - $stmt = db()->prepare("INSERT IGNORE INTO server_members (server_id, user_id) VALUES (1, ?)"); - $stmt->execute([$userId]); + // Strict invite code validation (Private by default) + $requireInvite = true; + if (defined('REQUIRE_INVITE_CODE')) { + $requireInvite = REQUIRE_INVITE_CODE; + } - $_SESSION['user_id'] = $userId; - header('Location: ../index.php'); - exit; - } catch (Exception $e) { - $error = "Registration failed: " . $e->getMessage(); + if ($requireInvite) { + if (empty($inviteCode)) { + $error = "An invitation code is required to register."; + } else { + $stmt = db()->prepare("SELECT id FROM servers WHERE invite_code = ?"); + $stmt->execute([$inviteCode]); + $server = $stmt->fetch(); + if (!$server) { + $error = "Invalid invitation code."; + } + } + } + + if (!$error) { + $hash = password_hash($password, PASSWORD_DEFAULT); + try { + $stmt = db()->prepare("INSERT INTO users (username, display_name, email, password_hash) VALUES (?, ?, ?, ?)"); + $stmt->execute([$username, $username, $email, $hash]); + $userId = db()->lastInsertId(); + + // Add to default server or the one from invite code + $serverId = 1; // Default + if (isset($server) && $server) { + $serverId = $server['id']; + } + + $stmt = db()->prepare("INSERT IGNORE INTO server_members (server_id, user_id) VALUES (?, ?)"); + $stmt->execute([$serverId, $userId]); + + $_SESSION['user_id'] = $userId; + header('Location: ../index.php'); + exit; + } catch (Exception $e) { + $error = "Registration failed: " . $e->getMessage(); + } } } else { $error = "Please fill all fields."; @@ -48,13 +78,20 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { .auth-footer a { color: #00a8fc; text-decoration: none; } -
+