Skip to content

Commit 889814b

Browse files
authored
Merge pull request #96 from AgainIoT/feature/83
Fix : manage login state only in Header #83
2 parents f55db23 + c1e4494 commit 889814b

File tree

2 files changed

+35
-39
lines changed

2 files changed

+35
-39
lines changed

src/layout/Header.js

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ import MenuItem from "@mui/material/MenuItem";
1717
import MenuIcon from "@mui/icons-material/Menu";
1818
import LOGO from "../../src/assets/images/Logo.svg";
1919
import axios from "axios";
20-
import { useRecoilState } from "recoil";
20+
import { useRecoilState, useSetRecoilState } from "recoil";
2121
import { avatar, id, name, isLogin } from "../recoil/authorize";
2222
import styled from "styled-components";
23+
2324
const ElevationScroll = (props) => {
2425
const { children, window } = props;
2526
// Note that you normally won't need to set the window ref as useScrollTrigger
@@ -42,19 +43,44 @@ ElevationScroll.propTypes = {
4243
*/
4344
window: PropTypes.func,
4445
};
46+
47+
async function checkTokenValid() {
48+
const isTokenValid = await axios.get(
49+
`${process.env.REACT_APP_SERVER_URL}/auth/checkToken`,
50+
{
51+
validateStatus: (status) => {
52+
return status < 500;
53+
},
54+
withCredentials: true,
55+
},
56+
);
57+
return isTokenValid.status < 400;
58+
}
59+
4560
export const Header = (props) => {
4661
const [anchorElNav, setAnchorElNav] = useState(null);
4762
const [anchorElUser, setAnchorElUser] = useState(null);
4863
const [src, setSrc] = useRecoilState(avatar);
4964
const [userId, setUserId] = useRecoilState(id);
5065
const [userName, setUserName] = useRecoilState(name);
51-
const [Login, setLogin] = useRecoilState(isLogin);
52-
React.useEffect(() => {
53-
if (Login) {
66+
const setIsLogin = useSetRecoilState(isLogin);
67+
68+
const checkIsLogin = async () => {
69+
const loggedIn = await checkTokenValid();
70+
if (loggedIn) {
5471
setSrc(localStorage.avatar);
5572
setUserId(localStorage.id);
5673
setUserName(localStorage.name);
74+
} else {
75+
localStorage.removeItem("id");
76+
localStorage.removeItem("name");
77+
localStorage.removeItem("avatar");
5778
}
79+
setIsLogin(loggedIn);
80+
};
81+
82+
React.useEffect(() => {
83+
checkIsLogin();
5884
}, []);
5985
const handleOpenNavMenu = (event) => {
6086
setAnchorElNav(event.currentTarget);
@@ -78,7 +104,7 @@ export const Header = (props) => {
78104
"",
79105
{ withCredentials: true },
80106
);
81-
setLogin(false);
107+
setIsLogin(false);
82108
localStorage.setItem("id", "guest");
83109
localStorage.setItem("name", "guest");
84110
localStorage.setItem("avatar", "");
@@ -162,7 +188,7 @@ export const Header = (props) => {
162188
<MenuItem
163189
key={"Docs"}
164190
onClick={() =>
165-
handleOpenNewTab("https://docs.open-set-go.com")
191+
handleOpenNewTab("https://open-set-go.netlify.app/")
166192
}
167193
>
168194
<Typography textAlign="center">Docs</Typography>
@@ -211,7 +237,9 @@ export const Header = (props) => {
211237
))}
212238
<MenuItemWrapper
213239
key="docs"
214-
onClick={() => handleOpenNewTab("https://docs.open-set-go.com")}
240+
onClick={() =>
241+
handleOpenNewTab("https://open-set-go.netlify.app/")
242+
}
215243
>
216244
Docs
217245
</MenuItemWrapper>

src/pages/MainPage.js

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,8 @@ import Footer from "../components/main/Footer";
33
import Steps from "../components/main/Steps";
44
import propTypes from "prop-types";
55
import { Header } from "../layout/Header";
6-
import { useEffect } from "react";
7-
import { useSetRecoilState } from "recoil";
8-
import { isLogin } from "../recoil/authorize";
9-
import axios from "axios";
10-
11-
async function checkTokenValid() {
12-
const isTokenValid = await axios.get(
13-
`${process.env.REACT_APP_SERVER_URL}/auth/checkToken`,
14-
{
15-
validateStatus: (status) => {
16-
return status < 500;
17-
},
18-
withCredentials: true,
19-
},
20-
);
21-
return isTokenValid.status < 400;
22-
}
236

247
function MainPage() {
25-
const setIsLogin = useSetRecoilState(isLogin);
26-
27-
const checkIsLogin = async () => {
28-
const loggedIn = await checkTokenValid();
29-
if (!loggedIn) {
30-
localStorage.removeItem("id");
31-
localStorage.removeItem("name");
32-
localStorage.removeItem("avatar");
33-
}
34-
setIsLogin(loggedIn);
35-
};
36-
37-
useEffect(() => {
38-
checkIsLogin();
39-
}, []);
408
return (
419
<>
4210
<Header burger={true} pages={["Steps"]} settings={["Logout"]} />

0 commit comments

Comments
 (0)