teecup/frontend/app/page.tsx

55 lines
2.6 KiB
TypeScript
Raw Permalink Normal View History

import { cookies } from "next/headers"
import { redirect } from "next/navigation"
2026-07-17 21:40:42 +02:00
// Server-side, IKKE nettleser-fetch -- går derfor IKKE gjennom
// next.config.mjs sin rewrites() (samme mønster som generateMetadata i
// app/t/[id]/page.tsx). Peker direkte på API-et.
const API_ORIGIN = process.env.TEECUP_API_ORIGIN || "http://localhost:8000"
// Må matche SESSION_COOKIE_NAME i app/auth.py -- ingen delt konstant på
// tvers av Python/TypeScript, samme mønster som andre API-kontrakt-felt
// som dupliseres bevisst i frontend-koden.
const SESSION_COOKIE_NAME = "teecup_session"
export default async function Page() {
// Reell bug funnet 2026-07-19: denne siden viste ALLTID innloggingsskjemaet,
// uansett om brukeren allerede hadde en helt gyldig sesjonscookie (30 dager,
// bekreftet riktig satt) -- Dashboard sjekker /auth/me og sender deg HIT ved
// manglende sesjon, men ingenting gjorde det motsatte. En bruker som besøkte
// teecup.teeoff.no direkte (i stedet for å navigere til /dashboard) så derfor
// alltid innloggingsskjemaet og ba unødvendig om en ny magic-link hver gang.
const cookieStore = await cookies()
const session = cookieStore.get(SESSION_COOKIE_NAME)
let authenticated = false
let profileComplete = true
if (session) {
try {
const res = await fetch(`${API_ORIGIN}/auth/me`, {
headers: { Cookie: `${SESSION_COOKIE_NAME}=${session.value}` },
cache: "no-store",
})
authenticated = res.ok
if (res.ok) {
const data = await res.json()
profileComplete = Boolean(data.profile_complete)
}
} catch {
// API utilgjengelig -- vis innloggingsskjemaet i stedet for å henge.
authenticated = false
}
}
2026-08-08 12:34:50 +02:00
// Obligatorisk profil-fullføring (2026-07-22): en innlogget bruker som
// ennå ikke har fylt ut de obligatoriske profilfeltene sendes til
// /velkommen (ikke rett til /account lenger, se ARCHITECTURE_DECISIONS.md
// -tillegg 2026-08-09 -- brukeren rapporterte at det direkte hoppet til
// skjemaet, uten kontekst, var feil). /velkommen viser PWA-installasjon,
// låste-men-forklarte hurtighandlinger og selve TeeCup-presentasjonen,
// med en tydelig lenke videre til /account.
2026-08-08 12:34:50 +02:00
//
// /logg-inn overtok rollen som ekte innloggingsside 2026-08-08 (se
// CHANGELOG.md) -- denne siden (root) er nå bare en tynn videresending,
// beholdt for gamle bokmerker/lenker til teecup.golf/. Selve
// innloggingsskjemaet (LoginForm, Forest Green) er fjernet -- erstattet
// av TeeCupAuth (clubhouse-palett) på /logg-inn.
redirect(authenticated ? (profileComplete ? "/dashboard" : "/velkommen") : "/logg-inn")
2026-07-17 21:40:42 +02:00
}