Newer
Older
import React, { useState } from 'react';
import isEmail from 'validator/lib/isEmail';
import isEmpty from 'validator/lib/isEmpty';
import equals from 'validator/lib/equals';
import errorAlert from '../Helpers/errorAlert';
import successAlert from '../Helpers/successAlert';
import {signUp} from '../api/auth';
firstName: 'Fin',
lastName: 'Wallis',
email: 'user@gmail.com',
password: 'password123',
confirmPassword: 'password123',
const handleSubmit = (event) => {
event.preventDefault()
console.log(formData)
// Form validation
if (isEmpty(formData.firstName) || isEmpty(formData.lastName) || isEmpty(formData.email) || isEmpty(formData.password) || isEmpty(formData.confirmPassword)) {
setFormData({
...formData, errorMsg: 'All fields are required',
})
}
else if (!isEmail(formData.email)) {
setFormData({
...formData, errorMsg: 'Invalid email',
})
}
else if (!equals(formData.password, formData.confirmPassword)) {
setFormData({
...formData, errorMsg: 'Passwords do not match',
})
} else {
const {firstName, lastName, email, password} = formData
const data = {firstName, lastName, email, password}
signUp(data)
.then((response) => {
console.log('axios success', response)
setFormData({
firstName: '',
lastName: '',
email: '',
password: '',
confirmPassword: '',
successMsg: response.data.successMessage
console.log("Axios error:", err)
setFormData({
...formData, errorMsg: err.response.data.errorMessage
})
}
return (
<div className='flex mt-20 items-center justify-center'>
<div className='bg-white p-12 rounded-md w-1/3 shadow-lg'>
<h1 className='text-black font-montserrat font-extrabold text-3xl mb-12 ml-3'>Tickcrypt</h1>
<form className='signup-form space-y-5 px-100' onSubmit={handleSubmit} noValidate>
{formData.errorMsg && errorAlert(formData.errorMsg)}
{formData.successMsg && successAlert(formData.successMsg)}
<input className='font-montserrat font-medium rounded-full w-full py-4 px-7 shadow-lg' name='firstName' value={formData.firstName} type='text' placeholder='First Name' onChange={handleChange}></input>
<input className='font-montserrat font-medium rounded-full w-full py-4 px-7 shadow-lg' name='lastName' value={formData.lastName} type='text' placeholder='Last Name' onChange={handleChange}></input>
<input className='font-montserrat font-medium rounded-full w-full py-4 px-7 shadow-lg' name='email' value={formData.email} type='email' placeholder='Email Address' onChange={handleChange}></input>
<input className='font-montserrat font-medium rounded-full w-full py-4 px-7 shadow-lg' name='password' value={formData.password} type='password' placeholder='Password' onChange={handleChange}></input>
<input className='font-montserrat font-medium rounded-full w-full py-4 px-7 shadow-lg' name='confirmPassword' value={formData.confirmPassword} type='password' placeholder='Confirm Password' onChange={handleChange}></input>
<button className='py-4 px-14 text-white bg-purple-500 hover:bg-purple-400 font-montserrat font-medium rounded-full' type='submit'>Sign Up</button>
<div className='mt-6 '>
<p className='forgot-password'>
<Link to='/ForgotPassword' className='text-gray-400'>Forgot Password?</Link>
</p>
<div className='mt-4'>
<p className='text-gray-400 inline'>
Already have a Tickcrypt account?
</p>
<Link to='/Login' className=' pl-2 text-purple-500'>Sign In</Link>
</div>
</div>
</form>
</div>
</div>
);
}
export default SignUpForm;