From b516b526baa762026156fbc581a8da6158e6a771 Mon Sep 17 00:00:00 2001
From: Sundog
Date: Mon, 1 Jul 2024 11:10:33 -0400
Subject: [PATCH] first pass at /api/me endpoint, adds auth redirect to play
---
src/webserver/api/me.php | 90 ++++++++++++++++++++++++++++++++++++
src/webserver/auth/login.php | 14 ++++--
src/webserver/play/index.php | 5 ++
3 files changed, 106 insertions(+), 3 deletions(-)
create mode 100644 src/webserver/api/me.php
diff --git a/src/webserver/api/me.php b/src/webserver/api/me.php
new file mode 100644
index 0000000..8f5363c
--- /dev/null
+++ b/src/webserver/api/me.php
@@ -0,0 +1,90 @@
+prepare("SELECT * FROM Players p WHERE p.id = :player_id AND p.is_active = 1");
+ $player_query->bindValue(':player_id', $_SESSION['player_id']);
+ $player_result = $player_query->execute();
+
+ if ($player_result) {
+ $player_record = $player_result->fetchArray(SQLITE3_ASSOC);
+ }
+
+ // get player items
+ $items_query = $conn->prepare("SELECT * FROM PlayerItems pi JOIN Items i ON pi.item_id = i.id WHERE pi.player_id = :player_id");
+ $items_query->bindValue(':player_id', $_SESSION['player_id']);
+ $items_result = $items_query->execute();
+
+ if ($items_result) {
+ while ($items_record = $items_result->fetchArray(SQLITE3_ASSOC)) {
+ array_push($items, $items_record);
+ }
+ }
+
+ // get player NPCs
+ $npcs_query = $conn->prepare("SELECT * FROM PlayerNPCs pn WHERE pn.player_id = :player_id AND pn.is_active = 1");
+ $npcs_query->bindValue(':player_id', $_SESSION['player_id']);
+ $npcs_result = $npcs_query->execute();
+
+ if ($npcs_result) {
+ while ($npcs_record = $npcs_result->fetchArray(SQLITE3_ASSOC)) {
+ array_push($npcs, $npcs_record);
+ }
+ }
+
+ // get player NPC encounters
+ $encounters_query = $conn->prepare("SELECT * FROM PlayerEncounters pe WHERE pe.player_id = :player_id");
+ $encounters_query->bindValue(':player_id', $_SESSION['player_id']);
+ $encounters_result = $encounters_query->execute();
+
+ if ($encounters_result) {
+ while ($encounters_record = $encounters_result->fetchArray(SQLITE3_ASSOC)) {
+ array_push($encounters, $encounters_record);
+ }
+ }
+
+ // get player quests
+ $quests_query = $conn->prepare("SELECT * FROM PlayerQuests pq JOIN Quests q ON pq.quest_id = q.id WHERE pq.player_id = :player_id");
+ $quests_query->bindValue(':player_id', $_SESSION['player_id']);
+ $quests_result = $quests_query->execute();
+
+ if ($quests_result) {
+ while ($quests_record = $quests_result->fetchArray(SQLITE3_ASSOC)) {
+ array_push($quests, $quests_record);
+ }
+ }
+
+ // put it all together and return as JSON
+ $player = (object) [
+ 'id' => $player_record['id'],
+ 'nickname' => $player_record['nickname'],
+ 'items' => $items,
+ 'npcs' => $npcs,
+ 'encounters' => $encounters,
+ 'quests' => $quests
+ ];
+
+ header('Content-Type: application/json; charset=utf-8');
+ echo json_encode($player);
+ exit();
+ }
+?>
diff --git a/src/webserver/auth/login.php b/src/webserver/auth/login.php
index 67adc6c..ef4337c 100644
--- a/src/webserver/auth/login.php
+++ b/src/webserver/auth/login.php
@@ -46,9 +46,17 @@
echo "Register a new account, reset your password, or try again.
";
loginForm();
} else {
- echo "You are now logged in as " . $_SESSION['nickname'] . "
\n";
- echo "Play now
\n";
- echo "Log out
\n";
+ if (isset($_GET['redirect']) && $_GET['redirect'] == "play") {
+ ?>
+
+ You are now logged in as " . $_SESSION['nickname'] . "
\n";
+ echo "Play now
\n";
+ echo "Log out
\n";
+ }
}
}
diff --git a/src/webserver/play/index.php b/src/webserver/play/index.php
index f0a7a6a..f5a6b02 100644
--- a/src/webserver/play/index.php
+++ b/src/webserver/play/index.php
@@ -1,5 +1,10 @@