30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
// SPDX-License-Identifier: LicenseRef-ConusAI-Template-1.0
|
|
// The members pages (kit-tenancy's access pages, `@conusai-kit/tenancy/ui`) are for whoever holds
|
|
// `tenancy.member.read`. Asked in the loader, before anything renders, so a member without the permission
|
|
// gets a real 403 and a stranger a real 404 (src/server/guard.ts).
|
|
|
|
import { createFileRoute, Outlet } from "@tanstack/react-router"
|
|
import { createServerFn } from "@tanstack/react-start"
|
|
import type { OrgParams } from "../server/org-pages"
|
|
import { RoutePending } from "../ui/route-pending"
|
|
import { tenancyStyles } from "../ui/tenancy-styles"
|
|
|
|
const ROUTE = "/$org/members"
|
|
|
|
const requireAccess = createServerFn({ method: "GET" })
|
|
.validator((params: OrgParams) => params)
|
|
.handler(async ({ data }): Promise<null> => {
|
|
const [{ reported }, { requireAccessSection }] = await Promise.all([
|
|
import("../server/page"),
|
|
import("../server/org-pages"),
|
|
])
|
|
return reported(ROUTE, () => requireAccessSection({ ...data, section: "members" }))
|
|
})
|
|
|
|
export const Route = createFileRoute("/$org/_settings/members")({
|
|
loader: ({ params }) => requireAccess({ data: { org: params.org } }),
|
|
head: tenancyStyles,
|
|
pendingComponent: RoutePending,
|
|
component: Outlet,
|
|
})
|