-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadmin.js
67 lines (63 loc) · 2.05 KB
/
admin.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import React from 'react'
import SignUp from '../components/formComponents/SignUp'
import ConfirmSignUp from '../components/formComponents/ConfirmSignUp'
import SignIn from '../components/formComponents/SignIn'
import Inventory from '../components/Inventory'
class Admin extends React.Component {
state = { formState: 'signUp', isAdmin: false }
toggleFormState = (formState) => {
this.setState(() => ({ formState }))
}
async componentDidMount() {
// check and update signed in state
}
signUp = async (form) => {
const { username, email, password } = form
// sign up
this.setState({ formState: 'confirmSignUp' })
}
confirmSignUp = async (form) => {
const { username, authcode } = form
// confirm sign up
this.setState({ formState: 'signIn' })
}
signIn = async (form) => {
const { username, password } = form
// signIn
this.setState({ formState: 'signedIn', isAdmin: true })
}
signOut = async() => {
// sign out
this.setState({ formState: 'signUp' })
}
render() {
const { formState, isAdmin } = this.state
const renderForm = (formState, state) => {
switch(formState) {
case 'signUp':
return <SignUp {...state} signUp={this.signUp} toggleFormState={this.toggleFormState} />
case 'confirmSignUp':
return <ConfirmSignUp {...state} confirmSignUp={this.confirmSignUp} />
case 'signIn':
return <SignIn {...state} signIn={this.signIn} toggleFormState={this.toggleFormState} />
case 'signedIn':
return isAdmin ? <Inventory {...state} signOut={this.signOut} /> : <h3>Not an admin</h3>
default:
return null
}
}
return (
<div className="flex flex-col">
<div className="max-w-fw flex flex-col">
<div className="pt-10">
<h1 className="text-5xl font-light">Admin Panel</h1>
</div>
{
renderForm(formState)
}
</div>
</div>
)
}
}
export default Admin