Skip to content

Commit 09fe567

Browse files
committed
add logout page to frontend
1 parent 84b1de0 commit 09fe567

File tree

2 files changed

+42
-8
lines changed

2 files changed

+42
-8
lines changed

frontend/src/actions/userActions.jsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,8 @@ export const login = (email, password) => async (dispatch) => {
3333
});
3434
}
3535
};
36+
37+
export const logout = () => (dispatch) => {
38+
localStorage.removeItem("userInfo");
39+
dispatch({ type: USER_LOGOUT });
40+
};

frontend/src/components/Navbar.jsx

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,24 @@
11
import React from "react";
2-
import { Navbar, Nav, Container } from "react-bootstrap";
2+
import { Navbar, Nav, Container, NavDropdown } from "react-bootstrap";
33
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
4-
import { faShoppingCart, faSignInAlt } from "@fortawesome/free-solid-svg-icons";
4+
import {
5+
faShoppingCart,
6+
faSignInAlt,
7+
faSignOutAlt,
8+
faUserAlt,
9+
} from "@fortawesome/free-solid-svg-icons";
510
import { LinkContainer } from "react-router-bootstrap";
11+
import { useDispatch, useSelector } from "react-redux";
12+
import { logout } from "../actions/userActions";
613

714
function Navigaton() {
15+
const { userInfo } = useSelector((state) => state.userLogin);
16+
const dispatch = useDispatch();
17+
18+
const logoutHandler = (e) => {
19+
dispatch(logout());
20+
};
21+
822
return (
923
<div>
1024
<Navbar bg="dark" variant="dark" expand="lg" collapseOnSelect>
@@ -21,12 +35,27 @@ function Navigaton() {
2135
Cart
2236
</Nav.Link>
2337
</LinkContainer>
24-
<LinkContainer to="/login">
25-
<Nav.Link>
26-
<FontAwesomeIcon icon={faSignInAlt} />
27-
Login
28-
</Nav.Link>
29-
</LinkContainer>
38+
{userInfo ? (
39+
<NavDropdown title={userInfo.username} id="username">
40+
<LinkContainer to="/profile">
41+
<NavDropdown.Item>
42+
<FontAwesomeIcon icon={faUserAlt} />
43+
Profile
44+
</NavDropdown.Item>
45+
</LinkContainer>
46+
<NavDropdown.Item onClick={logoutHandler}>
47+
<FontAwesomeIcon icon={faSignOutAlt} />
48+
Logout
49+
</NavDropdown.Item>
50+
</NavDropdown>
51+
) : (
52+
<LinkContainer to="/login">
53+
<Nav.Link>
54+
<FontAwesomeIcon icon={faSignInAlt} />
55+
Login
56+
</Nav.Link>
57+
</LinkContainer>
58+
)}
3059
</Nav>
3160
</Navbar.Collapse>
3261
</Container>

0 commit comments

Comments
 (0)