start working on role page and add it page

This commit is contained in:
2025-07-28 14:28:39 +03:30
parent 3a36561ab0
commit 8d3b5b6e1e
6 changed files with 102 additions and 23 deletions

View File

@@ -2,5 +2,6 @@
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="JSAnnotator" enabled="false" level="ERROR" enabled_by_default="false" />
</profile>
</component>

View File

@@ -0,0 +1,16 @@
import RolesPage from "@/components/dashboard/Roles";
import WithPermission from "@/core/middlewares/withPermission";
export const metadata = {
title: "نقش ها",
};
const Page = () => {
return (
<WithPermission permission_name={["manage_Roles"]}>
<RolesPage />
</WithPermission>
);
};
export default Page;

View File

@@ -0,0 +1,14 @@
import PageTitle from "@/core/components/PageTitle";
import { Stack } from "@mui/material";
import DataTable from "./DataTable";
const RolesPage = () => {
return (
<Stack spacing={1}>
<PageTitle title={"کاربران"} />
<DataTable />
</Stack>
);
};
export default RolesPage;

View File

@@ -27,19 +27,20 @@ import { Controller, useForm } from "react-hook-form";
import { object, string } from "yup";
const validationSchema = object().shape({
full_name: string().required("نام و نام خانوادگی خود را وارد کنید"),
username: string().required("نام کاربری خود را وارد کنید"),
full_name: string().required("نام و نام خانوادگی را وارد کنید"),
username: string().required("نام کاربری را وارد کنید"),
phone_number: string()
.matches(/^09\d{9}$/, "شماره همراه باید با 09 شروع شود و 11 رقم باشد.")
.required("شماره همراه خود را وارد کنید"),
gender: string().required("جنسیت خود را وارد کنید"),
.required("شماره همراه را وارد کنید"),
gender: string().required("جنسیت را وارد کنید"),
national_id: string()
.test("max", "کد ملی باید شامل 10 رقم باشد", (value) => value.toString().length === 10)
.test("validation", "کد ملی صحیح نمی باشد", (value) => validateNationalCode(value))
.required("کد ملی خود را وارد کنید"),
position: string().required("سمت خود را وارد کنید"),
province_id: string().required("استان خود را وارد کنید"),
role_id: string().required("نقش خود را وارد کنید"),
.required("کد ملی را وارد کنید"),
position: string().required("سمت را وارد کنید"),
province_id: string().required("استان را وارد کنید"),
role_id: string().required("نقش را وارد کنید"),
telephone_id: string().required("شماره تماس داخلی را وارد کنید")
});
const UpdateUserForm = ({ values, setOpen, mutate }) => {
@@ -56,6 +57,7 @@ const UpdateUserForm = ({ values, setOpen, mutate }) => {
phone_number: values.phone_number,
province_id: values.province_id,
role_id: values.roles[0].id,
telephone_id: values.telephone_id
};
const provinceSelectOptions = useMemo(() => {
@@ -212,12 +214,12 @@ const UpdateUserForm = ({ values, setOpen, mutate }) => {
render={({ field, fieldState: { error } }) => {
return (
<FormControl fullWidth error={!!error}>
<InputLabel id={`label-phone-number`} shrink>
<InputLabel id={`label-gender`} shrink>
جنسیت
</InputLabel>
<Select
labelId={`label-phone-number`}
id={"phone-number"}
labelId={`label-gender`}
id={"gender"}
name={`gender`}
value={field.value}
input={<OutlinedInput label={"جنسیت"} />}
@@ -331,6 +333,25 @@ const UpdateUserForm = ({ values, setOpen, mutate }) => {
name={"role_id"}
/>
</Grid>
<Grid size={{ xs: 12, md: 6 }}>
<Controller
control={control}
render={({ field, fieldState: { error } }) => {
return (
<LtrTextField
{...field}
label="شماره تماس داخلی"
variant="outlined"
fullWidth
type="tel"
error={!!error}
helperText={!!error && error.message}
/>
);
}}
name={"telephone_id"}
/>
</Grid>
</Grid>
</Stack>
</StyledForm>

View File

@@ -43,22 +43,23 @@ const defaultValues = {
};
const validationSchema = object().shape({
full_name: string().required("نام و نام خانوادگی خود را وارد کنید"),
username: string().required("نام کاربری خود را وارد کنید"),
full_name: string().required("نام و نام خانوادگی را وارد کنید"),
username: string().required("نام کاربری را وارد کنید"),
phone_number: string()
.matches(/^09\d{9}$/, "شماره همراه باید با 09 شروع شود و 11 رقم باشد.")
.required("شماره همراه خود را وارد کنید"),
gender: string().required("جنسیت خود را وارد کنید"),
.required("شماره همراه را وارد کنید"),
gender: string().required("جنسیت را وارد کنید"),
national_id: string()
.test("max", "کد ملی باید شامل 10 رقم باشد", (value) => value.toString().length === 10)
.test("validation", "کد ملی صحیح نمی باشد", (value) => validateNationalCode(value))
.required("کد ملی خود را وارد کنید"),
.required("کد ملی را وارد کنید"),
password: string()
.required("رمز عبور خود را وارد کنید")
.required("رمز عبور را وارد کنید")
.matches(/^(?=.*[a-zA-Z])(?=.*\d).{8,}$/, "رمز عبور باید حداقل 8 کاراکتر و متشکل از عدد، حرف یا سمبل باشد"),
position: string().required("سمت خود را وارد کنید"),
province_id: string().required("استان خود را وارد کنید"),
role_id: string().required("نقش خود را وارد کنید"),
position: string().required("سمت را وارد کنید"),
province_id: string().required("استان را وارد کنید"),
role_id: string().required("نقش را وارد کنید"),
telephone_id: string().required("شماره تماس داخلی را وارد کنید"),
});
const CreateUserForm = ({ setOpen, mutate }) => {
@@ -253,12 +254,12 @@ const CreateUserForm = ({ setOpen, mutate }) => {
render={({ field, fieldState: { error } }) => {
return (
<FormControl fullWidth error={!!error}>
<InputLabel id={`label-phone-number`} shrink>
<InputLabel id={`label-gender`} shrink>
جنسیت
</InputLabel>
<Select
labelId={`label-phone-number`}
id={"phone-number"}
labelId={`label-gender`}
id={"gender"}
name={`gender`}
value={field.value}
input={<OutlinedInput label={"جنسیت"} />}
@@ -372,6 +373,25 @@ const CreateUserForm = ({ setOpen, mutate }) => {
name={"role_id"}
/>
</Grid>
<Grid size={{ xs: 12, md: 6 }}>
<Controller
control={control}
render={({ field, fieldState: { error } }) => {
return (
<LtrTextField
{...field}
label="شماره تماس داخلی"
variant="outlined"
fullWidth
type="tel"
error={!!error}
helperText={!!error && error.message}
/>
);
}}
name={"telephone_id"}
/>
</Grid>
</Grid>
</Stack>
</StyledForm>

View File

@@ -24,6 +24,13 @@ export const pageMenu = [
route: "/dashboard/users",
permissions: ["manage_users"],
},
{
id: "systemManagment-roles",
label: "نقش ها",
type: "page",
route: "/dashboard/roles",
permissions: ["manage_roles"],
}
],
},
];