From 4ce4147a8a8f2f0f9d20b7e1f91649a626cf5f9c Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Sun, 22 Feb 2026 10:54:54 +0800 Subject: [PATCH] fix: use server-resolved accountServiceBaseUrl for OAuth login URLs Replace process.env.NEXT_PUBLIC_ACCOUNTS_SVC_URL (undefined in preview) with the accountServiceBaseUrl prop resolved via getAccountServiceBaseUrl(). Fixes undefined/api/auth/oauth/login/github|google on preview.svc.plus. --- src/app/(auth)/login/LoginContent.tsx | 4 ++-- src/app/(auth)/register/RegisterContent.tsx | 22 +++++++++++++-------- src/app/(auth)/register/page.tsx | 5 ++++- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/app/(auth)/login/LoginContent.tsx b/src/app/(auth)/login/LoginContent.tsx index 88b7de2..557a520 100644 --- a/src/app/(auth)/login/LoginContent.tsx +++ b/src/app/(auth)/login/LoginContent.tsx @@ -73,8 +73,8 @@ export default function LoginContent({ `${accountServiceBaseUrl}/api/auth/login`; const socialButtonsDisabled = false; - const githubAuthUrl = `${process.env.NEXT_PUBLIC_ACCOUNTS_SVC_URL}/api/auth/oauth/login/github`; - const googleAuthUrl = `${process.env.NEXT_PUBLIC_ACCOUNTS_SVC_URL}/api/auth/oauth/login/google`; + const githubAuthUrl = `${accountServiceBaseUrl}/api/auth/oauth/login/github`; + const googleAuthUrl = `${accountServiceBaseUrl}/api/auth/oauth/login/google`; useEffect(() => { const publicToken = searchParams.get("public_token"); diff --git a/src/app/(auth)/register/RegisterContent.tsx b/src/app/(auth)/register/RegisterContent.tsx index 50f9774..d1ff783 100644 --- a/src/app/(auth)/register/RegisterContent.tsx +++ b/src/app/(auth)/register/RegisterContent.tsx @@ -31,7 +31,13 @@ const EMAIL_PATTERN = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/; const PASSWORD_STRENGTH_PATTERN = /^(?=.*[A-Za-z])(?=.*\d).{8,}$/; const USERNAME_PATTERN = /^[a-zA-Z][a-zA-Z0-9]{3,15}$/; -export default function RegisterContent() { +type RegisterContentProps = { + accountServiceBaseUrl: string; +}; + +export default function RegisterContent({ + accountServiceBaseUrl, +}: RegisterContentProps) { const { language } = useLanguage(); const t = translations[language].auth.register; const alerts = t.alerts; @@ -39,8 +45,8 @@ export default function RegisterContent() { const router = useRouter(); const isSocialAuthVisible = false; - const githubAuthUrl = `${process.env.NEXT_PUBLIC_ACCOUNTS_SVC_URL}/api/auth/oauth/login/github`; - const googleAuthUrl = `${process.env.NEXT_PUBLIC_ACCOUNTS_SVC_URL}/api/auth/oauth/login/google`; + const githubAuthUrl = `${accountServiceBaseUrl}/api/auth/oauth/login/github`; + const googleAuthUrl = `${accountServiceBaseUrl}/api/auth/oauth/login/google`; const socialButtons = useMemo(() => { if (!isSocialAuthVisible) { @@ -326,8 +332,8 @@ export default function RegisterContent() { setIsSubmitting(true); showStatus( t.form.validation?.submitting ?? - t.form.submitting ?? - "Submitting registration request…", + t.form.submitting ?? + "Submitting registration request…", ); try { @@ -394,9 +400,9 @@ export default function RegisterContent() { setIsSubmitting(true); showStatus( t.form.validation?.completing ?? - t.form.completing ?? - t.form.completeSubmit ?? - t.form.submit, + t.form.completing ?? + t.form.completeSubmit ?? + t.form.submit, ); try { diff --git a/src/app/(auth)/register/page.tsx b/src/app/(auth)/register/page.tsx index 7ffc5f9..5c8aea3 100644 --- a/src/app/(auth)/register/page.tsx +++ b/src/app/(auth)/register/page.tsx @@ -6,6 +6,7 @@ import { Suspense } from 'react' import { notFound } from 'next/navigation' import { isFeatureEnabled } from '@lib/featureToggles' +import { getAccountServiceBaseUrl } from '@server/serviceConfig' import RegisterContent from './RegisterContent' @@ -18,9 +19,11 @@ export default function RegisterPage() { notFound() } + const accountServiceBaseUrl = getAccountServiceBaseUrl() + return ( }> - + ) }