65 lines
1.8 KiB
TypeScript
Executable File
65 lines
1.8 KiB
TypeScript
Executable File
// routes/index.tsx
|
|
import { define, State } from "../utils.ts";
|
|
import GuestHome from "../islands/GuestHome.tsx";
|
|
import MemberHome from "../islands/MemberHome.tsx";
|
|
import { page } from "fresh";
|
|
import { getYear } from "../helpers.ts";
|
|
import { SessionCookie } from "./auth/callback.ts";
|
|
import { createPublicId } from "../helpers.ts";
|
|
import { getOnboardingStatus } from "../services/onboardingService.ts";
|
|
|
|
const authority = Deno.env.get("AUTHORITY")!;
|
|
const clientId = Deno.env.get("CLIENT_ID")!;
|
|
const redirectUri = Deno.env.get("REDIRECT_URI")!;
|
|
|
|
export const handler = define.handlers(async (ctx) => {
|
|
const state = ctx.state as State;
|
|
const stateData: SessionCookie = state.data ??
|
|
{
|
|
started_on: 0,
|
|
user_name: "",
|
|
user_id: "",
|
|
role: "",
|
|
user_encrypted: false,
|
|
};
|
|
|
|
const publicId = stateData.user_id
|
|
? await createPublicId(stateData.user_id)
|
|
: "";
|
|
const onboardingStatus = stateData.user_id
|
|
? await getOnboardingStatus(stateData.user_id)
|
|
: null;
|
|
return page({
|
|
stateData,
|
|
urlRoute: ctx.state.urlRoute,
|
|
publicId,
|
|
stateId: state.stateId,
|
|
onboardingStatus,
|
|
});
|
|
});
|
|
|
|
export default define.page(
|
|
(
|
|
{ data }: {
|
|
data: {
|
|
stateData: SessionCookie;
|
|
urlRoute: string;
|
|
publicId: string;
|
|
stateId: string;
|
|
onboardingStatus: Awaited<ReturnType<typeof getOnboardingStatus>>;
|
|
};
|
|
},
|
|
) => {
|
|
return (
|
|
<main class="min-h-screen bg-transparent flex flex-col items-center justify-start pt-0">
|
|
{data.stateData.user_id
|
|
? <MemberHome onboardingStatus={data.onboardingStatus} />
|
|
: <GuestHome />}
|
|
<footer class="fixed bottom-0 left-0 right-0 mt-10 text-cyan-400 text-xs text-center">
|
|
© {getYear(new Date())} Cyber Hybrid Hub. All rights reserved.
|
|
</footer>
|
|
</main>
|
|
);
|
|
},
|
|
);
|