inject base of project

This commit is contained in:
2023-07-10 12:08:10 +03:30
parent 7ac890e7e7
commit 0c7fc9bf8f
12 changed files with 19 additions and 305 deletions

View File

@@ -4,10 +4,8 @@
"dashboard": "داشبورد",
"first_page": "خوش آمدید",
"login": "ورود",
"login_navy": "ورود اعضای ناوگان",
"login_welfare_services": "ورود اعضای خدمات رفاهی",
"user_welfare_services": "خدمات رفاهی",
"user_navy": "ناوگان",
"login_expert": "ورود کارشناس",
"expert": "کارشناس",
"header": {
"open_profile": "پروفایل",
"edit_profile": "ویرایش پروفایل",
@@ -16,10 +14,7 @@
},
"Titles": {
"title_login_page": "صفحه ورود",
"title_login_navy_page": "ورود اعضای ناوگان",
"title_login_welfare_services_page": "ورود اعضای خدمات رفاهی",
"title_register_navy_page": "ثبت نام اعضای ناوگان",
"title_register_welfare_services_page": "ثبت نام اعضای خدمات رفاهی"
"title_login_expert_page": "ورود کارشناس"
},
"sidebar": {
"dashboard": "داشبورد",

View File

@@ -4,7 +4,7 @@ import StyledImage from "@/core/components/StyledImage";
import CenterLayout from "@/layouts/CenterLayout";
import FullPageLayout from "@/layouts/FullPageLayout";
import useUser from "@/lib/app/hooks/useUser";
import { Box, Button, Divider, Typography } from "@mui/material";
import { Button, Typography } from "@mui/material";
import { useTranslations } from "next-intl";
const FirstComponent = () => {
@@ -34,29 +34,16 @@ const FirstComponent = () => {
{t("dashboard")}
</Button>
) : (
<Box sx={{ display: "flex" }}>
<Button
sx={{ mx: 2 }}
variant="contained"
component={NextLinkComposed}
to={{
pathname: "/login-navy",
}}
>
{t("login_navy")}
</Button>
<Divider orientation="vertical" flexItem />
<Button
sx={{ mx: 2 }}
variant="contained"
component={NextLinkComposed}
to={{
pathname: "/login-welfare-services",
}}
>
{t("login_welfare_services")}
</Button>
</Box>
<Button
sx={{ mx: 2 }}
variant="contained"
component={NextLinkComposed}
to={{
pathname: "/login-expert",
}}
>
{t("login_expert")}
</Button>
)}
</CenterLayout>
</FullPageLayout>

View File

@@ -76,7 +76,7 @@ const LoginComponent = () => {
<Image fill src="/images/login.svg" alt={t("app_name")} />
</Box>
<Typography margin={2} variant="h4" textAlign="center">
{t("login_navy")}
{t("login_expert")}
</Typography>
<StyledForm sx={{ width: "100%" }}>
<Stack spacing={3} sx={{ p: 2 }}>
@@ -129,9 +129,9 @@ const LoginComponent = () => {
endIcon={<PersonAddIcon />}
disabled={props.isSubmitting ? true : false}
>
{t("LoginPage.button_make_account")}
</Button>
</LinkRouting>
{t("LoginPage.button_make_account")}
<Button
type="submit"
variant="contained"

View File

@@ -1,170 +0,0 @@
import LinkRouting from "@/core/components/LinkRouting";
// import Notifications from "@/core/components/notifications";
import PasswordField from "@/core/components/PasswordField";
import StyledForm from "@/core/components/StyledForm";
// import { GET_USER_TOKEN } from "@/core/data/apiRoutes";
import CenterLayout from "@/layouts/CenterLayout";
import FullPageLayout from "@/layouts/FullPageLayout";
import useDirection from "@/lib/app/hooks/useDirection";
import useUser from "@/lib/app/hooks/useUser";
import LoginIcon from "@mui/icons-material/Login";
import PersonAddIcon from "@mui/icons-material/PersonAdd";
import {
Box,
Button,
Container,
Paper,
Stack,
TextField,
Typography,
} from "@mui/material";
// import axios from "axios";
import { Field, Formik } from "formik";
import { useTranslations } from "next-intl";
import Image from "next/image";
import { useSearchParams } from "next/navigation";
import * as Yup from "yup";
const LoginComponent = () => {
const t = useTranslations();
const { directionApp } = useDirection();
const { setToken } = useUser(); // pass token to set token
// gettin url query
const searchParams = useSearchParams();
const backUrlDecodedPath = searchParams.get("back_url");
// formik properties
// const handleSubmit = async (values, props) => {
// await axios
// .post(GET_USER_TOKEN, {
// username: values.username,
// password: values.password,
// })
// .then(function (response) {
// setToken(response.data.token);
// })
// .catch(function (error) {
// Notifications(directionApp, error.response, t);
// props.setSubmitting(false);
// });
// };
const initialValues = {
username: "",
password: "",
};
const validationSchema = Yup.object().shape({
username: Yup.string().required(t("LoginPage.error_message_required")),
password: Yup.string().required(t("LoginPage.error_message_required")),
});
return (
<FullPageLayout sx={{ p: 1 }}>
<CenterLayout>
<Container maxWidth="sm">
<Paper elevation={0}>
<Formik
initialValues={initialValues}
// onSubmit={handleSubmit}
validationSchema={validationSchema}
>
{(props) => (
<Stack spacing={2} sx={{ p: 2 }}>
<Box
sx={{ position: "relative", width: "100%", height: 200 }}
>
<Image fill src="/images/login.svg" alt={t("app_name")} />
</Box>
<Typography margin={2} variant="h4" textAlign="center">
{t("login_welfare_services")}
</Typography>
<StyledForm sx={{ width: "100%" }}>
<Stack spacing={3} sx={{ p: 2 }}>
<Field
as={TextField}
name="username"
variant="outlined"
label={t("LoginPage.text_field_user_name")}
placeholder={t(
"LoginPage.text_field_enter_your_username"
)}
type={"text"}
error={
props.touched.username && props.errors.username
? true
: false
}
fullWidth
helperText={
props.touched.username ? props.errors.username : null
}
/>
<PasswordField
name="password"
label={t("LoginPage.text_field_password")}
error={
props.touched.password && props.errors.password
? true
: false
}
helperText={
props.touched.password ? props.errors.password : null
}
placeholder={t(
"LoginPage.text_field_enter_your_password"
)}
/>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
}}
>
<LinkRouting href={"/register-welfare-services"}>
<Button
type="submit"
variant="outlined"
size="small"
endIcon={<PersonAddIcon />}
disabled={props.isSubmitting ? true : false}
>
{t("LoginPage.button_make_account")}
</Button>
</LinkRouting>
<Button
type="submit"
variant="contained"
size="medium"
endIcon={<LoginIcon />}
disabled={props.isSubmitting ? true : false}
>
{t("LoginPage.button_submit")}
</Button>
</Box>
</Stack>
</StyledForm>
</Stack>
)}
</Formik>
</Paper>
</Container>
</CenterLayout>
<Stack direction="row" alignItems="center" justifyContent="center">
<LinkRouting
sx={{ margin: 2 }}
href={
backUrlDecodedPath ? decodeURIComponent(backUrlDecodedPath) : "/"
}
>
{t("LoginPage.link_routing_back_to")}{" "}
{backUrlDecodedPath
? t("LoginPage.link_routing_previuos_page")
: t("LoginPage.link_routing_main_page")}
</LinkRouting>
</Stack>
</FullPageLayout>
);
};
export default LoginComponent;

View File

@@ -11,20 +11,6 @@ const sidebarMenu = [
icon: <SpaceDashboardIcon />,
selected: false,
},
{
key: "sidebar.loan-request",
type: "page",
route: "/dashboard/loan-request",
icon: <DataSaverOnIcon />,
selected: false,
},
{
key: "sidebar.loan-follow-up",
type: "page",
route: "/dashboard/loan-follow-up",
icon: <BookmarkAddedIcon />,
selected: false,
},
],
];

View File

@@ -14,7 +14,7 @@ const SidebarDrawer = ({ handleDrawerToggle }) => {
</Typography>
<Typography variant="caption">
{
t("user_navy") /* make if on thease t("user_welfare_services")
t("expert") /* make if on thease t("user_welfare_services")
t("user_navy") */
}
</Typography>

View File

@@ -1,4 +1,4 @@
import LoginComponent from "@/components/login-welfare-services";
import LoginComponent from "@/components/login-expert";
import TitlePage from "@/core/components/TitlePage";
import WithoutAuthMiddleware from "@/middlewares/WithoutAuth";
import { parse } from "next-useragent";
@@ -10,7 +10,7 @@ export default function Login() {
const { directionApp } = useDirection();
return (
<WithoutAuthMiddleware>
<TitlePage text="Titles.title_login_welfare_services_page" />
<TitlePage text="Titles.title_login_expert_page" />
<LoginComponent />
{directionApp === "rtl" ? <ToastContainer rtl /> : <ToastContainer ltr />}
</WithoutAuthMiddleware>

View File

@@ -1,28 +0,0 @@
import LoginComponent from "@/components/login-navy";
import TitlePage from "@/core/components/TitlePage";
import WithoutAuthMiddleware from "@/middlewares/WithoutAuth";
import { parse } from "next-useragent";
import "react-toastify/dist/ReactToastify.css";
import { ToastContainer } from "react-toastify";
import useDirection from "@/lib/app/hooks/useDirection";
export default function LoginNavy() {
const { directionApp } = useDirection();
return (
<WithoutAuthMiddleware>
<TitlePage text="Titles.title_login_navy_page" />
<LoginComponent />
{directionApp === "rtl" ? <ToastContainer rtl /> : <ToastContainer ltr />}
</WithoutAuthMiddleware>
);
}
export async function getServerSideProps({ req, locale }) {
const { isBot } = parse(req.headers["user-agent"]);
return {
props: {
messages: (await import(`&/locales/${locale}/app.json`)).default,
isBot,
},
};
}

View File

@@ -1,28 +0,0 @@
import RegisterComponent from "@/components/register-navy";
import TitlePage from "@/core/components/TitlePage";
import WithoutAuthMiddleware from "@/middlewares/WithoutAuth";
import { parse } from "next-useragent";
import "react-toastify/dist/ReactToastify.css";
import { ToastContainer } from "react-toastify";
import useDirection from "@/lib/app/hooks/useDirection";
export default function RegisterNavy() {
const { directionApp } = useDirection();
return (
<WithoutAuthMiddleware>
<TitlePage text="Titles.title_register_navy_page" />
<RegisterComponent />
{directionApp === "rtl" ? <ToastContainer rtl /> : <ToastContainer ltr />}
</WithoutAuthMiddleware>
);
}
export async function getServerSideProps({ req, locale }) {
const { isBot } = parse(req.headers["user-agent"]);
return {
props: {
messages: (await import(`&/locales/${locale}/app.json`)).default,
isBot,
},
};
}

View File

@@ -1,28 +0,0 @@
import RegisterComponent from "@/components/register-welfare-services";
import TitlePage from "@/core/components/TitlePage";
import WithoutAuthMiddleware from "@/middlewares/WithoutAuth";
import { parse } from "next-useragent";
import "react-toastify/dist/ReactToastify.css";
import { ToastContainer } from "react-toastify";
import useDirection from "@/lib/app/hooks/useDirection";
export default function RegisterWelfareServices() {
const { directionApp } = useDirection();
return (
<WithoutAuthMiddleware>
<TitlePage text="Titles.title_register_welfare_services_page" />
<RegisterComponent />
{directionApp === "rtl" ? <ToastContainer rtl /> : <ToastContainer ltr />}
</WithoutAuthMiddleware>
);
}
export async function getServerSideProps({ req, locale }) {
const { isBot } = parse(req.headers["user-agent"]);
return {
props: {
messages: (await import(`&/locales/${locale}/app.json`)).default,
isBot,
},
};
}