saito.k 32db216d6a Merged PR 416: ログアウト時にlogoutRedirectを使うようにする
## 概要
[Task1829: ログアウト時にlogoutRedirectを使うようにする](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1829)

- タイトルの通り
  - 該当箇所をすべて修正

## レビューポイント
- 特になし

## UIの変更
- Before/Afterのスクショなど
- スクショ置き場

## 動作確認状況
- ローカルで確認

## 補足
- B2Cの設定も修正
   - 不要なアクセストークンは発行しないように修正
2023-09-20 01:36:57 +00:00

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;
};