Files
evanpage/frontend/app/login/page.tsx
evan f9499c0795 frontend: convert login and register to homepage modals
- Remove register link from login form
- Redirect /login and /register to /?login=1 and /?register=1
- Open login/register as dialogs on homepage instead of separate pages
2026-04-16 16:55:29 +00:00

51 lines
1.4 KiB
TypeScript

"use client";
import { Suspense, useEffect } from "react";
import { useRouter, useSearchParams } from "next/navigation";
import {
Dialog,
DialogContent,
DialogHeader,
DialogTitle,
} from "@/components/ui/dialog";
import { LoginForm } from "./login-form";
const hasKeycloak = !!process.env.AUTH_KEYCLOAK_ISSUER;
function LoginPageContent() {
const router = useRouter();
const searchParams = useSearchParams();
const callbackUrl = searchParams.get("callbackUrl");
const error = searchParams.get("error");
useEffect(() => {
// If not an OAuth callback, redirect to home with login modal open
if (!callbackUrl && !error) {
router.replace("/?login=1");
}
}, [callbackUrl, error, router]);
return (
<div className="flex min-h-screen items-center justify-center bg-gradient-to-br from-slate-50 to-slate-100 p-4">
<Dialog defaultOpen>
<DialogContent className="sm:max-w-md">
<DialogHeader>
<DialogTitle className="text-center"></DialogTitle>
</DialogHeader>
<Suspense fallback={<div>...</div>}>
<LoginForm hasKeycloak={hasKeycloak} />
</Suspense>
</DialogContent>
</Dialog>
</div>
);
}
export default function LoginPage() {
return (
<Suspense fallback={<div className="flex min-h-screen items-center justify-center">...</div>}>
<LoginPageContent />
</Suspense>
);
}