diff options
Diffstat (limited to 'frontend/src/Login.js')
| -rw-r--r-- | frontend/src/Login.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/frontend/src/Login.js b/frontend/src/Login.js new file mode 100644 index 0000000..e30b496 --- /dev/null +++ b/frontend/src/Login.js @@ -0,0 +1,44 @@ +import React, { useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { navigate } from '@reach/router'; + +import axios from './axios'; +import userState from './UserState'; + +const Login = () => { + const { register, handleSubmit, watch, errors } = useForm(); + const [ loginError, setLoginError ] = useState(null); + + const onSubmit = async data => { + try { + const resp = await axios.post('/login', data); + const { username } = resp.data; + userState.username = username; + navigate('/'); + } catch (err) { + if (err.response && err.response.data) { + setLoginError(err.response.data.error); + } else { + console.error(err); + setLoginError('Unknown error occurred. See console for details.'); + } + } + }; + + return ( + <form onSubmit={handleSubmit(onSubmit)}> + <h1>Log in</h1> + <label> + Username <input name="username" type="text" ref={register} required /> + </label> + <label> + Password <input name="password" type="password" ref={register} required /> + </label> + <button type="submit">Log in</button> + <div className="error">{loginError}</div> + {/* <div className="error">{errors}</div> */} + </form> + ); +}; + +export default Login; |
