Skip to content

Commit d806cda

Browse files
committed
better auth context stuff
1 parent 7ffe34a commit d806cda

File tree

3 files changed

+33
-19
lines changed

3 files changed

+33
-19
lines changed

src/auth/Login.js

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,34 @@ import Panel from '../ui/Panel'
33
import Card from '../ui/Card'
44
import { useAuthUser } from '../utils/AuthUser'
55

6+
// Fake API Network Call
7+
const apiLogin = (username, password) => {
8+
return new Promise((resolve, reject) => {
9+
if (username === 'react' && password === 'react') {
10+
resolve()
11+
} else {
12+
reject()
13+
}
14+
})
15+
}
16+
617
const Login = ({ history }) => {
7-
const { login } = useAuthUser()
18+
const { setLogged } = useAuthUser()
819
const [errorMessage, setErrorMessage] = useState()
920

1021
function handleSubmit(e) {
1122
e.preventDefault()
1223
const [usernameNode, passwordNode] = e.target.elements
1324

14-
if (usernameNode.value === 'react' && passwordNode.value === 'react') {
15-
login()
16-
history.push('/projects')
17-
} else {
18-
setErrorMessage('Invalid')
19-
}
25+
apiLogin(usernameNode.value, passwordNode.value)
26+
.then(() => {
27+
setLogged(true)
28+
history.push('/projects')
29+
})
30+
.catch(() => {
31+
setLogged(false)
32+
setErrorMessage('Invalid')
33+
})
2034
}
2135

2236
return (
@@ -31,7 +45,7 @@ const Login = ({ history }) => {
3145
The username is <strong>react</strong> and the password is <strong>react</strong>
3246
</p>
3347
{errorMessage && <p style={{ color: 'red' }}>{errorMessage}</p>}
34-
<form onSubmit={handleSubmit} className="spacing">
48+
<form className="spacing" onSubmit={handleSubmit}>
3549
<input type="text" placeholder="Username" required />
3650
<input type="password" placeholder="Password" required />
3751
<button type="submit" className="button">

src/ui/AuthorizedPrimaryHeader.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import classnames from 'classnames'
44
import { useAuthUser } from '../utils/AuthUser'
55

66
const AuthorizedPrimaryHeader = () => {
7-
const { logout } = useAuthUser()
7+
const { setLogged } = useAuthUser()
88

99
return (
1010
<header className="authorized-primary-header">
@@ -19,7 +19,7 @@ const AuthorizedPrimaryHeader = () => {
1919
)}
2020
/>
2121
<nav className="primary-nav">
22-
<button className="logout text-light-tint" onClick={logout}>
22+
<button onClick={() => setLogged(false)} className="logout text-light-tint">
2323
Logout
2424
</button>
2525
<div className="avatar" />

src/utils/AuthUser.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ const cookieName = 'RR5CourseLogged'
88

99
export const AuthUserProvider = ({ children }) => {
1010
const cookieLogged = Cookies.getJSON(cookieName)
11-
const [logged, setLogged] = useState(cookieLogged ? cookieLogged.logged : false)
11+
const [logged, setLoggedState] = useState(cookieLogged ? cookieLogged.logged : false)
1212

13-
function login() {
14-
Cookies.set(cookieName, { logged: true })
15-
setLogged(true)
16-
}
13+
const setLogged = logged => {
14+
if (logged) {
15+
Cookies.set(cookieName, { logged: true })
16+
} else {
17+
Cookies.remove(cookieName)
18+
}
1719

18-
function logout() {
19-
Cookies.remove(cookieName)
20-
setLogged(false)
20+
setLoggedState(logged)
2121
}
2222

23-
return <AuthUserContext.Provider value={{ logged, login, logout }}>{children}</AuthUserContext.Provider>
23+
return <AuthUserContext.Provider value={{ logged, setLogged }}>{children}</AuthUserContext.Provider>
2424
}
2525

2626
export const useAuthUser = () => {

0 commit comments

Comments
 (0)