Skip to content

Commit

Permalink
fix: correctly pass cookies
Browse files Browse the repository at this point in the history
  • Loading branch information
ematipico committed Jun 15, 2023
1 parent 62d9124 commit 306f816
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 65 deletions.
3 changes: 2 additions & 1 deletion packages/astro/src/core/app/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -244,14 +244,15 @@ export class App {
onRequest as MiddlewareResponseHandler,
apiContext,
() => {
return renderPage({ mod, renderContext, env: this.#env });
return renderPage({ mod, renderContext, env: this.#env, cookies: apiContext.cookies });
}
);
} else {
response = await renderPage({
mod,
renderContext,
env: this.#env,
cookies: apiContext.cookies,
});
}
Reflect.set(request, responseSentSymbol, true);
Expand Down
2 changes: 2 additions & 0 deletions packages/astro/src/core/build/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -600,6 +600,7 @@ async function generatePath(
renderContext,
env,
isCompressHTML: settings.config.compressHTML,
cookies: apiContext.cookies,
});
}
);
Expand All @@ -609,6 +610,7 @@ async function generatePath(
renderContext,
env,
isCompressHTML: settings.config.compressHTML,
cookies: apiContext.cookies,
});
}
} catch (err) {
Expand Down
13 changes: 10 additions & 3 deletions packages/astro/src/core/render/core.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { APIContext, ComponentInstance, Params, Props, RouteData } from '../../@types/astro';
import type { AstroCookies, ComponentInstance, Params, Props, RouteData } from '../../@types/astro';
import { render, renderPage as runtimeRenderPage } from '../../runtime/server/index.js';
import { attachToResponse } from '../cookies/index.js';
import { AstroError, AstroErrorData } from '../errors/index.js';
Expand Down Expand Up @@ -109,9 +109,16 @@ export type RenderPage = {
renderContext: RenderContext;
env: Environment;
isCompressHTML?: boolean;
cookies: AstroCookies;
};

export async function renderPage({ mod, renderContext, env, isCompressHTML = false }: RenderPage) {
export async function renderPage({
mod,
renderContext,
env,
cookies,
isCompressHTML = false,
}: RenderPage) {
if (routeIsRedirect(renderContext.route)) {
return new Response(null, {
status: redirectRouteStatus(renderContext.route, renderContext.request.method),
Expand Down Expand Up @@ -146,7 +153,7 @@ export async function renderPage({ mod, renderContext, env, isCompressHTML = fal
scripts: renderContext.scripts,
ssr: env.ssr,
status: renderContext.status ?? 200,
cookies: renderContext.cookies,
cookies,
locals: renderContext.locals ?? {},
});

Expand Down
27 changes: 18 additions & 9 deletions packages/astro/src/core/render/dev/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -180,22 +180,31 @@ export async function renderPage(options: SSROptions): Promise<Response> {
mod,
env,
});
const apiContext = createAPIContext({
request: options.request,
params: renderContext.params,
props: renderContext.props,
adapterName: options.env.adapterName,
});
if (options.middleware) {
if (options.middleware && options.middleware.onRequest) {
const apiContext = createAPIContext({
request: options.request,
params: renderContext.params,
props: renderContext.props,
adapterName: options.env.adapterName,
});

const onRequest = options.middleware.onRequest as MiddlewareResponseHandler;
const response = await callMiddleware<Response>(env.logging, onRequest, apiContext, () => {
return coreRenderPage({ mod, renderContext, env: options.env });
return coreRenderPage({
mod,
renderContext,
env: options.env,
cookies: apiContext.cookies,
});
});

return response;
}
}
return await coreRenderPage({ mod, renderContext, env: options.env }); // NOTE: without "await", errors won’t get caught below
return await coreRenderPage({
mod,
renderContext,
env: options.env,
cookies: apiContext.cookies,
}); // NOTE: without "await", errors won’t get caught below
}
69 changes: 17 additions & 52 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 306f816

Please sign in to comment.