From 18fe979069ad04cb6c6ac5a536ad7cfb6e4b07c3 Mon Sep 17 00:00:00 2001 From: Sonny Date: Thu, 21 Aug 2025 02:25:16 +0200 Subject: [PATCH] fix: app base url shared in inertia config file --- .env.example | 14 ++++++++++---- config/ally.ts | 2 +- config/inertia.ts | 2 ++ inertia/layouts/_base_layout.tsx | 8 ++++---- start/env.ts | 8 +++++++- 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/.env.example b/.env.example index e5af7f1..8a6cbaa 100644 --- a/.env.example +++ b/.env.example @@ -1,16 +1,22 @@ -# node ace generate:key -APP_KEY=soY8ZAtItT_fCkNUADfgffZUUo675lOj +# App TZ=UTC PORT=3333 HOST=localhost -LOG_LEVEL=info +LOG_LEVEL=debug +APP_KEY=soY8ZAtItT_fCkNUADfgffZUUo675lOj # node ace generate:key NODE_ENV=development SESSION_DRIVER=cookie + +# App url +APP_URL=http://localhost:3333 + +# Database DB_HOST=127.0.0.1 DB_PORT=5432 DB_USER=root DB_PASSWORD=root DB_DATABASE=app + +# Google GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= -GOOGLE_CLIENT_CALLBACK_URL=http://localhost:3333/auth/callback diff --git a/config/ally.ts b/config/ally.ts index 2205ade..6b2dc43 100644 --- a/config/ally.ts +++ b/config/ally.ts @@ -5,7 +5,7 @@ const allyConfig = defineConfig({ google: services.google({ clientId: env.get('GOOGLE_CLIENT_ID'), clientSecret: env.get('GOOGLE_CLIENT_SECRET'), - callbackUrl: env.get('GOOGLE_CLIENT_CALLBACK_URL'), + callbackUrl: env.get('APP_URL') + '/auth/callback', prompt: 'select_account', display: 'page', scopes: ['userinfo.email', 'userinfo.profile'], diff --git a/config/inertia.ts b/config/inertia.ts index 239570c..5634984 100644 --- a/config/inertia.ts +++ b/config/inertia.ts @@ -1,4 +1,5 @@ import { isSSREnableForPage } from '#config/ssr'; +import env from '#start/env'; import { DEFAULT_USER_THEME, KEY_USER_THEME } from '#user/constants/theme'; import logger from '@adonisjs/core/services/logger'; import { defineConfig } from '@adonisjs/inertia'; @@ -24,6 +25,7 @@ export default defineConfig({ isAuthenticated: ctx.auth?.isAuthenticated || false, }; }, + appUrl: env.get('APP_URL'), }, /** diff --git a/inertia/layouts/_base_layout.tsx b/inertia/layouts/_base_layout.tsx index bedcb9e..9bffb84 100644 --- a/inertia/layouts/_base_layout.tsx +++ b/inertia/layouts/_base_layout.tsx @@ -1,7 +1,6 @@ import { api } from '#adonis/api'; import { PRIMARY_COLOR } from '#config/project'; -import { PageProps } from '@adonisjs/inertia/types'; -import { router, usePage } from '@inertiajs/react'; +import { router } from '@inertiajs/react'; import { ColorSchemeScript, createTheme, @@ -15,6 +14,7 @@ import { TuyauProvider } from '@tuyau/inertia/react'; import dayjs from 'dayjs'; import { ReactNode, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; +import { useAppUrl } from '~/hooks/use_app_url'; import '../styles/index.css'; const TRANSITION_IN_CLASS = '__transition_fadeIn'; @@ -73,12 +73,12 @@ const customTheme = createTheme({ export function BaseLayout({ children }: { children: ReactNode }) { const { i18n } = useTranslation(); + const appUrl = useAppUrl(); dayjs.locale(i18n.language); - const { props } = usePage(); const tuyauClient = createTuyau({ api, - baseUrl: props.appBaseUrl, + baseUrl: appUrl, }); const findAppElement = () => document.getElementById('app'); diff --git a/start/env.ts b/start/env.ts index 5c6f4bd..4e7af76 100644 --- a/start/env.ts +++ b/start/env.ts @@ -27,6 +27,13 @@ export default await Env.create(new URL('../', import.meta.url), { /* |---------------------------------------------------------- + | Variables for configuring app url + |---------------------------------------------------------- + */ + APP_URL: Env.schema.string({ format: 'url', tld: false }), // Remove TLD to allow localhost + + /* + |---------------------------------------------------------- | Variables for configuring database connection |---------------------------------------------------------- */ @@ -43,5 +50,4 @@ export default await Env.create(new URL('../', import.meta.url), { */ GOOGLE_CLIENT_ID: Env.schema.string(), GOOGLE_CLIENT_SECRET: Env.schema.string(), - GOOGLE_CLIENT_CALLBACK_URL: Env.schema.string(), });