2020-11-09 08:45:04 -08:00
2020-11-29 09:05:56 -08:00
import React , { useState , useContext } from "react" ;
import { useHistory } from "react-router-dom" ;
import UserContext from "../context/UserContext" ;
import Axios from "axios" ;
import { Link } from "react-router-dom" ;
import ErrorNotice from "./ErrorNotice" ;
2020-11-09 08:45:04 -08:00
2020-11-30 08:56:17 -08:00
const Login = ( ) => {
2020-11-25 08:04:55 -08:00
2020-12-06 08:59:40 -08:00
const [ email , setEmail ] = useState ( ) ;
2020-11-29 09:05:56 -08:00
const [ password , setPassword ] = useState ( ) ;
const [ error , setError ] = useState ( ) ;
const { setUserData } = useContext ( UserContext ) ;
2020-12-06 08:59:40 -08:00
2020-11-29 09:05:56 -08:00
const history = useHistory ( ) ;
2020-11-09 08:45:04 -08:00
2020-11-29 09:05:56 -08:00
const submit = async ( e ) => {
e . preventDefault ( ) ;
try {
const loginUser = { email , password } ;
const loginRes = await Axios . post (
"http://localhost:5000/users/login" ,
loginUser
) ;
2020-12-06 08:59:40 -08:00
console . log ( loginRes ) ;
2020-11-29 09:05:56 -08:00
setUserData ( {
token : loginRes . data . token ,
user : loginRes . data . user ,
} ) ;
localStorage . setItem ( "auth-token" , loginRes . data . token ) ;
2020-12-06 08:59:40 -08:00
history . push ( "/register" ) ;
2020-11-29 09:05:56 -08:00
} catch ( err ) {
err . response . data . msg && setError ( err . response . data . msg ) ;
}
} ;
2020-11-09 08:45:04 -08:00
return (
2020-11-28 09:28:50 -08:00
2020-11-09 08:45:04 -08:00
< div className = "FormCenter" >
2020-11-29 09:05:56 -08:00
< form className = "FormFields" onSubmit = { submit } >
2020-11-09 08:45:04 -08:00
< div className = "FormField" >
< label className = "FormField__Label" htmlFor = "email" > E - Mail Address < / l a b e l >
2020-11-29 09:05:56 -08:00
< input type = "email" id = "email" className = "FormField__Input" value = { email } placeholder = "Enter your email" name = "email" onChange = { ( e ) => setEmail ( e . target . value ) } / >
2020-11-09 08:45:04 -08:00
< / d i v >
< div className = "FormField" >
< label className = "FormField__Label" htmlFor = "password" > Password < / l a b e l >
2020-11-29 09:05:56 -08:00
< input type = "password" id = "password" className = "FormField__Input" value = { password } placeholder = "Enter your password" name = "password" onChange = { ( e ) => setPassword ( e . target . value ) } / >
2020-11-09 08:45:04 -08:00
< / d i v >
< div className = "FormField" >
2020-11-29 09:05:56 -08:00
< button className = "FormField__Button mr-20" > Sign In < / b u t t o n > < L i n k e x a c t t o = " / s i g n - u p " c l a s s N a m e = " F o r m F i e l d _ _ L i n k " > N o t a m e m b e r ? < / L i n k >
2020-11-09 08:45:04 -08:00
< / d i v >
< / f o r m >
2020-11-29 09:05:56 -08:00
{ error && (
< ErrorNotice message = { error } clearError = { ( ) => setError ( undefined ) } / >
) }
2020-11-09 08:45:04 -08:00
< / d i v >
) ;
}
2020-11-30 08:56:17 -08:00
export default Login ;