- 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
28 lines
734 B
TypeScript
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} />;
|
|
}
|