import { Column, Form, FormButtons, FormField, FormSubmitButton, Heading, Icon, PasswordField, TextField, Button, } from '@umami/react-zen'; import { useRouter } from 'next/navigation'; import { useApi, useMessages, useUpdateQuery } from '@/components/hooks'; import { Logo } from '@/components/svg'; import { setClientAuthToken } from '@/lib/client'; import { setUser } from '@/store/app'; export function LoginForm() { const { formatMessage, labels, getErrorMessage } = useMessages(); const router = useRouter(); const { mutateAsync, error } = useUpdateQuery('/auth/login'); const { useMutation } = useApi(); const { mutate: startOIDC, isPending: isOIDC } = useMutation({ mutationFn: async (returnUrl?: string) => { const res = await fetch( `/api/auth/oidc/authorize?returnUrl=${encodeURIComponent(returnUrl || '/dashboard')}`, ); const data = await res.json(); if (data?.url) { window.location.href = data.url; } return data; }, }); const handleSubmit = async (data: any) => { await mutateAsync(data, { onSuccess: async ({ token, user }) => { setClientAuthToken(token); setUser(user); router.push('/'); }, }); }; return ( umami
{formatMessage(labels.login)}
); }