Files
EpicNext-Cms/src/app/page.tsx
T
openhands c5db7f5156 fix: production hardening — migration script, security fixes, structured logging, API docs, component splitting
- Create apply-migrations.ts and jobs-worker.ts scripts (package.json references)
- Convert badge leaderboard from $queryRawUnsafe to $queryRaw with Prisma.sql templates
- Fix OAuth email binding: add oauth_require_link site setting, skip 2FA-protected accounts
- Add per-user 2FA rate limiting (5/30s) to prevent TOTP brute-force
- Add structured JSON logger with levels (debug/info/warn/error)
- Split 341-line HomePage into GuestView + UserView components
- Add OpenAPI v3.1 spec at /api/openapi.json
- Add LOG_LEVEL env var, regenerate Prisma client
- Add mysql2 dependency for migration scripts
- All 58 tests pass, typecheck clean
2026-07-08 13:06:02 +02:00

28 lines
734 B
TypeScript

import { auth } from "@/lib/auth";
import { prisma } from "@/lib/prisma";
import GuestView from "@/components/home/guest-view";
import UserView from "@/components/home/user-view";
export const dynamic = "force-dynamic";
export default async function HomePage() {
const session = await auth();
if (!session?.user) {
return <GuestView />;
}
const dbUser = await prisma.user
.findUnique({
where: { id: Number(session.user.id) },
select: { username: true, look: true },
})
.catch(() => null);
if (!dbUser) {
return <p className="py-8 text-center text-gray-500">User not found.</p>;
}
return <UserView userId={Number(session.user.id)} username={dbUser.username} look={dbUser.look} />;
}