Merged PR 498: アカウント登録画面修正
## 概要 [Task2809: アカウント登録画面修正](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2809) アカウント作成時の管理者ユーザー作成時に、同意済みEULAバージョンを登録する処理を追加しました。 ## レビューポイント なし ## UIの変更 なし ## 動作確認状況 ローカルで動作確認済み ## 補足 なし
This commit is contained in:
parent
d2c2223acf
commit
58674f7773
8
dictation_client/src/features/accept/constants.ts
Normal file
8
dictation_client/src/features/accept/constants.ts
Normal file
@ -0,0 +1,8 @@
|
||||
/**
|
||||
* 利用規約の種類
|
||||
* @const {string[]}
|
||||
*/
|
||||
export const TERMS_DOCUMENT_TYPE = {
|
||||
DPA: "DPA",
|
||||
EULA: "EULA",
|
||||
} as const;
|
||||
@ -3,10 +3,12 @@ import type { RootState } from "app/store";
|
||||
import { ErrorObject, createErrorObject } from "common/errors";
|
||||
import { getTranslationID } from "translation";
|
||||
import { closeSnackbar, openSnackbar } from "features/ui/uiSlice";
|
||||
import { TERMS_DOCUMENT_TYPE } from "features/accept/constants";
|
||||
import {
|
||||
AccountsApi,
|
||||
CreateAccountRequest,
|
||||
GetDealersResponse,
|
||||
TermsApi,
|
||||
} from "../../api/api";
|
||||
import { Configuration } from "../../api/configuration";
|
||||
|
||||
@ -93,3 +95,42 @@ export const getDealersAsync = createAsyncThunk<
|
||||
return thunkApi.rejectWithValue({ error });
|
||||
}
|
||||
});
|
||||
|
||||
export const getLatestEulaVersionAsync = createAsyncThunk<
|
||||
string,
|
||||
void,
|
||||
{
|
||||
// rejectした時の返却値の型
|
||||
rejectValue: {
|
||||
error: ErrorObject;
|
||||
};
|
||||
}
|
||||
>("login/getLatestEulaVersionAsync", async (args, thunkApi) => {
|
||||
// apiのConfigurationを取得する
|
||||
const { getState } = thunkApi;
|
||||
const state = getState() as RootState;
|
||||
const { configuration } = state.auth;
|
||||
const config = new Configuration(configuration);
|
||||
const termsApi = new TermsApi(config);
|
||||
|
||||
try {
|
||||
const termsInfo = await termsApi.getTermsInfo();
|
||||
const latestEulaVersion = termsInfo.data.termsInfo.find(
|
||||
(val) => val.documentType === TERMS_DOCUMENT_TYPE.EULA
|
||||
);
|
||||
if (!latestEulaVersion) {
|
||||
throw new Error("EULA info is not found");
|
||||
}
|
||||
return latestEulaVersion.version;
|
||||
} catch (e) {
|
||||
const error = createErrorObject(e);
|
||||
thunkApi.dispatch(
|
||||
openSnackbar({
|
||||
level: "error",
|
||||
message: getTranslationID("common.message.internalServerError"),
|
||||
})
|
||||
);
|
||||
|
||||
return thunkApi.rejectWithValue({ error });
|
||||
}
|
||||
});
|
||||
|
||||
@ -72,3 +72,6 @@ export const selectSelectedDealer = (state: RootState) => {
|
||||
const { dealer } = state.signup.apps;
|
||||
return dealers.find((x: Dealer) => x.id === dealer);
|
||||
};
|
||||
|
||||
export const selectEulaVersion = (state: RootState) =>
|
||||
state.signup.domain.eulaVersion;
|
||||
|
||||
@ -1,6 +1,10 @@
|
||||
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
|
||||
import { SignupState } from "./state";
|
||||
import { getDealersAsync, signupAsync } from "./operations";
|
||||
import {
|
||||
getDealersAsync,
|
||||
getLatestEulaVersionAsync,
|
||||
signupAsync,
|
||||
} from "./operations";
|
||||
|
||||
const initialState: SignupState = {
|
||||
apps: {
|
||||
@ -15,6 +19,7 @@ const initialState: SignupState = {
|
||||
},
|
||||
domain: {
|
||||
dealers: [],
|
||||
eulaVersion: "",
|
||||
},
|
||||
};
|
||||
|
||||
@ -74,6 +79,15 @@ export const signupSlice = createSlice({
|
||||
builder.addCase(getDealersAsync.rejected, () => {
|
||||
//
|
||||
});
|
||||
builder.addCase(getLatestEulaVersionAsync.pending, () => {
|
||||
//
|
||||
});
|
||||
builder.addCase(getLatestEulaVersionAsync.fulfilled, (state, action) => {
|
||||
state.domain.eulaVersion = action.payload;
|
||||
});
|
||||
builder.addCase(getLatestEulaVersionAsync.rejected, () => {
|
||||
//
|
||||
});
|
||||
},
|
||||
});
|
||||
export const {
|
||||
|
||||
@ -18,4 +18,5 @@ export interface Apps {
|
||||
|
||||
export interface Domain {
|
||||
dealers: Dealer[];
|
||||
eulaVersion: string;
|
||||
}
|
||||
|
||||
@ -14,6 +14,7 @@ import {
|
||||
selectEmail,
|
||||
selectPassword,
|
||||
selectSelectedDealer,
|
||||
selectEulaVersion,
|
||||
} from "../../features/signup/selectors";
|
||||
import { signupAsync } from "../../features/signup/operations";
|
||||
|
||||
@ -27,6 +28,7 @@ const SignupConfirm: React.FC = (): JSX.Element => {
|
||||
const adminMail = useSelector(selectEmail);
|
||||
const adminPassword = useSelector(selectPassword);
|
||||
const dealer = useSelector(selectSelectedDealer);
|
||||
const acceptedEulaVersion = useSelector(selectEulaVersion);
|
||||
|
||||
const onSubmit = useCallback(() => {
|
||||
dispatch(
|
||||
@ -37,7 +39,7 @@ const SignupConfirm: React.FC = (): JSX.Element => {
|
||||
adminName,
|
||||
adminMail,
|
||||
adminPassword,
|
||||
acceptedEulaVersion: "",
|
||||
acceptedEulaVersion,
|
||||
acceptedDpaVersion: "",
|
||||
token: "",
|
||||
})
|
||||
@ -50,6 +52,7 @@ const SignupConfirm: React.FC = (): JSX.Element => {
|
||||
adminName,
|
||||
adminMail,
|
||||
adminPassword,
|
||||
acceptedEulaVersion,
|
||||
]);
|
||||
|
||||
return (
|
||||
|
||||
@ -24,7 +24,10 @@ import { useDispatch, useSelector } from "react-redux";
|
||||
import { useLocation, useNavigate } from "react-router-dom";
|
||||
import { getTranslationID } from "translation";
|
||||
import styles from "styles/app.module.scss";
|
||||
import { getDealersAsync } from "features/signup/operations";
|
||||
import {
|
||||
getDealersAsync,
|
||||
getLatestEulaVersionAsync,
|
||||
} from "features/signup/operations";
|
||||
import { LANGUAGE_LIST } from "features/top/constants";
|
||||
import { openSnackbar } from "features/ui";
|
||||
import { COUNTRY_LIST } from "./constants";
|
||||
@ -84,6 +87,7 @@ const SignupInput: React.FC = (): JSX.Element => {
|
||||
// 入力画面の初期化時の処理
|
||||
useEffect(() => {
|
||||
dispatch(getDealersAsync());
|
||||
dispatch(getLatestEulaVersionAsync());
|
||||
}, [dispatch]);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user