diff --git a/packages/auth-providers/dbAuth/api/src/shared.ts b/packages/auth-providers/dbAuth/api/src/shared.ts index 552833411a36..8d2febc04c70 100644 --- a/packages/auth-providers/dbAuth/api/src/shared.ts +++ b/packages/auth-providers/dbAuth/api/src/shared.ts @@ -35,6 +35,10 @@ export const extractCookie = (event: APIGatewayProxyEvent) => { return eventGraphiQLHeadersCookie(event) || eventHeadersCookie(event) } +function extractSessionFromHeader(event: APIGatewayProxyEvent) { + return event.headers.authorization?.split(' ')[1] +} + // decrypts the session cookie and returns an array: [data, csrf] export const decryptSession = (text: string | null) => { if (!text || text.trim() === '') { @@ -83,11 +87,19 @@ export const dbAuthSession = ( event: APIGatewayProxyEvent, cookieNameOption: string | undefined ) => { - if (extractCookie(event)) { + const cookieHeader = extractCookie(event) + const sessionInAuthHeader = extractSessionFromHeader(event) + + if (cookieHeader && !sessionInAuthHeader) { const [session, _csrfToken] = decryptSession( - getSession(extractCookie(event), cookieNameOption) + getSession(cookieHeader, cookieNameOption) ) return session + } else if (sessionInAuthHeader) { + const [session, _csrfToken] = decryptSession(sessionInAuthHeader) + + console.log(`👉 \n ~ file: shared.ts:103 ~ session:`, session) + return session } else { return null } diff --git a/packages/auth/src/AuthProvider/AuthProvider.tsx b/packages/auth/src/AuthProvider/AuthProvider.tsx index 01fdb54b80d8..aeddfc05c795 100644 --- a/packages/auth/src/AuthProvider/AuthProvider.tsx +++ b/packages/auth/src/AuthProvider/AuthProvider.tsx @@ -147,7 +147,16 @@ export function createAuthProvider< signUp, logIn, logOut, - getToken, + getToken: + typeof window === 'undefined' + ? async () => { + console.log( + 'xxxxx definitely calling this function', + serverAuthState + ) + return serverAuthState.token || null + } + : getToken, getCurrentUser, hasRole, reauthenticate, diff --git a/packages/auth/src/AuthProvider/ServerAuthProvider.tsx b/packages/auth/src/AuthProvider/ServerAuthProvider.tsx index c2b3de4f7ee9..f470e5cb851c 100644 --- a/packages/auth/src/AuthProvider/ServerAuthProvider.tsx +++ b/packages/auth/src/AuthProvider/ServerAuthProvider.tsx @@ -4,7 +4,7 @@ import type { AuthProviderState } from './AuthProviderState' import { defaultAuthProviderState } from './AuthProviderState' export const ServerAuthContext = React.createContext< - AuthProviderState | undefined ->(defaultAuthProviderState) + AuthProviderState & { token: string | null } +>({ ...defaultAuthProviderState, token: null }) export const ServerAuthProvider = ServerAuthContext.Provider diff --git a/packages/vite/src/streaming/streamHelpers.ts b/packages/vite/src/streaming/streamHelpers.ts index 62133427ddd6..533573d1c8cf 100644 --- a/packages/vite/src/streaming/streamHelpers.ts +++ b/packages/vite/src/streaming/streamHelpers.ts @@ -28,7 +28,7 @@ interface RenderToStreamArgs { cssLinks: string[] isProd: boolean jsBundles?: string[] - authState?: AuthProviderState | undefined + authState: AuthProviderState & { token: string | null } } interface StreamOptions { @@ -51,7 +51,6 @@ export async function reactRenderToStreamResponse( jsBundles = [], authState, } = renderOptions - console.log(`👉 \n ~ file: streamHelpers.ts:54 ~ authState:`, authState) if (!isProd) { // For development, we need to inject the react-refresh runtime