mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 19:01:08 +02:00
fix(cards-web): inject __PUBLIC_MANA_AUTH_URL__ on SSR — login was 404
createManaAuthStore from @mana/shared-auth-ui reads the auth backend URL from window.__PUBLIC_MANA_AUTH_URL__ at runtime. Without the injection it falls back to a relative URL, so signIn POSTs land at cards.mana.how/api/v1/auth/login (SvelteKit 404, HTML body) instead of auth.mana.how/api/v1/auth/login. Adds a hooks.server.ts modeled after the mana-web one, but trimmed to the two URLs the standalone app actually consumes today (auth + sync). The values come from PUBLIC_MANA_AUTH_URL_CLIENT and PUBLIC_MANA_SYNC_URL_CLIENT in docker-compose.macmini.yml. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
8b71d290f8
commit
96c06162e6
1 changed files with 32 additions and 0 deletions
32
apps/cards/apps/web/src/hooks.server.ts
Normal file
32
apps/cards/apps/web/src/hooks.server.ts
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inject the runtime client URLs into <head> on every SSR'd page.
|
||||||
|
*
|
||||||
|
* `@mana/shared-auth-ui` reads `window.__PUBLIC_MANA_AUTH_URL__` to know
|
||||||
|
* where to POST /api/v1/auth/login (and friends). Without this hook the
|
||||||
|
* client falls back to a relative URL → 404 on cards.mana.how.
|
||||||
|
*
|
||||||
|
* `process.env.PUBLIC_MANA_*_URL_CLIENT` come from the container
|
||||||
|
* environment (docker-compose.macmini.yml). $env/static/public would
|
||||||
|
* bake the URLs at build time; we want runtime so the same image can
|
||||||
|
* serve dev and prod.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const PUBLIC_MANA_AUTH_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_MANA_AUTH_URL_CLIENT || process.env.PUBLIC_MANA_AUTH_URL || '';
|
||||||
|
const PUBLIC_MANA_SYNC_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_MANA_SYNC_URL_CLIENT || process.env.PUBLIC_MANA_SYNC_URL || '';
|
||||||
|
|
||||||
|
export const handle: Handle = async ({ event, resolve }) => {
|
||||||
|
return resolve(event, {
|
||||||
|
transformPageChunk: ({ html }) => {
|
||||||
|
const envScript =
|
||||||
|
`<script>` +
|
||||||
|
`window.__PUBLIC_MANA_AUTH_URL__=${JSON.stringify(PUBLIC_MANA_AUTH_URL_CLIENT)};` +
|
||||||
|
`window.__PUBLIC_MANA_SYNC_URL__=${JSON.stringify(PUBLIC_MANA_SYNC_URL_CLIENT)};` +
|
||||||
|
`</script>`;
|
||||||
|
return html.replace('<head>', `<head>${envScript}`);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
Loading…
Add table
Add a link
Reference in a new issue