diff options
| author | Jan Tuomi <jan.tuomi@eficode.com> | 2020-01-31 19:20:13 +0200 |
|---|---|---|
| committer | Jan Tuomi <jan.tuomi@eficode.com> | 2020-01-31 19:20:13 +0200 |
| commit | fbf108595a00a7c9db5984158e4b02cc345b68d1 (patch) | |
| tree | f3342eac03006d40a23a49fac94db7061abf5d3c /frontend/src/Login.js | |
Initial commit
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; |
