diff --git a/id.saladeaula.digital/app/routes/authorize.py b/id.saladeaula.digital/app/routes/authorize.py index c690946..3e3c755 100644 --- a/id.saladeaula.digital/app/routes/authorize.py +++ b/id.saladeaula.digital/app/routes/authorize.py @@ -1,7 +1,6 @@ from http.cookies import SimpleCookie import jwt -from authlib.oauth2 import OAuth2Error from authlib.oauth2.rfc6749 import errors from aws_lambda_powertools import Logger from aws_lambda_powertools.event_handler.api_gateway import Router @@ -32,22 +31,18 @@ def authorize(): request=router.current_event, end_user={'id': user_id}, ) - except jwt.exceptions.InvalidTokenError as err: - logger.exception(err) - raise BadRequestError(str(err)) - except OAuth2Error as err: - logger.exception(err) - return dict(err.get_body()) - try: return server.create_authorization_response( request=router.current_event, grant_user={'id': user_id}, grant=grant, ) + except jwt.exceptions.InvalidTokenError as err: + logger.exception(err) + raise BadRequestError(str(err)) except errors.OAuth2Error as err: logger.exception(err) - return {} + return dict(err.get_body()) def verify_session(session_id: str) -> str: diff --git a/id.saladeaula.digital/client/app/routes/authorize.ts b/id.saladeaula.digital/client/app/routes/authorize.ts index 8516a7c..f764da1 100644 --- a/id.saladeaula.digital/client/app/routes/authorize.ts +++ b/id.saladeaula.digital/client/app/routes/authorize.ts @@ -5,16 +5,16 @@ 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 redirect = new URL('/', url.origin) const issuerUrl = new URL('/authorize', context.cloudflare.env.ISSUER_URL) issuerUrl.search = url.search + redirect.search = url.search if (!cookies.session_id) { - url.pathname = '/' - return new Response(null, { status: 302, headers: { - Location: url.toString() + Location: redirect.toString() } }) } @@ -29,6 +29,15 @@ export async function loader({ request, context }: Route.LoaderArgs) { redirect: 'manual' }) + if (!r.ok) { + return new Response(null, { + status: 302, + headers: { + Location: redirect.toString() + } + }) + } + return new Response(await r.text(), { status: r.status, headers: r.headers