diff options
Diffstat (limited to 'src/application/mystic/forum/utils/RequestUtils.php')
| -rw-r--r-- | src/application/mystic/forum/utils/RequestUtils.php | 77 | 
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"]);      }  } |