- Frontend: Next.js 15 (App Router), Auth.js v5, shadcn/ui, MagicUI - Backend: Go + Gin + GORM with layered architecture - Auth: Local credentials login with optional Keycloak OAuth binding - Admin: RBAC user management for admin role - Dev: Docker Compose with hot reload for both frontend and backend - Docker: 3-service orchestration (frontend, backend, postgres) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
15 lines
402 B
TypeScript
15 lines
402 B
TypeScript
import { Suspense } from "react";
|
|
import { LoginForm } from "./login-form";
|
|
|
|
const hasKeycloak = !!process.env.AUTH_KEYCLOAK_ISSUER;
|
|
|
|
export default function LoginPage() {
|
|
return (
|
|
<div className="flex min-h-screen items-center justify-center bg-gray-50 p-4">
|
|
<Suspense fallback={<div>加载中...</div>}>
|
|
<LoginForm hasKeycloak={hasKeycloak} />
|
|
</Suspense>
|
|
</div>
|
|
);
|
|
}
|