summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-10-26 18:07:02 +0500
committerilotterytea <iltsu@alright.party>2025-10-26 18:07:02 +0500
commita8a338599b3d891ee72a48a5f01f25c1ded31f21 (patch)
tree87551e161b5070da1ee87eecf4c0d9c5f4af3c47
parentd3baca2f2df52d78566024c26f694d1f26693b25 (diff)
feat: authenticate users
-rw-r--r--database.sql10
-rw-r--r--lib/users.php32
2 files changed, 42 insertions, 0 deletions
diff --git a/database.sql b/database.sql
index 4ca7639..42a6b50 100644
--- a/database.sql
+++ b/database.sql
@@ -5,6 +5,16 @@ CREATE TABLE IF NOT EXISTS users (
joined_at TIMESTAMP NOT NULL DEFAULT UTC_TIMESTAMP
);
+CREATE TABLE IF NOT EXISTS user_connections (
+ id BIGINT PRIMARY KEY AUTO_INCREMENT,
+ user_id BIGINT NOT NULL REFERENCES users(id),
+ user_alias_id TEXT NOT NULL,
+ user_alias_name TEXT NOT NULL,
+ platform TEXT NOT NULL,
+ connected_at TIMESTAMP NOT NULL DEFAULT UTC_TIMESTAMP,
+ UNIQUE (platform, user_id)
+);
+
CREATE TABLE IF NOT EXISTS sounds (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
code TEXT NOT NULL,
diff --git a/lib/users.php b/lib/users.php
new file mode 100644
index 0000000..e454a72
--- /dev/null
+++ b/lib/users.php
@@ -0,0 +1,32 @@
+<?php
+include_once $_SERVER['DOCUMENT_ROOT'] . '/lib/config.php';
+
+function authenticate_user(): bool
+{
+ session_start();
+ if (!isset($_COOKIE['SECRET_TINYSOUNDS_KEY'])) {
+ unset($_SESSION['user']);
+ return false;
+ }
+
+ $db = new PDO(DB_URL, DB_USER, DB_PASS);
+
+ $stmt = $db->prepare('SELECT * FROM users WHERE token = ?');
+ $stmt->execute([$_COOKIE['SECRET_TINYSOUNDS_KEY']]);
+
+ $user = $stmt->fetch(PDO::FETCH_ASSOC) ?: null;
+
+ if (!$user) {
+ unset($_COOKIE['SECRET_TINYSOUNDS_KEY']);
+ unset($_SESSION['user']);
+ return false;
+ }
+
+ $stmt = $db->prepare('SELECT * FROM user_connections WHERE user_id = ?');
+ $stmt->execute([$user['id']]);
+
+ $user['connections'] = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ $_SESSION['user'] = $user;
+ return true;
+} \ No newline at end of file