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

49 行
1.1 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`);
}
else{
token = JSON.parse(token);
expires = token.expires;
if(new Date().getTime() >= expires){
handleLogout();
}
}
}
return (
<HeaderContext.Provider
value={{
selected_item_sidebar, SetSelectedItemOfSidebar,
handleLogout,
isAuthenticate
}}
>
{children}
</HeaderContext.Provider>
);
};