From cc590364e968bec62c62861f2450034e9574f76b Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 10 Oct 2025 19:49:59 -0400 Subject: [PATCH] wip: zen --- packages/console/app/src/routes/workspace-picker.tsx | 7 ++++--- packages/console/app/src/routes/workspace/[id].tsx | 6 +++--- packages/console/core/src/actor.ts | 2 +- packages/console/core/src/workspace.ts | 1 + 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/console/app/src/routes/workspace-picker.tsx b/packages/console/app/src/routes/workspace-picker.tsx index 51de4cef..34a54497 100644 --- a/packages/console/app/src/routes/workspace-picker.tsx +++ b/packages/console/app/src/routes/workspace-picker.tsx @@ -1,4 +1,4 @@ -import { query, useParams, action, createAsync, redirect } from "@solidjs/router" +import { query, useParams, action, createAsync, redirect, useSubmission } from "@solidjs/router" import { For, Show, createEffect, onCleanup } from "solid-js" import { createStore } from "solid-js/store" import { withActor } from "~/context/auth.withActor" @@ -42,6 +42,7 @@ const createWorkspace = action(async (form: FormData) => { export function WorkspacePicker() { const params = useParams() const workspaces = createAsync(() => getWorkspaces()) + const submission = useSubmission(createWorkspace) const [store, setStore] = createStore({ showForm: false, showDropdown: false, @@ -135,8 +136,8 @@ export function WorkspacePicker() { - diff --git a/packages/console/app/src/routes/workspace/[id].tsx b/packages/console/app/src/routes/workspace/[id].tsx index a28bf93b..8347cd49 100644 --- a/packages/console/app/src/routes/workspace/[id].tsx +++ b/packages/console/app/src/routes/workspace/[id].tsx @@ -24,10 +24,10 @@ export default function WorkspaceLayout(props: RouteSectionProps) { Billing + + Settings + - - Settings -
{props.children}
diff --git a/packages/console/core/src/actor.ts b/packages/console/core/src/actor.ts index e8d1b7a6..48f4a636 100644 --- a/packages/console/core/src/actor.ts +++ b/packages/console/core/src/actor.ts @@ -69,7 +69,7 @@ export namespace Actor { export const assertAdmin = () => { if (userRole() === "admin") return - throw new Error(`Expected admin user, got ${userRole()}`) + throw new Error(`Action not allowed. Ask your workspace admin to perform this action.`) } export function workspace() { diff --git a/packages/console/core/src/workspace.ts b/packages/console/core/src/workspace.ts index 7a742e89..655112ae 100644 --- a/packages/console/core/src/workspace.ts +++ b/packages/console/core/src/workspace.ts @@ -52,6 +52,7 @@ export namespace Workspace { name: z.string().min(1).max(255), }), async ({ name }) => { + Actor.assertAdmin() const workspaceID = Actor.workspace() return await Database.use((tx) => tx