diff --git a/id.saladeaula.digital/client/app/lib/session.ts b/id.saladeaula.digital/client/app/lib/session.ts deleted file mode 100644 index 76ee5b2..0000000 --- a/id.saladeaula.digital/client/app/lib/session.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { createCookieSessionStorage } from 'react-router' - -const { getSession, commitSession, destroySession } = - createCookieSessionStorage({ - cookie: { - name: 'session_id', - httpOnly: true, - secure: true - } - }) - -export { getSession, commitSession, destroySession } diff --git a/id.saladeaula.digital/client/app/routes.ts b/id.saladeaula.digital/client/app/routes.ts index ea0988c..c917e90 100644 --- a/id.saladeaula.digital/client/app/routes.ts +++ b/id.saladeaula.digital/client/app/routes.ts @@ -7,5 +7,6 @@ import { export default [ layout('routes/layout.tsx', [index('routes/index.tsx')]), - route('/authorize', 'routes/authorize.tsx') + route('/authorize', 'routes/authorize.ts'), + route('/token', 'routes/token.ts') ] satisfies RouteConfig diff --git a/id.saladeaula.digital/client/app/routes/authorize.tsx b/id.saladeaula.digital/client/app/routes/authorize.tsx deleted file mode 100644 index 05e5ad3..0000000 --- a/id.saladeaula.digital/client/app/routes/authorize.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { parse } from 'cookie' - -import type { Route } from './+types/authorize' - -export async function loader({ request, context }: Route.LoaderArgs) { - const cookies = parse(request.headers.get('Cookie') || '') - const url = new URL(request.url) - const issuerUrl = new URL('/authorize', context.cloudflare.env.ISSUER_URL) - issuerUrl.search = url.search - - if (!cookies.session_id) { - url.pathname = '/' - - return new Response(null, { - status: 302, - headers: { - Location: url.toString() - } - }) - } - - try { - const r = await fetch(issuerUrl.toString(), { - method: 'GET', - headers: { - 'Content-Type': 'application/json', - Cookie: request.headers.get('Cookie') - }, - redirect: 'manual' - }) - - return new Response(await r.text(), { - status: r.status, - headers: r.headers - }) - } catch { - return new Response(null, { status: 500 }) - } -} diff --git a/id.saladeaula.digital/client/app/routes/index.tsx b/id.saladeaula.digital/client/app/routes/index.tsx index c0bfe4a..5802334 100644 --- a/id.saladeaula.digital/client/app/routes/index.tsx +++ b/id.saladeaula.digital/client/app/routes/index.tsx @@ -30,13 +30,11 @@ export function meta({}: Route.MetaArgs) { } export async function action({ request, context }: Route.ActionArgs) { - const issuerUrl = context.cloudflare.env.ISSUER_URL + const issuerUrl = new URL('/session', context.cloudflare.env.ISSUER_URL) const formData = Object.fromEntries(await request.formData()) - const url = new URL(request.url) - url.pathname = '/authorize' try { - const r = await fetch(`${issuerUrl}/session`, { + const r = await fetch(issuerUrl.toString(), { method: 'POST', headers: { 'Content-Type': 'application/json' @@ -44,6 +42,9 @@ export async function action({ request, context }: Route.ActionArgs) { body: JSON.stringify(formData) }) + const url = new URL(request.url) + url.pathname = '/authorize' + const headers = new Headers(r.headers) headers.set('Location', url.toString())