aboutsummaryrefslogtreecommitdiffhomepage
path: root/routes
diff options
context:
space:
mode:
authorwinter2025-05-11 20:25:11 +0100
committerwinter2025-05-11 20:25:11 +0100
commit07d1f1236c11b4261ab2b954a91278711a24901c (patch)
treedc52072e468ec6a5980cbe6894459e8623441025 /routes
parent5d7a4605bd0bd71949a37139eccfbf8a70d0c32e (diff)
sql console in admin menu + other misc
Diffstat (limited to 'routes')
-rw-r--r--routes/admin.php22
-rw-r--r--routes/auth.php2
2 files changed, 23 insertions, 1 deletions
diff --git a/routes/admin.php b/routes/admin.php
index 82981c9..20c6ee5 100644
--- a/routes/admin.php
+++ b/routes/admin.php
@@ -1,5 +1,6 @@
<?php
+use Digitigrade\Db;
use Digitigrade\GlobalSettings;
use Digitigrade\HttpResponseStatus\NotFound;
use Digitigrade\HttpResponseStatus\TemporaryRedirect;
@@ -58,4 +59,25 @@ Router::getInstance()->mount('/fragment/admin/plugins/download', function (array
$success = true;
}
render_template('admin/plugin_download_form', ['success' => $success]);
+});
+
+Router::getInstance()->mount('/admin/sql-console', function (array $args) {
+ UserAccount::requireByCurrentSession()->requireAdmin();
+ render_template('admin/sql_console_page');
+});
+
+Router::getInstance()->mount('/fragment/admin/sql-console/query', function (array $args) {
+ UserAccount::requireByCurrentSession()->requireAdmin();
+ $results = null;
+ $error = null;
+ if (isset($_POST['query'])) {
+ try {
+ $pdo = Db::getInstance()->getPdo();
+ $query = $pdo->query($_POST['query'], PDO::FETCH_ASSOC);
+ $results = $query->fetchAll();
+ } catch (\PDOException $e) {
+ $error = $e;
+ }
+ }
+ render_template('admin/sql_console_form', ['results' => $results, 'error' => $error]);
}); \ No newline at end of file
diff --git a/routes/auth.php b/routes/auth.php
index b03ee52..f18d4e7 100644
--- a/routes/auth.php
+++ b/routes/auth.php
@@ -20,7 +20,7 @@ Router::getInstance()->mount('/auth/main', function (array $args) {
throw new BadRequest('you need to specify the `target` GET parameter');
}
$domain = hostname_from_uri($_GET['target']);
- $instance = Instance::findByHostname($domain);
+ $instance = Instance::findByHostname($domain, forceRefetch: true);
if ($instance == null) {
throw new RuntimeException("i can't find your instance information, sorry");
}