add car reservation feature

This commit is contained in:
root
2026-05-09 21:10:38 -04:00
parent 09b0e3b55f
commit 6322b7d2a1
37 changed files with 1169 additions and 119 deletions
+3 -3
View File
@@ -8,15 +8,15 @@ import {
AdminThemeSwitcher,
useAdminI18n,
} from '@/components/I18nProvider'
const DASHBOARD_URL = process.env.NEXT_PUBLIC_DASHBOARD_URL ?? 'http://localhost:3001'
import { resolveBrowserAppUrl } from '@/lib/appUrls'
function buildUnifiedLoginUrl(nextPath: string) {
const dashboardUrl = resolveBrowserAppUrl(process.env.NEXT_PUBLIC_DASHBOARD_URL ?? 'http://localhost:3001')
const params = new URLSearchParams({
portal: 'admin',
next: nextPath || '/dashboard',
})
return `${DASHBOARD_URL}/sign-in?${params.toString()}`
return `${dashboardUrl}/sign-in?${params.toString()}`
}
const navLinks = [
+9 -3
View File
@@ -1,7 +1,13 @@
import { headers } from 'next/headers'
import { redirect } from 'next/navigation'
const DASHBOARD_URL = process.env.NEXT_PUBLIC_DASHBOARD_URL ?? 'http://localhost:3001'
import { resolveServerAppUrl } from '@/lib/appUrls'
export default function AdminLoginPage() {
redirect(`${DASHBOARD_URL}/sign-in?portal=admin&next=/dashboard`)
const requestHeaders = headers()
const dashboardUrl = resolveServerAppUrl(
process.env.NEXT_PUBLIC_DASHBOARD_URL ?? 'http://localhost:3001',
requestHeaders.get('host'),
requestHeaders.get('x-forwarded-proto'),
)
redirect(`${dashboardUrl}/sign-in?portal=admin&next=/dashboard`)
}
+25
View File
@@ -0,0 +1,25 @@
export function resolveBrowserAppUrl(fallback: string): string {
if (typeof window === 'undefined') return fallback
try {
const target = new URL(fallback)
target.protocol = window.location.protocol
target.hostname = window.location.hostname
return target.toString().replace(/\/$/, '')
} catch {
return fallback
}
}
export function resolveServerAppUrl(fallback: string, host: string | null, proto?: string | null): string {
if (!host) return fallback
try {
const target = new URL(fallback)
target.protocol = `${proto || target.protocol.replace(':', '')}:`
target.host = host
return target.toString().replace(/\/$/, '')
} catch {
return fallback
}
}