import { Button, FormControl, FormLabel, Input, useToast, VStack, Text, Divider, } from '@chakra-ui/react'; import React, { useEffect } from 'react'; import { useMutation } from 'urql'; import { AuthLayout } from '../layouts/AuthLayout'; import { AdminLogin, AdminSignup } from '../graphql/mutation'; import { useNavigate } from 'react-router-dom'; import { useAuthContext } from '../contexts/AuthContext'; import { capitalizeFirstLetter, hasAdminSecret } from '../utils'; export default function Auth() { const [loginResult, login] = useMutation(AdminLogin); const [signUpResult, signup] = useMutation(AdminSignup); const { setIsLoggedIn } = useAuthContext(); const toast = useToast(); const navigate = useNavigate(); const isLogin = hasAdminSecret(); const handleSubmit = (e: any) => { e.preventDefault(); const formValues = [...e.target.elements].reduce((agg: any, elem: any) => { if (elem.id) { return { ...agg, [elem.id]: elem.value, }; } return agg; }, {}); (isLogin ? login : signup)({ secret: formValues['admin-secret'], }).then((res) => { if (res.data) { setIsLoggedIn(true); navigate('/', { replace: true }); } }); }; const errors = isLogin ? loginResult.error : signUpResult.error; useEffect(() => { if (errors?.graphQLErrors) { (errors?.graphQLErrors || []).map((error: any) => { toast({ title: capitalizeFirstLetter(error.message), isClosable: true, status: 'error', position: 'bottom-right', }); }); } }, [errors]); return ( Hi there 👋
Welcome to Authorizer Administrative Dashboard
{/* {isLogin ? 'Enter' : 'Configure'} Admin Secret */} {isLogin ? ( Note: In case if you have forgot your admin secret, you can reset it by updating ADMIN_SECRET environment variable. For more information, please refer to the{' '} documentation. ) : ( Note: You can also configure admin secret by setting{' '} ADMIN_SECRET environment variable. For more information, please refer to the{' '} documentation. )}
); }