caching and redirection changes

This commit is contained in:
Michael Freno
2025-12-30 09:20:56 -05:00
parent 77b0b3655c
commit b07ebb05b7
4 changed files with 85 additions and 44 deletions

View File

@@ -1,20 +1,29 @@
import { Show } from "solid-js";
import { query } from "@solidjs/router";
import { query, redirect } from "@solidjs/router";
import { Title, Meta } from "@solidjs/meta";
import { createAsync } from "@solidjs/router";
import { getRequestEvent } from "solid-js/web";
import { getEvent } from "vinxi/http";
import PostForm from "~/components/blog/PostForm";
import "../post.css";
const getAuthState = query(async () => {
"use server";
const { getPrivilegeLevel, getUserID } = await import("~/server/utils");
const event = getRequestEvent()!;
const privilegeLevel = await getPrivilegeLevel(event.nativeEvent);
const userID = await getUserID(event.nativeEvent);
const event = getEvent()!;
const privilegeLevel = await getPrivilegeLevel(event);
const userID = await getUserID(event);
// Return 401 for non-admin users
if (privilegeLevel !== "admin") {
throw new Response("Unauthorized", { status: 401 });
}
return { privilegeLevel, userID };
}, "auth-state");
}, "create-post-auth");
export const route = {
load: () => getAuthState()
};
export default function CreatePost() {
const authState = createAsync(() => getAuthState());
@@ -27,20 +36,8 @@ export default function CreatePost() {
content="Create a new blog post with rich text editing, image uploads, and tag management."
/>
<Show
when={authState()?.privilegeLevel === "admin"}
fallback={
<div class="w-full pt-[30vh] text-center">
<div class="text-text text-2xl">Unauthorized</div>
<div class="text-subtext0 mt-4">
You must be an admin to create posts.
</div>
</div>
}
>
<Show when={authState()?.userID}>
<PostForm mode="create" userID={authState()!.userID} />
</Show>
<Show when={authState()?.userID}>
<PostForm mode="create" userID={authState()!.userID} />
</Show>
</>
);