diff --git a/src/components/form/LoginForm.tsx b/src/components/form/LoginForm.tsx
index 980c332..9fdc673 100644
--- a/src/components/form/LoginForm.tsx
+++ b/src/components/form/LoginForm.tsx
@@ -9,7 +9,7 @@ import {
} from '@chakra-ui/react';
import {useState} from 'react';
import {useRouter} from 'next/router';
-import {signIn, SignInResponse,} from 'next-auth/react';
+import {signIn, SignInResponse} from 'next-auth/react';
import {LoginData} from '@/models/form/LoginData';
@@ -20,20 +20,18 @@ export default function LoginForm() {
const buttonWidth = {base: '100%', md: 'unset'};
- const handleInput = ({email = loginData.email, password = loginData.password}) => {
+ const handleInput = (data: any) => {
setInvalidInput(false);
- setLoginData(new LoginData(email, password));
+ setLoginData({...loginData, ...data});
};
const handleSubmit = async () => {
- const {email, password} = loginData;
await signIn('credentials',
- {email, password, redirect: false})
- .then((res) => {
- const {ok} = res as SignInResponse
+ {...loginData, redirect: false}).then((res) => {
+ const {ok} = res as SignInResponse;
- if (!ok) setInvalidInput(true)
- else router.push("/")
+ if (!ok) setInvalidInput(true);
+ else router.push('/');
});
};
@@ -43,22 +41,23 @@ export default function LoginForm() {
Connexion
{/* Email */}
-
-
- Adresse email
- handleInput({email: evt.target.value})}
- placeholder={'adresse@email.com'}
- required={true}
- />
-
+
- {/* Mot de passe */}
-
+ Adresse email
+ handleInput({email: evt.target.value})}
+ placeholder={'adresse@email.com'}
+ required={true}
+ />
+
+
+ {/* Mot de passe */
+ }
+
Mot de passe
-
-
- {/*Boutons*/}
-
-
-
-
-
-
-
- );
+
+ {/*Boutons*/
+ }
+
+
+
+
+
+
+)
+
}
\ No newline at end of file
diff --git a/src/components/form/RegisterForm.tsx b/src/components/form/RegisterForm.tsx
new file mode 100644
index 0000000..fdad3bf
--- /dev/null
+++ b/src/components/form/RegisterForm.tsx
@@ -0,0 +1,120 @@
+import {
+ Box, Button,
+ Flex,
+ FormControl,
+ FormLabel,
+ Heading,
+ Input,
+ Container,
+} from '@chakra-ui/react';
+import {useRouter} from 'next/router';
+import {useState} from 'react';
+import {RegisterData} from '@/models/form/RegisterData';
+
+export default function RegisterForm() {
+ const router = useRouter();
+ const [registerData, setRegisterData] = useState(new RegisterData());
+ const [invalidInput, setInvalidInput] = useState(false);
+
+ const buttonWidth = {base: '100%', md: 'unset'};
+
+ const handleInput = (data: any) => {
+ setInvalidInput(false);
+ setRegisterData({...registerData, ...data});
+ };
+
+ const handleSubmit = () => {
+ const {password, confirmPassword} = registerData;
+ if (password !== confirmPassword) setInvalidInput(true);
+
+ fetch('/api/user/new', {
+ method: 'PUT',
+ headers: {'Content-Type': 'application/json'},
+ body: JSON.stringify(registerData),
+ }).then(() => router.push('/')).catch(() => {
+ setInvalidInput(true);
+ setRegisterData({...registerData, password: '', confirmPassword: ''});
+ });
+ };
+
+ return (
+
+
+ Inscription
+
+
+ {/*Prénom*/}
+
+ Prénom
+ handleInput({firstName: evt.target.value})}
+ placeholder="Prénom"
+ required={true}
+ />
+
+
+ {/*Nom*/}
+
+ Nom
+ handleInput({lastName: evt.target.value})}
+ placeholder="Nom"
+ required={true}
+ />
+
+
+
+ {/*Email*/}
+
+ Adresse email
+ handleInput({email: evt.target.value})}
+ placeholder="adresse@email.com"
+ />
+
+
+ {/*Mot de passe*/}
+
+ Mot de passe
+ handleInput({password: evt.target.value})}
+ placeholder="Mot de passe"
+ />
+
+
+ {/*Mot de passe (2)*/}
+
+ Confirmation du mot de passe
+ handleInput(
+ {confirmPassword: evt.target.value})}
+ placeholder="Mot de passe"
+ />
+
+
+
+
+
+
+
+
+
+ );
+
+}
diff --git a/src/models/form/RegisterData.ts b/src/models/form/RegisterData.ts
new file mode 100644
index 0000000..6350cd4
--- /dev/null
+++ b/src/models/form/RegisterData.ts
@@ -0,0 +1,10 @@
+export class RegisterData {
+
+ constructor(
+ public firstName: string = "",
+ public lastName: string = "",
+ public email: string = "",
+ public password: string = "",
+ public confirmPassword: string = "",
+ ) {}
+}
\ No newline at end of file
diff --git a/src/pages/register.tsx b/src/pages/register.tsx
index 0d1a01f..c28e46c 100644
--- a/src/pages/register.tsx
+++ b/src/pages/register.tsx
@@ -12,150 +12,18 @@ import {
} from '@chakra-ui/react';
import {useRouter} from 'next/router';
import {useForm} from 'react-hook-form';
-
-type FormValues = {
- firstName: string
- lastName: string
- email: string
- password: string
- confirmPassword: string
-}
+import RegisterForm from '@/components/form/RegisterForm';
export default function Register() {
- const {
- handleSubmit,
- register,
- formState: {errors, isSubmitting},
- } = useForm();
-
- const router = useRouter();
-
- const redirect_home = () => {
- router.push('/');
- };
-
- const onRegister = async (values: FormValues) => {
- // Verify password
- if (values.password !== values.confirmPassword) {
- alert('Les mots de passe ne correspondent pas');
- return;
- }
-
- // Create User
- fetch('/api/user/', {
- method: 'PUT',
- headers: {'Content-Type': 'application/json'},
- body: JSON.stringify(values),
- }).then(res => res.json()).then(data => {
- if (data.error) throw new Error();
- alert('Inscription réussie');
- router.push('/');
- }).catch(err => console.error(err));
- };
-
- const RightSide = () => (
-
- Inscription
-
-
-
-
- );
-
- const LeftSide = () => (
-
-
-
- );
return (
-
-
-
-
-
-
+
+
+
+
+
+
);
}