diff options
| author | Jan Tuomi <jan.tuomi@eficode.com> | 2020-02-05 19:25:36 +0200 |
|---|---|---|
| committer | Jan Tuomi <jan.tuomi@eficode.com> | 2020-02-05 19:25:36 +0200 |
| commit | 71d9490d0988c97b8b023a70e0b61c65f32ad3b9 (patch) | |
| tree | df6f3db2c1f3c3ef9339843431a79197b465a74c /frontend/src | |
| parent | 48a60c896d86de9bf76806ca60da35ef9f77259e (diff) | |
Implement permissions
Diffstat (limited to 'frontend/src')
| -rw-r--r-- | frontend/src/Home.js | 11 | ||||
| -rw-r--r-- | frontend/src/Login.js | 17 | ||||
| -rw-r--r-- | frontend/src/Register.js | 18 | ||||
| -rw-r--r-- | frontend/src/UserList.js | 56 |
4 files changed, 83 insertions, 19 deletions
diff --git a/frontend/src/Home.js b/frontend/src/Home.js index c67c69a..50524bd 100644 --- a/frontend/src/Home.js +++ b/frontend/src/Home.js @@ -3,6 +3,7 @@ import { observer } from 'mobx-react'; import LogoutBtn from './LogoutBtn'; import userState from './UserState'; +import UserList from './UserList'; const Home = observer(({ user }) => { if (user.authError) { @@ -17,11 +18,17 @@ const Home = observer(({ user }) => { return ( <div> - <LogoutBtn /> - Hello {user.username}! + <div className="navbar"> + <LogoutBtn /> + </div> + + <h1 className="title">Hello {user.username}!</h1> <div> <img src="https://placehold.it/200x200" alt="Placeholder" /> </div> + <div> + <UserList /> + </div> </div> ); }); diff --git a/frontend/src/Login.js b/frontend/src/Login.js index d17a5ab..70fff91 100644 --- a/frontend/src/Login.js +++ b/frontend/src/Login.js @@ -28,17 +28,16 @@ const Login = () => { return ( <form onSubmit={handleSubmit(onSubmit)}> - <h1>Log in</h1> - <label> - Username <input name="username" type="text" ref={register} required /> + <h1 class="title">Log in</h1> + <label className="label"> + Username <input className="input" name="username" type="text" ref={register} required /> </label> - <label> - Password <input name="password" type="password" ref={register} required /> + <label className="label"> + Password <input className="input" name="password" type="password" ref={register} required /> </label> - <label> - Remember me <input name="remember" type="checkbox" ref={register} /> - </label> - <button type="submit">Log in</button> + <button className="button" type="submit"> + Log in + </button> <div className="error">{loginError}</div> <div> No account? Register <Link to="/register">here</Link>. diff --git a/frontend/src/Register.js b/frontend/src/Register.js index f4a6ec3..6ba1537 100644 --- a/frontend/src/Register.js +++ b/frontend/src/Register.js @@ -32,17 +32,19 @@ const Register = () => { return ( <form onSubmit={handleSubmit(onSubmit)}> - <h1>Register new account</h1> - <label> - Username <input name="username" type="text" ref={register} required /> + <h1 className="title">Register new account</h1> + <label className="label"> + Username <input className="input" name="username" type="text" ref={register} required /> </label> - <label> - Password <input name="password" type="password" ref={register} required /> + <label className="label"> + Password <input className="input" name="password" type="password" ref={register} required /> </label> - <label> - Confirm password <input name="confirm_password" type="password" ref={register} required /> + <label className="label"> + Confirm password <input className="input" name="confirm_password" type="password" ref={register} required /> </label> - <button type="submit">Register</button> + <button className="button" type="submit"> + Register + </button> <div className="error">{loginError}</div> {/* <div className="error">{errors}</div> */} </form> diff --git a/frontend/src/UserList.js b/frontend/src/UserList.js new file mode 100644 index 0000000..dd17ace --- /dev/null +++ b/frontend/src/UserList.js @@ -0,0 +1,56 @@ +import React, { useEffect, useState } from 'react'; +import axios from './axios'; + +const UserList = () => { + const [ data, setData ] = useState({}); + useEffect(() => { + (async () => { + try { + const resp = await axios.get('/users'); + setData({ + users: resp.data.users, + }); + } catch (err) { + if (err.response.status === 401) { + setData({ + error: err.response.data.error, + }); + } else { + throw err; + } + } + })(); + }, []); + + const users = data.users; + const userRows = !!users + ? users.map(user => ( + <tr key={user.id}> + <td>{user.id}</td> + <td>{user.username}</td> + </tr> + )) + : null; + + return ( + <div> + <h2 className="subtitle">User list</h2> + <div> + <div className="error" key="error"> + {data.error} + </div> + <table className="table"> + <thead> + <tr> + <th>ID</th> + <th>Username</th> + </tr> + </thead> + <tbody>{userRows}</tbody> + </table> + </div> + </div> + ); +}; + +export default UserList; |
