このリポジトリは2023-09-09にアーカイブされています。 ファイルの閲覧とクローンは可能ですが、プッシュ、イシューの作成、プルリクエストはできません。
kikikan/backend/resources/js/context.js

53 行
1.2 KiB
JavaScript

import { createContext, useState } from "react";
import { useLocation, useNavigate } from "react-router-dom";
export const HeaderContext = createContext({});
export const HeaderContextProvider = ({ children }) => {
const {pathname} = useLocation();
const navigator = useNavigate();
const acc_type = pathname.split('/')[1];
const [selected_item_sidebar, SetSelectedItemOfSidebar] = useState('');
const handleLogout = () => {
axios.get(`/${acc_type}/logout`)
.then(() => {
localStorage.removeItem(`${acc_type}_token`);
navigator(`/${acc_type}/login`);
})
}
const isAuthenticate = () => {
let token = localStorage.getItem(`${acc_type}_token`);
if (!token){
navigator(`/${acc_type}/login`);
return false;
}
else {
token = JSON.parse(token);
let expires = token.expires;
let now = new Date().getTime(); //current timestamp
if (now >= expires){
handleLogout();
return false;
}
}
return true;
}
return (
<HeaderContext.Provider
value={{
selected_item_sidebar, SetSelectedItemOfSidebar,
handleLogout,
isAuthenticate
}}
>
{children}
</HeaderContext.Provider>
);
};