This commit is contained in:
2025-08-17 21:10:45 -03:00
parent aac1e4a0d2
commit b807a55d5b
2 changed files with 16 additions and 12 deletions

View File

@@ -1,7 +1,6 @@
from http.cookies import SimpleCookie from http.cookies import SimpleCookie
import jwt import jwt
from authlib.oauth2 import OAuth2Error
from authlib.oauth2.rfc6749 import errors from authlib.oauth2.rfc6749 import errors
from aws_lambda_powertools import Logger from aws_lambda_powertools import Logger
from aws_lambda_powertools.event_handler.api_gateway import Router from aws_lambda_powertools.event_handler.api_gateway import Router
@@ -32,22 +31,18 @@ def authorize():
request=router.current_event, request=router.current_event,
end_user={'id': user_id}, 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( return server.create_authorization_response(
request=router.current_event, request=router.current_event,
grant_user={'id': user_id}, grant_user={'id': user_id},
grant=grant, grant=grant,
) )
except jwt.exceptions.InvalidTokenError as err:
logger.exception(err)
raise BadRequestError(str(err))
except errors.OAuth2Error as err: except errors.OAuth2Error as err:
logger.exception(err) logger.exception(err)
return {} return dict(err.get_body())
def verify_session(session_id: str) -> str: def verify_session(session_id: str) -> str:

View File

@@ -5,16 +5,16 @@ import type { Route } from './+types/authorize'
export async function loader({ request, context }: Route.LoaderArgs) { export async function loader({ request, context }: Route.LoaderArgs) {
const cookies = parse(request.headers.get('Cookie') || '') const cookies = parse(request.headers.get('Cookie') || '')
const url = new URL(request.url) const url = new URL(request.url)
const redirect = new URL('/', url.origin)
const issuerUrl = new URL('/authorize', context.cloudflare.env.ISSUER_URL) const issuerUrl = new URL('/authorize', context.cloudflare.env.ISSUER_URL)
issuerUrl.search = url.search issuerUrl.search = url.search
redirect.search = url.search
if (!cookies.session_id) { if (!cookies.session_id) {
url.pathname = '/'
return new Response(null, { return new Response(null, {
status: 302, status: 302,
headers: { headers: {
Location: url.toString() Location: redirect.toString()
} }
}) })
} }
@@ -29,6 +29,15 @@ export async function loader({ request, context }: Route.LoaderArgs) {
redirect: 'manual' redirect: 'manual'
}) })
if (!r.ok) {
return new Response(null, {
status: 302,
headers: {
Location: redirect.toString()
}
})
}
return new Response(await r.text(), { return new Response(await r.text(), {
status: r.status, status: r.status,
headers: r.headers headers: r.headers