summaryrefslogtreecommitdiff
path: root/src/application/mystic/forum/utils/RequestUtils.php
diff options
context:
space:
mode:
authorJonas Kohl <git@jonaskohl.de>2024-09-12 19:49:17 +0200
committerJonas Kohl <git@jonaskohl.de>2024-09-12 19:49:17 +0200
commit086e2d2668784469ec114f6e6fd2b3dace3d7c3b (patch)
treeb9bacedb713501d88d24085940267a7c94e69b29 /src/application/mystic/forum/utils/RequestUtils.php
parent34b1b391d4b03659a96f868857c230002b351514 (diff)
Way more progress on forum
Diffstat (limited to 'src/application/mystic/forum/utils/RequestUtils.php')
-rw-r--r--src/application/mystic/forum/utils/RequestUtils.php77
1 files changed, 73 insertions, 4 deletions
diff --git a/src/application/mystic/forum/utils/RequestUtils.php b/src/application/mystic/forum/utils/RequestUtils.php
index 2f40013..f6ce3a3 100644
--- a/src/application/mystic/forum/utils/RequestUtils.php
+++ b/src/application/mystic/forum/utils/RequestUtils.php
@@ -3,17 +3,86 @@ declare(strict_types=1);
namespace mystic\forum\utils;
+use mystic\forum\Database;
use mystic\forum\Messaging;
+use mystic\forum\orm\User;
final class RequestUtils {
use StaticClass;
+ public static function getRequestMethod(): string {
+ return strtoupper($_SERVER["REQUEST_METHOD"] ?? "GET");
+ }
+
+ public static function isRequestMethod(string $method): bool {
+ $rMethod = self::getRequestMethod();
+ return strcasecmp($rMethod, $method) === 0;
+ }
+
public static function ensureRequestMethod(string $method): void {
- $rMethod = $_SERVER["REQUEST_METHOD"];
- if (strcasecmp($rMethod, $method) !== 0) {
- http_response_code(500);
- Messaging::error("Invalid request method $rMethod");
+ if (!self::isRequestMethod($method)) {
+ http_response_code(415);
+ Messaging::error("Invalid request method " . self::getRequestMethod());
+ exit;
+ }
+ }
+
+ public static function getRequiredField(string $field): string {
+ $fieldValue = $_POST[$field] ?? null;
+ if ($fieldValue === null) {
+ http_response_code(400);
+ Messaging::error("Missing required field $field");
exit;
}
+ return $fieldValue;
+ }
+
+ public static function storeForm(): void {
+ $_SESSION["lastForm"] = $_POST ?? [];
+ $_SESSION["lastForm_uri"] = $_SERVER["REQUEST_URI"];
+ }
+
+ public static function triggerFormError(string $message, ?string $next = null): never {
+ $next ??= $_SERVER["REQUEST_URI"];
+ $_SESSION["formError"] = $message;
+ // store last form submission
+ self::storeForm();
+ header("Location: $next");
+ exit;
+ }
+
+ public static function getAndClearFormError(): ?string {
+ $err = $_SESSION["formError"] ?? null;
+ unset($_SESSION["formError"]);
+ return $err;
+ }
+
+ public static function getLastForm(string &$lastFormUri): ?array {
+ $lastFormUri = $_SESSION["lastForm_uri"] ?? "";
+ return $_SESSION["lastForm"] ?? null;
+ }
+
+ public static function clearLastForm(): void {
+ unset($_SESSION["lastForm"]);
+ unset($_SESSION["lastForm_uri"]);
+ }
+
+ public static function getAuthorizedUser(Database &$db): ?User {
+ $userId = $_SESSION["authedUser"] ?? null;
+ if ($userId === null)
+ return null;
+ $user = new User();
+ $user->id = $userId;
+ if (!$db->fetch($user))
+ return null;
+ return $user;
+ }
+
+ public static function setAuthorizedUser(User &$user): void {
+ $_SESSION["authedUser"] = $user->id;
+ }
+
+ public static function unsetAuthorizedUser(): void {
+ unset($_SESSION["authedUser"]);
}
}