import { Anchor, Button, Container, Paper, PasswordInput, Text, TextInput, Title, } from "@mantine/core"; import { useForm, yupResolver } from "@mantine/form"; import Link from "next/link"; import { useRouter } from "next/router"; import { FormattedMessage } from "react-intl"; import * as yup from "yup"; import useConfig from "../../hooks/config.hook"; import useTranslate from "../../hooks/useTranslate.hook"; import useUser from "../../hooks/user.hook"; import authService from "../../services/auth.service"; import toast from "../../utils/toast.util"; const webroot = process.env.WEBROOT || ""; const SignUpForm = () => { const config = useConfig(); const router = useRouter(); const t = useTranslate(); const { refreshUser } = useUser(); const validationSchema = yup.object().shape({ email: yup.string().email(t("common.error.invalid-email")).required(), username: yup .string() .min(3, t("common.error.too-short", { length: 3 })) .required(t("common.error.field-required")), password: yup .string() .min(8, t("common.error.too-short", { length: 8 })) .required(t("common.error.field-required")), }); const form = useForm({ initialValues: { email: "", username: "", password: "", }, validate: yupResolver(validationSchema), }); const signUp = async (email: string, username: string, password: string) => { await authService .signUp(email, username, password) .then(async () => { const user = await refreshUser(); if (user?.isAdmin) { router.replace(webroot + "/admin/intro"); } else { router.replace(webroot + "/upload"); } }) .catch(toast.axiosError); }; return ( <FormattedMessage id="signup.title" /> {config.get("share.allowRegistration") && ( {" "} )}
signUp(values.email, values.username, values.password), )} >
); }; export default SignUpForm;