diff --git a/public/images/403.svg b/public/images/403.svg new file mode 100644 index 0000000..d5ab3a5 --- /dev/null +++ b/public/images/403.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/404.svg b/public/images/404.svg new file mode 100644 index 0000000..2383041 --- /dev/null +++ b/public/images/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/500.svg b/public/images/500.svg new file mode 100644 index 0000000..c7629f3 --- /dev/null +++ b/public/images/500.svg @@ -0,0 +1 @@ +server_cluster \ No newline at end of file diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index d49722a..e42f7fa 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -34,7 +34,17 @@ "title_login_welfare_services_page": "ورود اعضای خدمات رفاهی", "title_register_navy_page": "ثبت نام اعضای ناوگان", "title_register_welfare_services_page": "ثبت نام اعضای خدمات رفاهی", - "title_not_found": "یافت نشد" + "title_custom_404": "صفحه یافت نشد", + "title_custom_403": "عدم دسترسی", + "title_custom_500": "خطای سرور" + }, + "ErrorPage": { + "custom_404": "صفحه مورد نظر یافت نشد | 404", + "custom_500": "دسترسی به سامانه امکانپذیر نمی باشد دقایقی دیگر تلاش نمائید | 500", + "custom_403": "شما دسترسی به این بخش را ندارید | 403", + "link_routing_back_to": "بازگشت به", + "link_routing_previuos_page": "صفحه قبل", + "link_routing_main_page": "صفحه اصلی" }, "sidebar": { "dashboard": "داشبورد", diff --git a/src/components/errors/403.jsx b/src/components/errors/403.jsx new file mode 100644 index 0000000..cf46e41 --- /dev/null +++ b/src/components/errors/403.jsx @@ -0,0 +1,48 @@ +import CenterLayout from "@/layouts/CenterLayout"; +import FullPageLayout from "@/layouts/FullPageLayout"; +import {Box, Button, Container, Stack, Typography} from "@mui/material"; +import {NextLinkComposed} from "@/core/components/LinkRouting"; +import {useTranslations} from "next-intl"; +import Image from "next/image"; +import TitlePage from "@/core/components/TitlePage"; + +const UnAuthorizedComponent = () => { + const t = useTranslations(); + + return ( + <> + + + + + + + {t("app_name")} + + + {t("ErrorPage.custom_403")} + + + + + + + + ); +}; + +export default UnAuthorizedComponent; diff --git a/src/components/errors/404.jsx b/src/components/errors/404.jsx new file mode 100644 index 0000000..e0888b3 --- /dev/null +++ b/src/components/errors/404.jsx @@ -0,0 +1,48 @@ +import CenterLayout from "@/layouts/CenterLayout"; +import FullPageLayout from "@/layouts/FullPageLayout"; +import {Box, Button, Container, Stack, Typography} from "@mui/material"; +import {NextLinkComposed} from "@/core/components/LinkRouting"; +import {useTranslations} from "next-intl"; +import Image from "next/image"; +import TitlePage from "@/core/components/TitlePage"; + +const NotFoundComponent = () => { + const t = useTranslations(); + + return ( + <> + + + + + + + {t("app_name")} + + + {t("ErrorPage.custom_404")} + + + + + + + + ); +}; + +export default NotFoundComponent; diff --git a/src/components/errors/500.jsx b/src/components/errors/500.jsx new file mode 100644 index 0000000..10e9d12 --- /dev/null +++ b/src/components/errors/500.jsx @@ -0,0 +1,48 @@ +import CenterLayout from "@/layouts/CenterLayout"; +import FullPageLayout from "@/layouts/FullPageLayout"; +import {Box, Button, Container, Stack, Typography} from "@mui/material"; +import {NextLinkComposed} from "@/core/components/LinkRouting"; +import {useTranslations} from "next-intl"; +import Image from "next/image"; +import TitlePage from "@/core/components/TitlePage"; + +const ServerErrorComponent = () => { + const t = useTranslations(); + + return ( + <> + + + + + + + {t("app_name")} + + + {t("ErrorPage.custom_500")} + + + + + + + + ); +}; + +export default ServerErrorComponent; diff --git a/src/pages/403.jsx b/src/pages/403.jsx new file mode 100644 index 0000000..15ba915 --- /dev/null +++ b/src/pages/403.jsx @@ -0,0 +1,24 @@ +import {useEffect, useState} from "react"; +import {useRouter} from "next/router"; +import {NextIntlProvider} from "next-intl"; +import UnAuthorizedComponent from "@/components/errors/403"; + +export default function Custom404() { + const router = useRouter() + const [messages, setMessages] = useState(null) + useEffect(() => { + const fetch = async () => { + const tempMessages = (await import(`&/locales/${router.locale}/app.json`)).default + setMessages(tempMessages) + } + fetch() + }, []); + + if (!messages) return + + return ( + + + + ); +} diff --git a/src/pages/404.jsx b/src/pages/404.jsx index 36eba21..26de038 100644 --- a/src/pages/404.jsx +++ b/src/pages/404.jsx @@ -1,13 +1,25 @@ -import NotFoundComponent from "@/components/NotFound"; -import Head from "next/head"; +import {useEffect, useState} from "react"; +import {useRouter} from "next/router"; +import {NextIntlProvider} from "next-intl"; +import NotFoundComponent from "@/components/errors/404"; + +export default function Custom404() { + const router = useRouter() + const [messages, setMessages] = useState(null) + useEffect(() => { + + const fetch = async () => { + const tempMessages = (await import(`&/locales/${router.locale}/app.json`)).default + setMessages(tempMessages) + } + fetch() + }, []); + + if (!messages) return -export default function NotFound() { return ( - <> - - یافت نشد - + - + ); } diff --git a/src/pages/500.jsx b/src/pages/500.jsx new file mode 100644 index 0000000..4b85bc2 --- /dev/null +++ b/src/pages/500.jsx @@ -0,0 +1,24 @@ +import {useEffect, useState} from "react"; +import {useRouter} from "next/router"; +import {NextIntlProvider} from "next-intl"; +import ServerErrorComponent from "@/components/errors/500"; + +export default function Custom500() { + const router = useRouter() + const [messages, setMessages] = useState(null) + useEffect(() => { + const fetch = async () => { + const tempMessages = (await import(`&/locales/${router.locale}/app.json`)).default + setMessages(tempMessages) + } + fetch() + }, []); + + if (!messages) return + + return ( + + + + ); +}