import { Handlers, PageProps } from 'fresh/server.ts'; import { FreshContextState } from '/lib/types.ts'; import { AppConfig } from '/lib/config.ts'; import { OidcModel } from '/lib/models/oidc.ts'; interface Data { error?: string; } export const handler: Handlers = { async GET(request, context) { const isSingleSignOnEnabled = await AppConfig.isSingleSignOnEnabled(); if (context.state.user || !isSingleSignOnEnabled) { return new Response('Redirect', { status: 303, headers: { 'Location': `/` } }); } let error = ''; try { const { response } = await OidcModel.validateAndCreateSession(request); return response; } catch (validationError) { console.error(validationError); error = (validationError as Error).message; } return await context.render({ error, }); }, }; export default function OidcCallback({ data }: PageProps) { return (

Login with SSO

{data?.error ? (

Failed to login!

{data?.error}

) : null}

Go back?

Go back to{' '} login .

); }