Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c92644222e | |||
| bc5f8e8db5 | |||
| 00703aa5c1 | |||
| e170ddca97 | |||
| c384764f72 | |||
| b5f0423fdb | |||
| c2dbf2d6a3 | |||
| d092c6f909 | |||
| dca3104451 |
@@ -1,7 +1,10 @@
|
||||
.favicon {
|
||||
position: relative;
|
||||
top: 5px;
|
||||
margin-left: 10px;
|
||||
max-width: 250px;
|
||||
max-height: 250px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* googleBtn */
|
||||
|
||||
@@ -104,7 +104,7 @@ const ForgotPasswordForm = () => {
|
||||
|
||||
<Box as="div" textAlign="center" mt="20px">
|
||||
<Link
|
||||
href="/authentication/sign-in/"
|
||||
href="/auth/sign-in/"
|
||||
className="primaryColor text-decoration-none"
|
||||
>
|
||||
<i className="ri-arrow-left-s-line"></i> Back to Sign in
|
||||
|
||||
@@ -8,6 +8,7 @@ import Button from "@mui/material/Button";
|
||||
import FormControlLabel from "@mui/material/FormControlLabel";
|
||||
import Checkbox from "@mui/material/Checkbox";
|
||||
import styles from "@/components/Authentication/Authentication.module.css";
|
||||
import WrenchBoardLogo from "@/public/images/logos/wrenchboard-logo.png";
|
||||
|
||||
const SignInForm = () => {
|
||||
const handleSubmit = (event) => {
|
||||
@@ -33,47 +34,21 @@ const SignInForm = () => {
|
||||
>
|
||||
<Grid item xs={12} md={12} lg={12} xl={12}>
|
||||
<Box>
|
||||
<Typography as="h1" fontSize="28px" fontWeight="700" mb="65px">
|
||||
Sign In{" "}
|
||||
<Box
|
||||
display="flex"
|
||||
alignItems="center"
|
||||
justifyContent="center"
|
||||
mb="60px"
|
||||
>
|
||||
<img
|
||||
src="/images/favicon.png"
|
||||
alt="favicon"
|
||||
src="/images/logos/wrenchboard-logo.png"
|
||||
alt="logo"
|
||||
className={styles.favicon}
|
||||
/>
|
||||
</Typography>
|
||||
|
||||
{/* <Typography fontSize="15px" mb="30px">
|
||||
Already have an account?{" "}
|
||||
<Link
|
||||
href="/authentication/sign-up"
|
||||
className="primaryColor text-decoration-none"
|
||||
>
|
||||
Sign up
|
||||
</Link>
|
||||
</Typography>
|
||||
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
justifyContent: "space-between",
|
||||
alignItems: "center",
|
||||
mb: "30px",
|
||||
}}
|
||||
>
|
||||
<Link href="#" className={styles.googleBtn}>
|
||||
<img src="/images/google-icon.png" />
|
||||
Sign in with Google
|
||||
</Link>
|
||||
|
||||
<Link href="#" className={styles.fbBtn}>
|
||||
<img src="/images/fb-icon.png" />
|
||||
Sign in with Facebook
|
||||
</Link>
|
||||
</Box>
|
||||
|
||||
<div className={styles.or}>
|
||||
<span>or</span>
|
||||
</div> */}
|
||||
<Typography as="h1" fontSize="28px" fontWeight="700" mb="5px">
|
||||
Sign In{" "}
|
||||
</Typography>
|
||||
|
||||
<Box component="form" noValidate onSubmit={handleSubmit}>
|
||||
<Box
|
||||
@@ -153,7 +128,7 @@ const SignInForm = () => {
|
||||
|
||||
<Grid item xs={6} sm={6} textAlign="end">
|
||||
<Link
|
||||
href="/authentication/forgot-password"
|
||||
href="/auth/forgot-password"
|
||||
className="primaryColor text-decoration-none"
|
||||
>
|
||||
Forgot your password?
|
||||
|
||||
@@ -45,7 +45,7 @@ const SignUpForm = () => {
|
||||
<Typography fontSize="15px" mb="30px">
|
||||
Already have an account?{" "}
|
||||
<Link
|
||||
href="/authentication/sign-in/"
|
||||
href="/auth/sign-in/"
|
||||
className="primaryColor text-decoration-none"
|
||||
>
|
||||
Sign in
|
||||
@@ -204,7 +204,7 @@ const SignUpForm = () => {
|
||||
|
||||
<Grid item xs={6} sm={6} textAlign="end">
|
||||
<Link
|
||||
href="/authentication/forgot-password"
|
||||
href="/auth/forgot-password"
|
||||
className="primaryColor text-decoration-none"
|
||||
>
|
||||
Forgot your password?
|
||||
|
||||
+34
-27
@@ -1,4 +1,4 @@
|
||||
import React, { useState } from "react";
|
||||
import React, { useEffect, useState } from "react";
|
||||
import Head from "next/head";
|
||||
import { useRouter } from "next/router";
|
||||
import LeftSidebar from "@/components/_App/LeftSidebar";
|
||||
@@ -11,48 +11,55 @@ import AuthRoute from "middlewares/AuthRoute";
|
||||
const Layout = ({ children }) => {
|
||||
const router = useRouter();
|
||||
const [active, setActive] = useState(false);
|
||||
const isAuthenticated = false; // Replace with your authentication logic
|
||||
|
||||
const [isAuthenticationPage, setIsAuthenticationPage] = useState(false);
|
||||
|
||||
const toggleActive = () => {
|
||||
setActive(!active);
|
||||
};
|
||||
|
||||
const isAuthenticationPage = [
|
||||
"/authentication/sign-in",
|
||||
"/authentication/sign-up",
|
||||
"/authentication/forgot-password",
|
||||
"/authentication/lock-screen",
|
||||
"/authentication/confirm-mail",
|
||||
"/authentication/logout",
|
||||
].includes(router.pathname);
|
||||
useEffect(() => {
|
||||
const authenticationPages = [
|
||||
"/auth",
|
||||
"/auth/sign-in",
|
||||
"/auth/sign-up",
|
||||
"/auth/forgot-password",
|
||||
"/auth/lock-screen",
|
||||
"/auth/confirm-mail",
|
||||
"/auth/logout",
|
||||
];
|
||||
|
||||
setIsAuthenticationPage(authenticationPages.includes(router.pathname));
|
||||
}, [router.pathname]);
|
||||
|
||||
// Debugging: Log the value of isAuthenticationPage
|
||||
console.log("isAuthenticationPage:", isAuthenticationPage, router.pathname);
|
||||
|
||||
const title = isAuthenticationPage ? "CMC - auth" : "CMC - dashboard";
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>
|
||||
{isAuthenticated ? "CMC - Client" : "CMC - Authentication"}
|
||||
</title>
|
||||
<title>{title}</title>
|
||||
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
|
||||
</Head>
|
||||
|
||||
<AuthRoute>
|
||||
<div className={`main-wrapper-content ${active ? "active" : ""}`}>
|
||||
{!isAuthenticationPage && (
|
||||
<>
|
||||
<TopNavbar toggleActive={toggleActive} />
|
||||
<LeftSidebar toggleActive={toggleActive} />
|
||||
</>
|
||||
)}
|
||||
<div className={`main-wrapper-content ${active ? "active" : ""}`}>
|
||||
{!isAuthenticationPage && (
|
||||
<>
|
||||
<TopNavbar toggleActive={toggleActive} />
|
||||
<LeftSidebar toggleActive={toggleActive} />
|
||||
</>
|
||||
)}
|
||||
|
||||
<div className="main-content">{children}</div>
|
||||
<div className="main-content">{children}</div>
|
||||
|
||||
{!isAuthenticationPage && <Footer />}
|
||||
</div>
|
||||
{!isAuthenticationPage && <Footer />}
|
||||
</div>
|
||||
|
||||
<ScrollToTop />
|
||||
<ScrollToTop />
|
||||
|
||||
{!isAuthenticationPage && <ControlPanelModal />}
|
||||
</AuthRoute>
|
||||
{!isAuthenticationPage && <ControlPanelModal />}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -450,7 +450,7 @@ export const SidebarData = [
|
||||
},
|
||||
{
|
||||
title: "Authentication",
|
||||
path: "/authentication/sign-in/",
|
||||
path: "/auth/sign-in/",
|
||||
icon: <LockIcon />,
|
||||
iconClosed: <KeyboardArrowRightIcon />,
|
||||
iconOpened: <KeyboardArrowDownIcon />,
|
||||
@@ -458,23 +458,23 @@ export const SidebarData = [
|
||||
subNav: [
|
||||
{
|
||||
title: "Sign Up",
|
||||
path: "/authentication/sign-up/",
|
||||
path: "/auth/sign-up/",
|
||||
},
|
||||
{
|
||||
title: "Forgot Password",
|
||||
path: "/authentication/forgot-password/",
|
||||
path: "/auth/forgot-password/",
|
||||
},
|
||||
{
|
||||
title: "Lock Screen",
|
||||
path: "/authentication/lock-screen/",
|
||||
path: "/auth/lock-screen/",
|
||||
},
|
||||
{
|
||||
title: "Confirm Mail",
|
||||
path: "/authentication/confirm-mail/",
|
||||
path: "/auth/confirm-mail/",
|
||||
},
|
||||
{
|
||||
title: "Logout",
|
||||
path: "/authentication/logout/",
|
||||
path: "/auth/logout/",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -29,7 +29,7 @@ const SidebarWrap = styled("div")(({ theme }) => ({
|
||||
width: '100%'
|
||||
}));
|
||||
|
||||
const Sidebar = ({ toogleActive }) => {
|
||||
const Sidebar = ({ toggleActive }) => {
|
||||
return (
|
||||
<>
|
||||
<div className='leftSidebarDark'>
|
||||
@@ -46,23 +46,24 @@ const Sidebar = ({ toogleActive }) => {
|
||||
>
|
||||
<Link href='/'>
|
||||
<img
|
||||
src="/images/logo.png" alt="Logo"
|
||||
src="/images/logos/wrenchboard-logo.png" alt="Logo"
|
||||
className='black-logo'
|
||||
/>
|
||||
|
||||
{/* For Dark Variation */}
|
||||
<img
|
||||
src="/images/logo-white.png" alt="Logo"
|
||||
src="/images/logos/wrenchboard-logo.png" alt="Logo"
|
||||
className='white-logo'
|
||||
/>
|
||||
</Link>
|
||||
|
||||
<IconButton
|
||||
onClick={toogleActive}
|
||||
onClick={toggleActive}
|
||||
size="small"
|
||||
sx={{
|
||||
background: 'rgb(253, 237, 237)',
|
||||
display: { lg: 'none' }
|
||||
display: { lg: 'none' },
|
||||
marginLeft: "1rem"
|
||||
}}
|
||||
>
|
||||
<ClearIcon />
|
||||
|
||||
@@ -183,7 +183,7 @@ const Profile = () => {
|
||||
</ListItemIcon>
|
||||
|
||||
<Link
|
||||
href="/authentication/logout/"
|
||||
href="/auth/logout/"
|
||||
fontSize="13px"
|
||||
color="inherit"
|
||||
underline="none"
|
||||
|
||||
@@ -7,7 +7,7 @@ import Profile from "./Profile";
|
||||
import Tooltip from "@mui/material/Tooltip";
|
||||
import CurrentDate from "./CurrentDate";
|
||||
|
||||
const TopNavbar = ({ toogleActive }) => {
|
||||
const TopNavbar = ({ toggleActive }) => {
|
||||
return (
|
||||
<>
|
||||
<div className="topNavbarDark">
|
||||
@@ -28,7 +28,7 @@ const TopNavbar = ({ toogleActive }) => {
|
||||
size="sm"
|
||||
edge="start"
|
||||
color="inherit"
|
||||
onClick={toogleActive}
|
||||
onClick={toggleActive}
|
||||
>
|
||||
<i className="ri-align-left"></i>
|
||||
</IconButton>
|
||||
|
||||
+1
-1
@@ -96,7 +96,7 @@ RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
|
||||
&& yarn --version
|
||||
|
||||
COPY docker-entrypoint.sh /usr/local/bin/
|
||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||
# ENTRYPOINT ["docker-entrypoint.sh"]
|
||||
# COPY docker-entrypoint.sh /usr/local/bin/
|
||||
# ENTRYPOINT ["docker-entrypoint.sh"]
|
||||
|
||||
|
||||
@@ -1,20 +1,21 @@
|
||||
"use client"
|
||||
"use client";
|
||||
import { useEffect } from "react";
|
||||
import { useRouter } from "next/router";
|
||||
|
||||
/**
|
||||
* This is used to protect routes in a web application.
|
||||
* This function is used to protect routes in a web application.
|
||||
* It checks if the user is authenticated and redirects them to the sign-in page if they are not.
|
||||
|
||||
*/
|
||||
const AuthRoute = ({ children }) => {
|
||||
const router = useRouter();
|
||||
|
||||
useEffect(() => {
|
||||
const isAuthenticated = false; // In a real application, this would be determined based on the user's authentication status.
|
||||
const isAuthenticated = true; // In a real application, this would be determined based on the user's authentication status.
|
||||
|
||||
if (!isAuthenticated) {
|
||||
router.push("/authentication/sign-in/");
|
||||
}
|
||||
router.push("/auth/");
|
||||
}
|
||||
}, [router]);
|
||||
|
||||
return <>{children}</>;
|
||||
|
||||
+15
-13
@@ -1,34 +1,36 @@
|
||||
import React from 'react';
|
||||
import '../styles/remixicon.css'
|
||||
import 'react-tabs/style/react-tabs.css';
|
||||
import React from "react";
|
||||
import "../styles/remixicon.css";
|
||||
import "react-tabs/style/react-tabs.css";
|
||||
import "swiper/css";
|
||||
import "swiper/css/bundle";
|
||||
|
||||
// Chat Styles
|
||||
import '../styles/chat.css'
|
||||
import "../styles/chat.css";
|
||||
// Globals Styles
|
||||
import '../styles/globals.css'
|
||||
import "../styles/globals.css";
|
||||
// Rtl Styles
|
||||
import '../styles/rtl.css'
|
||||
import "../styles/rtl.css";
|
||||
// Dark Mode Styles
|
||||
import '../styles/dark.css'
|
||||
import "../styles/dark.css";
|
||||
// Theme Styles
|
||||
import theme from '../styles/theme'
|
||||
import theme from "../styles/theme";
|
||||
|
||||
import { ThemeProvider, CssBaseline } from "@mui/material";
|
||||
import Layout from "@/components/_App/Layout";
|
||||
import AuthRoute from "middlewares/AuthRoute";
|
||||
|
||||
function MyApp({ Component, pageProps }) {
|
||||
return (
|
||||
<>
|
||||
<ThemeProvider theme={theme}>
|
||||
<CssBaseline />
|
||||
<Layout>
|
||||
<Component {...pageProps} />
|
||||
</Layout>
|
||||
<AuthRoute>
|
||||
<Layout>
|
||||
<Component {...pageProps} />
|
||||
</Layout>
|
||||
</AuthRoute>
|
||||
</ThemeProvider>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default MyApp
|
||||
export default MyApp;
|
||||
|
||||
+24
-3
@@ -7,11 +7,32 @@ class MyDocument extends Document {
|
||||
return (
|
||||
<Html dir={dir} lang={locale}>
|
||||
<Head>
|
||||
<link rel="icon" href="/images/favicon.png" />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
|
||||
{/* Icons */}
|
||||
<link rel="icon" href="/images/icons/favicon.ico" />
|
||||
<link
|
||||
rel="icon"
|
||||
href="/images/icons/favicon-16x16.png"
|
||||
sizes="16x16"
|
||||
type="image/png"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
href="/images/icons/android-chrome-192x192.png"
|
||||
sizes="192x192"
|
||||
type="image/png"
|
||||
/>
|
||||
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
|
||||
<link
|
||||
rel="icon"
|
||||
href="/images/icons/android-chrome-512x512.png"
|
||||
sizes="512x512"
|
||||
type="image/png"
|
||||
/>
|
||||
</Head>
|
||||
<body>
|
||||
<Main />
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
import SignInForm from "@/components/Authentication/SignInForm";
|
||||
|
||||
export default function Index() {
|
||||
return <SignInForm />;
|
||||
}
|
||||
@@ -51,7 +51,7 @@ export default function Logout() {
|
||||
</Typography>
|
||||
|
||||
<Button
|
||||
href="/authentication/sign-in/"
|
||||
href="/auth/sign-in/"
|
||||
fullWidth
|
||||
variant="contained"
|
||||
sx={{
|
||||
@@ -15,7 +15,6 @@ import RecentOrders from "@/components/Dashboard/eCommerce/RecentOrders";
|
||||
import TeamMembersList from "@/components/Dashboard/eCommerce/TeamMembersList";
|
||||
import BestSellingProducts from "@/components/Dashboard/eCommerce/BestSellingProducts";
|
||||
import LiveVisitsOnOurSite from "@/components/Dashboard/eCommerce/LiveVisitsOnOurSite";
|
||||
import AuthRoute from "middlewares/AuthRoute";
|
||||
|
||||
function MainPage() {
|
||||
return (
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 84 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 713 B |
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 110 KiB |
Reference in New Issue
Block a user