Merged PR 244: Partner一覧仮画面
## 概要 [Task2229: Partner一覧仮画面](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/OMDSDictation/_workitems/edit/2229/) - 何をどう変更したか、追加したライブラリなど ・Partner一覧の仮画面を作成しました。 ボタン追加とアカウント階層の画面表示 - このPull Requestでの対象/対象外 ・仮画面なので、レイアウトに関しては対象外です。 ・46行目にonClickをコメントアウトしています。 後々使用すると思い、わざと消していないですが、レビューで消すか否かを コメントいただければと思います。 ## レビューポイント - 特にレビューしてほしい箇所 ・ヘッダのpartnerタブ押下により画面が表示できること ・第1~3階層で「Add Account」ボタンが表示されるか ・第4階層で「Add Account」ボタンが非表示かどうか ・第1~4階層で正しく階層が表示されるか 例:第1階層でログイン→Tier:1と表示 ## UIの変更 - Before/Afterのスクショなど - スクショ置き場 https://ndstokyo.sharepoint.com/:f:/r/sites/Piranha/Shared%20Documents/General/OMDS/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88/Task2155?csf=1&web=1&e=d1MRi8 ## 動作確認状況 - ローカルで確認 ## 補足 - 相談、参考資料などがあれば
This commit is contained in:
parent
fabcdc16f5
commit
6e3c9d5c81
@ -16,6 +16,7 @@ import UserListPage from "pages/UserListPage";
|
|||||||
import LicensePage from "pages/LicensePage";
|
import LicensePage from "pages/LicensePage";
|
||||||
import DictationPage from "pages/DictationPage";
|
import DictationPage from "pages/DictationPage";
|
||||||
import LicenseOrderHistoryPage from "pages/LicenseOrderHistoryPage";
|
import LicenseOrderHistoryPage from "pages/LicenseOrderHistoryPage";
|
||||||
|
import PartnerPage from "pages/PartnerPage";
|
||||||
|
|
||||||
const AppRouter: React.FC = () => (
|
const AppRouter: React.FC = () => (
|
||||||
<Routes>
|
<Routes>
|
||||||
@ -64,6 +65,10 @@ const AppRouter: React.FC = () => (
|
|||||||
path="/workflow"
|
path="/workflow"
|
||||||
element={<RouteAuthGuard component={<SamplePage />} />}
|
element={<RouteAuthGuard component={<SamplePage />} />}
|
||||||
/>
|
/>
|
||||||
|
<Route
|
||||||
|
path="/partners"
|
||||||
|
element={<RouteAuthGuard component={<PartnerPage />} />}
|
||||||
|
/>
|
||||||
<Route path="*" element={<NotFoundPage />} />
|
<Route path="*" element={<NotFoundPage />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
);
|
);
|
||||||
|
|||||||
92
dictation_client/src/pages/PartnerPage/index.tsx
Normal file
92
dictation_client/src/pages/PartnerPage/index.tsx
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
import { useMsal } from "@azure/msal-react";
|
||||||
|
import { AppDispatch } from "app/store";
|
||||||
|
import { UpdateTokenTimer } from "components/auth/updateTokenTimer";
|
||||||
|
import Footer from "components/footer";
|
||||||
|
import Header from "components/header";
|
||||||
|
import { clearToken } from "features/auth";
|
||||||
|
import React from "react";
|
||||||
|
import { useDispatch } from "react-redux";
|
||||||
|
import styles from "styles/app.module.scss";
|
||||||
|
import { loadAccessToken, isApproveTier } from "features/auth/utils";
|
||||||
|
import postAdd from "../../assets/images/post_add.svg";
|
||||||
|
import { decodeToken } from "../../common/decodeToken";
|
||||||
|
import { TIERS } from "../../components/auth/constants";
|
||||||
|
|
||||||
|
const PartnerPage: React.FC = (): JSX.Element => {
|
||||||
|
const { instance } = useMsal();
|
||||||
|
const dispatch: AppDispatch = useDispatch();
|
||||||
|
|
||||||
|
/* 本実装の際に消す想定です。
|
||||||
|
POデモ時に階層情報を表示するための実装です。 */
|
||||||
|
const getUserTier = () => {
|
||||||
|
const jwt = loadAccessToken(); // トークンを取得
|
||||||
|
const token = jwt && decodeToken(jwt); // トークンをデコード
|
||||||
|
|
||||||
|
if (token && token.tier) {
|
||||||
|
return token.tier.toString(); // ユーザーの階層情報を取得
|
||||||
|
}
|
||||||
|
|
||||||
|
return "error!"; // 階層情報が見つからない場合はerror!を返す
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 本実装の際に消す想定です。
|
||||||
|
ログインしているアカウントの階層を確認するために実装 */
|
||||||
|
const userTier = getUserTier();
|
||||||
|
// 第1~3階層にボタンを表示する
|
||||||
|
const isVisible = isApproveTier([TIERS.TIER1, TIERS.TIER2, TIERS.TIER3]);
|
||||||
|
|
||||||
|
// HTML
|
||||||
|
return (
|
||||||
|
<div className={styles.wrap}>
|
||||||
|
<Header userName="XXXXXX" />
|
||||||
|
<UpdateTokenTimer />
|
||||||
|
<main className={styles.main}>
|
||||||
|
<ul className={styles.menuAction}>
|
||||||
|
<li>
|
||||||
|
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}
|
||||||
|
{isVisible && (
|
||||||
|
<a
|
||||||
|
className={`${styles.menuLink} ${styles.isActive}`}
|
||||||
|
// onClick={}
|
||||||
|
>
|
||||||
|
<img src={postAdd} alt="" className={styles.menuIcon} />
|
||||||
|
Add Account
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<form className={styles.form}>
|
||||||
|
<dl className={`${styles.formList} ${styles.hasbg}`}>
|
||||||
|
<dt className={styles.formTitle} />
|
||||||
|
<dt />
|
||||||
|
<dd className="">
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
size={40}
|
||||||
|
name=""
|
||||||
|
value={`Tier:${userTier}`}
|
||||||
|
maxLength={20}
|
||||||
|
className={styles.formInput}
|
||||||
|
/>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</form>
|
||||||
|
</main>
|
||||||
|
<div>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className={styles.buttonText}
|
||||||
|
onClick={() => {
|
||||||
|
instance.logout({ postLogoutRedirectUri: "/" });
|
||||||
|
dispatch(clearToken());
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
sign out
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default PartnerPage;
|
||||||
Loading…
x
Reference in New Issue
Block a user