import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { z } from "zod"; import { useAuth } from "@/hooks/use-auth"; import { useOrganization } from "@/context/organization-context"; import { Redirect } from "wouter"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { ThemeToggle } from "@/components/shared/theme-toggle"; import { useTheme } from "@/hooks/use-theme"; import { Loader2 } from "lucide-react"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; const loginSchema = z.object({ username: z.string().min(3, "Username must be at least 3 characters"), password: z.string().min(8, "Password must be at least 8 characters"), }); const registerSchema = z.object({ username: z.string().min(3, "Username must be at least 3 characters"), email: z.string().email("Please enter a valid email"), password: z.string().min(8, "Password must be at least 8 characters"), fullName: z.string().optional(), organizationId: z.string().optional(), }); export default function AuthPage() { const { user, loginMutation, registerMutation } = useAuth(); const { theme } = useTheme(); const { organizations, isLoading: orgsLoading } = useOrganization(); const loginForm = useForm>({ resolver: zodResolver(loginSchema), defaultValues: { username: "", password: "", }, }); const registerForm = useForm>({ resolver: zodResolver(registerSchema), defaultValues: { username: "", email: "", password: "", fullName: "", organizationId: undefined, }, }); const onLoginSubmit = (values: z.infer) => { loginMutation.mutate(values); }; const onRegisterSubmit = (values: z.infer) => { registerMutation.mutate(values); }; // Redirect if already logged in if (user) { return ; } return (
{/* Auth Form */}
DynamoDNS
Welcome Sign in to your account or create a new one
Login Register
( Username or Email )} /> ( Password )} />
( Username )} /> ( Email )} /> ( Full Name (Optional) )} /> ( Password )} /> ( Organization )} />
{/* Hero Section */}

Dynamic DNS Management System

Keep your DNS records up to date across multiple providers with our powerful management platform.

Automatic Updates

Keep your DNS records in sync with your changing IP addresses.

Multi-Provider Support

Manage DNS records across Cloudflare, Route53, GoDaddy, and more.

Comprehensive Metrics

View performance metrics and history for all your DNS records.

); }