Files
saladeaula.digital/apps/admin.saladeaula.digital/app/routes/_index/route.tsx

41 lines
1010 B
TypeScript

import type { Route } from './+types/route'
import { redirect } from 'react-router'
import { userContext } from '@repo/auth/context'
import { authMiddleware } from '@repo/auth/middleware/auth'
import { request as req } from '@repo/util/request'
export const middleware: Route.MiddlewareFunction[] = [authMiddleware]
type Response = {
items: { sk: string }[]
preferred_org_id?: string
}
export async function loader({ context, request }: Route.ActionArgs) {
const user = context.get(userContext)!
const r = await req({
url: `/users/${user.sub}/orgs`,
request,
context
})
if (!r.ok) {
throw new Response(await r.text(), { status: r.status })
}
const { items = [], preferred_org_id } = (await r.json()) as Response
const { sk } = preferred_org_id
? (items.find((item) => item.sk.includes(preferred_org_id)) ?? items[0])
: items[0]
if (sk) {
const [_, id] = sk.split('#')
throw redirect(`/${id}/main`)
}
throw new Response(null, { status: 401 })
}