## 概要 [Task1829: ログアウト時にlogoutRedirectを使うようにする](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1829) - タイトルの通り - 該当箇所をすべて修正 ## レビューポイント - 特になし ## UIの変更 - Before/Afterのスクショなど - スクショ置き場 ## 動作確認状況 - ローカルで確認 ## 補足 - B2Cの設定も修正 - 不要なアクセストークンは発行しないように修正
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import { useEffect } from "react";
|
|
import {
|
|
isAuthenticatedSelector,
|
|
isTokenExpired,
|
|
} from "features/auth/selectors";
|
|
import { useDispatch, useSelector } from "react-redux";
|
|
import { AppDispatch } from "app/store";
|
|
import { clearToken } from "features/auth";
|
|
import { useMsal } from "@azure/msal-react";
|
|
|
|
type RouteAuthGuardProps = {
|
|
component: JSX.Element;
|
|
};
|
|
|
|
export const RouteAuthGuard = (props: RouteAuthGuardProps) => {
|
|
const isAuth = useSelector(isAuthenticatedSelector);
|
|
const isExpired = useSelector(isTokenExpired);
|
|
const dispatch: AppDispatch = useDispatch();
|
|
const { instance } = useMsal();
|
|
const { component } = props;
|
|
// トークンがないor有効期限が切れていたらログアウトしてTopへリダイレクト
|
|
useEffect(() => {
|
|
if (!isAuth || isExpired) {
|
|
dispatch(clearToken());
|
|
// B2Cからもログアウトする
|
|
instance.logoutRedirect({
|
|
postLogoutRedirectUri: "/?logout=true",
|
|
});
|
|
}
|
|
}, [isAuth, isExpired, dispatch, instance]);
|
|
|
|
return component;
|
|
};
|