diff --git a/apps/insights.saladeaula.digital/app/routes/login._index/route.ts b/apps/insights.saladeaula.digital/app/routes/login._index/route.ts index b34e98f..95f28de 100644 --- a/apps/insights.saladeaula.digital/app/routes/login._index/route.ts +++ b/apps/insights.saladeaula.digital/app/routes/login._index/route.ts @@ -7,18 +7,21 @@ import { requestIdContext } from '@repo/auth/context' import { createSessionStorage } from '@repo/auth/session' export async function loader({ request, context }: Route.ActionArgs) { + const url = new URL(request.url) const sessionStorage = createSessionStorage(context.cloudflare.env) const session = await sessionStorage.getSession(request.headers.get('cookie')) - const returnTo = session.has('returnTo') ? session.get('returnTo') : '/' const requestId = context.get(requestIdContext) const user = session.get('user') as User | null + const returnTo = ( + session.has('returnTo') ? session.get('returnTo') : '/' + ) as string if (user) { return redirect(returnTo) } try { - const authenticator = createAuth(context.cloudflare.env) + const authenticator = createAuth(context.cloudflare.env, url?.origin) const user = await authenticator.authenticate('oidc', request) session.set('user', user) diff --git a/packages/auth/src/auth.ts b/packages/auth/src/auth.ts index 1b766ef..9985ce0 100644 --- a/packages/auth/src/auth.ts +++ b/packages/auth/src/auth.ts @@ -13,13 +13,13 @@ export type User = { refreshToken: string } -export function createAuth(env) { +export function createAuth(env, redirectURI = null) { const authenticator = new Authenticator() const strategy = new OAuth2Strategy( { clientId: env.CLIENT_ID, clientSecret: env.CLIENT_SECRET, - redirectURI: env.REDIRECT_URI, + redirectURI: redirectURI ?? env.REDIRECT_URI, authorizationEndpoint: `${env.ISSUER_URL}/authorize`, tokenEndpoint: `${env.ISSUER_URL}/token`, tokenRevocationEndpoint: `${env.ISSUER_URL}/revoke`,