From 60d00cebe5450b33a838cd3d6308304241e0d29e Mon Sep 17 00:00:00 2001 From: "sosuke.iwabuchi" Date: Fri, 30 Jun 2023 09:35:59 +0900 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E7=90=86=E8=80=85=E3=83=A6=E3=83=BC?= =?UTF-8?q?=E3=82=B6=E4=BD=9C=E6=88=90=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/login-user.ts | 1 + src/pages/dashboard/login-user/create.tsx | 36 ++++++++++++++++++++--- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/api/login-user.ts b/src/api/login-user.ts index dd1ed44..5b47db0 100644 --- a/src/api/login-user.ts +++ b/src/api/login-user.ts @@ -43,6 +43,7 @@ export type LoginUserCreateRequest = { name: string; email: string; password: string; + role?: string; }; export const createLoginUser = async (data: LoginUserCreateRequest) => { diff --git a/src/pages/dashboard/login-user/create.tsx b/src/pages/dashboard/login-user/create.tsx index 6975ac0..f27ae28 100644 --- a/src/pages/dashboard/login-user/create.tsx +++ b/src/pages/dashboard/login-user/create.tsx @@ -1,15 +1,17 @@ import { yupResolver } from "@hookform/resolvers/yup"; -import { Box, Button, Card, Stack, Typography } from "@mui/material"; +import { Box, Button, Stack, Typography } from "@mui/material"; import { HasChildren } from "@types"; import { createLoginUser } from "api/login-user"; import { PageID, TabID } from "codes/page"; -import { FormProvider, RHFTextField } from "components/hook-form"; +import { UserRole } from "codes/user"; +import { FormProvider, RHFSelect, RHFTextField } from "components/hook-form"; +import { SelectOptionProps } from "components/hook-form/RHFSelect"; import useAPICall from "hooks/useAPICall"; +import useAuth from "hooks/useAuth"; import useDashboard from "hooks/useDashBoard"; import useNavigateCustom from "hooks/useNavigateCustom"; import useSnackbarCustom from "hooks/useSnackbarCustom"; -import { useSnackbar } from "notistack"; -import { useEffect } from "react"; +import { useEffect, useMemo } from "react"; import { useForm } from "react-hook-form"; import { getPath } from "routes/path"; import * as Yup from "yup"; @@ -31,6 +33,7 @@ type FormProps = { email: string; password: string; password_retype: string; + role: string; }; export default function LoginUserCreate() { @@ -39,6 +42,8 @@ export default function LoginUserCreate() { TabID.NONE ); + const { role } = useAuth(); + const { success, error } = useSnackbarCustom(); const { navigateWhenChanged } = useNavigateCustom(); @@ -48,6 +53,7 @@ export default function LoginUserCreate() { email: "", password: "", password_retype: "", + role: "", }, resolver: yupResolver( Yup.object().shape({ @@ -59,10 +65,27 @@ export default function LoginUserCreate() { .test("retype", "入力が一致しません", function (value) { return this.parent.password === value; }), + role: + role === UserRole.SUPER_ADMIN + ? Yup.string().required("必須項目です") + : Yup.string(), }) ), }); + const roleOptions: SelectOptionProps[] = useMemo(() => { + return [ + { + label: "一般", + value: String(UserRole.NORMAL_ADMIN), + }, + { + label: "管理者", + value: String(UserRole.CONTRACT_ADMIN), + }, + ]; + }, []); + const { callAPI } = useAPICall({ apiMethod: createLoginUser, backDrop: true, @@ -105,6 +128,11 @@ export default function LoginUserCreate() { + {role === UserRole.SUPER_ADMIN && ( + + + + )}