From 05c351eb393d49713a3a4ea88eec507a49ba1745 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Wed, 18 Feb 2026 14:13:08 +0000 Subject: [PATCH] Autosave: 20260218-141308 --- api_v1_servers.php | 29 ++++- assets/pasted-20260218-081927-02a8e8f5.png | Bin 0 -> 27926 bytes assets/pasted-20260218-090941-11404470.png | Bin 0 -> 62214 bytes auth/register.php | 58 ++++++--- data/22.participants.json | 2 +- data/3.log | 4 + data/3.participants.json | 2 +- db/config.php | 12 ++ index.php | 118 +++++++++++++++--- requests.log | 132 +++++++++++++++++++++ 10 files changed, 320 insertions(+), 37 deletions(-) create mode 100644 assets/pasted-20260218-081927-02a8e8f5.png create mode 100644 assets/pasted-20260218-090941-11404470.png diff --git a/api_v1_servers.php b/api_v1_servers.php index 05b064d..a857f4b 100644 --- a/api_v1_servers.php +++ b/api_v1_servers.php @@ -6,13 +6,33 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = $_POST['action'] ?? 'create'; $user_id = $_SESSION['user_id']; + if ($action === 'refresh_invite_code') { + header('Content-Type: application/json'); + $server_id = $_POST['server_id'] ?? 0; + require_once 'includes/permissions.php'; + if (Permissions::hasPermission($user_id, $server_id, Permissions::MANAGE_SERVER)) { + $new_code = generateSecureInviteCode(); + $expiry_ts = time() + 1800; // 30 minutes + $expires_at = date('Y-m-d H:i:s', $expiry_ts); + $stmt = db()->prepare("UPDATE servers SET invite_code = ?, invite_code_expires_at = ? WHERE id = ?"); + $stmt->execute([$new_code, $expires_at, $server_id]); + echo json_encode(['success' => true, 'invite_code' => $new_code, 'expires_at' => $expires_at, 'expiry_timestamp' => $expiry_ts]); + } else { + echo json_encode(['success' => false, 'error' => 'Permission denied']); + } + exit; + } + if ($action === 'join') { $invite_code = $_POST['invite_code'] ?? ''; - $stmt = db()->prepare("SELECT id FROM servers WHERE invite_code = ?"); + $stmt = db()->prepare("SELECT id, invite_code_expires_at FROM servers WHERE invite_code = ?"); $stmt->execute([$invite_code]); $server = $stmt->fetch(); if ($server) { + if (!empty($server['invite_code_expires_at']) && strtotime($server['invite_code_expires_at']) < time()) { + die("Invite code has expired."); + } $stmt = db()->prepare("INSERT IGNORE INTO server_members (server_id, user_id) VALUES (?, ?)"); $stmt->execute([$server['id'], $user_id]); header('Location: index.php?server_id=' . $server['id']); @@ -56,9 +76,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $db->beginTransaction(); // Create server - $invite_code = substr(strtoupper(md5(uniqid())), 0, 8); - $stmt = $db->prepare("INSERT INTO servers (name, owner_id, invite_code, icon_url) VALUES (?, ?, ?, ?)"); - $stmt->execute([$name, $user_id, $invite_code, $icon_url]); + $invite_code = generateSecureInviteCode(); + $expires_at = date('Y-m-d H:i:s', time() + 1800); + $stmt = $db->prepare("INSERT INTO servers (name, owner_id, invite_code, invite_code_expires_at, icon_url) VALUES (?, ?, ?, ?, ?)"); + $stmt->execute([$name, $user_id, $invite_code, $expires_at, $icon_url]); $server_id = $db->lastInsertId(); // Add owner as member diff --git a/assets/pasted-20260218-081927-02a8e8f5.png b/assets/pasted-20260218-081927-02a8e8f5.png new file mode 100644 index 0000000000000000000000000000000000000000..c435be2db0225ff75fcb5e34f78d16e4a9665af4 GIT binary patch literal 27926 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 literal 0 HcmV?d00001 diff --git a/assets/pasted-20260218-090941-11404470.png b/assets/pasted-20260218-090941-11404470.png new file mode 100644 index 0000000000000000000000000000000000000000..63a04bc8e0c080aabba660e76eb9bf36d81fdb3d GIT binary patch literal 62214 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 literal 0 HcmV?d00001 diff --git a/auth/register.php b/auth/register.php index c0ba2b4..2a1b5c0 100644 --- a/auth/register.php +++ b/auth/register.php @@ -6,23 +6,49 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = $_POST['username'] ?? ''; $email = $_POST['email'] ?? ''; $password = $_POST['password'] ?? ''; + $invite_code = $_POST['invite_code'] ?? ''; if ($username && $email && $password) { - $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 - $stmt = db()->prepare("INSERT IGNORE INTO server_members (server_id, user_id) VALUES (1, ?)"); - $stmt->execute([$userId]); + $target_server_id = 1; + $can_register = true; - $_SESSION['user_id'] = $userId; - header('Location: ../index.php'); - exit; - } catch (Exception $e) { - $error = "Registration failed: " . $e->getMessage(); + if (defined('PRIVATE_REGISTRATION') && PRIVATE_REGISTRATION && empty($invite_code)) { + $can_register = false; + $error = "Invite code is required for private registration."; + } + + if ($can_register && !empty($invite_code)) { + $stmt = db()->prepare("SELECT id, invite_code_expires_at FROM servers WHERE invite_code = ?"); + $stmt->execute([$invite_code]); + $server = $stmt->fetch(); + if (!$server) { + $can_register = false; + $error = "Invalid invite code."; + } elseif (!empty($server['invite_code_expires_at']) && strtotime($server['invite_code_expires_at']) < time()) { + $can_register = false; + $error = "Invite code has expired."; + } else { + $target_server_id = $server['id']; + } + } + + if ($can_register) { + $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 target server + $stmt = db()->prepare("INSERT IGNORE INTO server_members (server_id, user_id) VALUES (?, ?)"); + $stmt->execute([$target_server_id, $userId]); + + $_SESSION['user_id'] = $userId; + header('Location: ../index.php'); + exit; + } catch (Exception $e) { + $error = "Registration failed: " . $e->getMessage(); + } } } else { $error = "Please fill all fields."; @@ -67,6 +93,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { +
+ + > +

@@ -1997,15 +2085,16 @@ async function handleSaveUserSettings(btn) {
-
- Roles / Members -
-
-
- - -