diff --git a/front-js/src/app/api/config/route.ts b/front-js/src/app/api/config/route.ts
index bdd53d5..b285b0b 100644
--- a/front-js/src/app/api/config/route.ts
+++ b/front-js/src/app/api/config/route.ts
@@ -2,6 +2,6 @@ import { NextResponse } from 'next/server';
export async function GET() {
return NextResponse.json({
- commonKey: process.env.COMMON_KEY
+ commonKey: process.env.COMMON_KEY,
});
}
diff --git a/front-js/src/app/dashboard/page.tsx b/front-js/src/app/dashboard/page.tsx
index 5d4c826..47f6d70 100644
--- a/front-js/src/app/dashboard/page.tsx
+++ b/front-js/src/app/dashboard/page.tsx
@@ -164,6 +164,7 @@ export default function Dashboard() {
title="Interface réseau"
description="..."
image="/modules_assets/scapy.svg"
+ onClick={() => router.push("/modules/interface_reseau")}
/>
diff --git a/front-js/src/app/modules/interface_reseau/Cours.tsx b/front-js/src/app/modules/interface_reseau/Cours.tsx
new file mode 100644
index 0000000..db6fc46
--- /dev/null
+++ b/front-js/src/app/modules/interface_reseau/Cours.tsx
@@ -0,0 +1,64 @@
+import Title from "@/components/Title";
+import Text from "@/components/Text";
+import React from "react";
+import Space from "@/components/Space";
+import { Code, solarizedLight } from "react-code-blocks";
+
+const Cours: React.FC = () => {
+ return (
+ <>
+
+ Introduction
+
+ L'interface réseau est un composant logiciel ou matériel qui
+ permet à un ordinateur de se connecter à un réseau. En utilisant la
+ commande{" "}
+ (ou{" "}
+ sur les
+ systèmes Linux récents), on peut obtenir des informations importantes
+ comme :
+
+
+ -
+ L'adresse IP de l'interface
+
+ -
+ L'adresse MAC (identifiant physique)
+
+ -
+ Le masque de sous-réseau
+
+ -
+ L'état de l'interface (active ou non)
+
+
+
+ Sur les systèmes Windows, on peut utiliser la commande{" "}
+ pour
+ obtenir ces informations.
+
+
+ Interface réseau
+
+
+ Chaque interface a une adresse IP unique et une adresse MAC
+ (identifiant physique).
+
+ L'interface{" "}
+ est une
+ interface spéciale qui est utilisée pour les communications internes
+ de la machine hôte.
+
+ Sur la machine du site, l'interface{" "}
+ est
+ l'interface principale de la machine hôte qui est connectée au
+ réseau internet. Les autres interfaces sont des interfaces virtuelles
+ qui sont utilisées pour Docker. Elles ne nous intéressent pas pour le
+ moment.
+
+
+ >
+ );
+};
+
+export default Cours;
diff --git a/front-js/src/app/modules/interface_reseau/InterfaceSandbox.tsx b/front-js/src/app/modules/interface_reseau/InterfaceSandbox.tsx
new file mode 100644
index 0000000..51bfb08
--- /dev/null
+++ b/front-js/src/app/modules/interface_reseau/InterfaceSandbox.tsx
@@ -0,0 +1,85 @@
+import Title from "@/components/Title";
+import Button from "@/components/Button";
+import Space from "@/components/Space";
+import React from "react";
+import { useState } from "react";
+import axios from "@/axiosConfig";
+import Cookies from "js-cookie";
+import { Alert } from "@mui/material";
+import Box from "@/components/Box";
+
+const InterfaceSandbox: React.FC = () => {
+ const [interfaces, setInterfaces] = useState<
+ Array<{ name: string; mac: string; ip: string }>
+ >([]);
+
+ const handleInterfaces = async (e: { preventDefault: () => void }) => {
+ e.preventDefault();
+ try {
+ const response = await axios.get("/scapy/interfaces/", {
+ headers: {
+ Authorization: `Bearer ${Cookies.get("access_token")}`,
+ },
+ });
+ const data = response.data;
+ if (response.status === 200) {
+ const formattedInterfaces = Object.entries(data.interfaces).map(
+ ([name, details]: [string, any]) => ({
+ name,
+ mac: details.mac,
+ ip: details.ip,
+ }),
+ );
+ setInterfaces(formattedInterfaces);
+ }
+ } catch (error: unknown) {}
+ };
+
+ return (
+ <>
+
+
+
+ >
+ );
+};
+
+export default InterfaceSandbox;
diff --git a/front-js/src/app/modules/interface_reseau/layout.tsx b/front-js/src/app/modules/interface_reseau/layout.tsx
new file mode 100644
index 0000000..6e9f6e2
--- /dev/null
+++ b/front-js/src/app/modules/interface_reseau/layout.tsx
@@ -0,0 +1,14 @@
+import type { Metadata } from "next";
+
+export const metadata: Metadata = {
+ title: "Interface réseau",
+ description: "Networkers",
+};
+
+export default function RootLayout({
+ children,
+}: Readonly<{
+ children: React.ReactNode;
+}>) {
+ return
{children};
+}
diff --git a/front-js/src/app/modules/interface_reseau/page.tsx b/front-js/src/app/modules/interface_reseau/page.tsx
index e69de29..3c77dfd 100644
--- a/front-js/src/app/modules/interface_reseau/page.tsx
+++ b/front-js/src/app/modules/interface_reseau/page.tsx
@@ -0,0 +1,90 @@
+"use client";
+
+import Layout from "@/components/Layout";
+import Header from "@/components/Header";
+import Title from "@/components/Title";
+import Box from "@/components/Box";
+import { useRouter } from "next/navigation";
+import { useEffect, useState } from "react";
+import Cookies from "js-cookie";
+import axios from "@/axiosConfig";
+import InterfaceSandbox from "./InterfaceSandbox";
+import Cours from "./Cours";
+import { Tab, Tabs } from "@mui/material";
+
+export default function Interface() {
+ const router = useRouter();
+
+ const [, setHasAccessToken] = useState(false);
+
+ useEffect(() => {
+ const checkTokens = async () => {
+ const token = Cookies.get("access_token");
+ const refresh = Cookies.get("refresh_token");
+ if (!token && refresh) {
+ try {
+ const response = await axios.post("/auth/refresh", {
+ refresh_token: refresh,
+ });
+ const data = response.data;
+ if (response.status === 200) {
+ Cookies.set("access_token", data.access_token);
+ Cookies.set("refresh_token", refresh);
+ }
+ } catch {
+ Cookies.remove("access_token");
+ Cookies.remove("refresh_token");
+ }
+ }
+ setHasAccessToken(!!token);
+
+ if (!token && !refresh) {
+ router.push("/");
+ }
+ };
+
+ checkTokens();
+ }, [router]);
+
+ const [activeTab, setActiveTab] = useState("cours");
+
+ const handleTabChange = (tab: string) => {
+ setActiveTab(tab);
+ };
+
+ return (
+
+
+ router.push(`/${tab.toLowerCase()}`)}
+ onClickLogout={() => router.push("/auth/logout")}
+ onClickLogo={() => router.push("/")}
+ />
+
+
+
+ Interface réseau
+
+
+
+ handleTabChange(tab)}
+ centered
+ >
+
+
+
+
+
+ {activeTab === "cours" ? : }
+
+
+ );
+}
diff --git a/front-js/src/app/modules/ipv6/Cours.tsx b/front-js/src/app/modules/ipv6/Cours.tsx
index aaeead7..fd687f8 100644
--- a/front-js/src/app/modules/ipv6/Cours.tsx
+++ b/front-js/src/app/modules/ipv6/Cours.tsx
@@ -29,7 +29,7 @@ const Cours: React.FC = () => {
headers: {
Authorization: `Bearer ${Cookies.get("access_token")}`,
},
- }
+ },
);
const data = response.data;
if (response.status === 200) {
diff --git a/front-js/src/app/profile/layout.tsx b/front-js/src/app/profile/layout.tsx
index 5e2b311..8321c2d 100644
--- a/front-js/src/app/profile/layout.tsx
+++ b/front-js/src/app/profile/layout.tsx
@@ -11,4 +11,4 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return {children};
-}
\ No newline at end of file
+}
diff --git a/front-js/src/app/profile/page.tsx b/front-js/src/app/profile/page.tsx
index 2a098b3..d6003d7 100644
--- a/front-js/src/app/profile/page.tsx
+++ b/front-js/src/app/profile/page.tsx
@@ -8,7 +8,7 @@ import Input from "@/components/Input";
import Layout from "@/components/Layout";
import Modal from "@/components/Modal";
import ValidatePsw from "@/components/ValidatePsw";
-import {validate_passwd} from "@/utils/validatePasswd";
+import { validate_passwd } from "@/utils/validatePasswd";
import { useEffect, useState } from "react";
import Title from "@/components/Title";
import axios from "@/axiosConfig";
@@ -17,131 +17,132 @@ import Cookies from "js-cookie";
import { Alert } from "@mui/material";
export default function Profile() {
- const router = useRouter();
+ const router = useRouter();
- const [oldPassword, setOldPassword] = useState("");
+ const [oldPassword, setOldPassword] = useState("");
- const [password, setPassword] = useState("");
+ const [password, setPassword] = useState("");
- const [confirmPassword, setConfirmPassword] = useState("")
+ const [confirmPassword, setConfirmPassword] = useState("");
- const [error, setError] = useState("");
- const [success, setSuccess] = useState("");
-
+ const [error, setError] = useState("");
+ const [success, setSuccess] = useState("");
- const [hasAccessToken, setHasAccessToken] = useState(false);
+ const [hasAccessToken, setHasAccessToken] = useState(false);
- useEffect(() => {
- const checkTokens = async () => {
- const token = Cookies.get("access_token");
- const refresh = Cookies.get("refresh_token");
- if (!token && refresh) {
- try {
- const response = await axios.post("/auth/refresh", {
- refresh_token: refresh,
- });
- const data = response.data;
- if (response.status === 200) {
- Cookies.set("access_token", data.access_token);
- Cookies.set("refresh_token", refresh);
- }
- } catch {
- Cookies.remove("access_token");
- Cookies.remove("refresh_token");
- }
- }
- setHasAccessToken(!!token);
-
- if (!token && !refresh) {
- router.push("/");
- }
- };
-
- checkTokens();
- }, [router]);
-
- const changePassword = async (e: { preventDefault: () => void }) => {
- e.preventDefault();
+ useEffect(() => {
+ const checkTokens = async () => {
+ const token = Cookies.get("access_token");
+ const refresh = Cookies.get("refresh_token");
+ if (!token && refresh) {
try {
- setError("");
- setSuccess("");
- const response = await axios.patch("/users/me/password", {
- old_password: oldPassword,
- password: password,
- confirm_password: confirmPassword,
- }, {
- headers: {
- Authorization: `Bearer ${Cookies.get("access_token")}`,
- },
+ const response = await axios.post("/auth/refresh", {
+ refresh_token: refresh,
});
const data = response.data;
if (response.status === 200) {
- setSuccess("Mot de passe modifié avec succès")
- }
- } catch (error: unknown) {
- const axiosError = error as AxiosError;
- if (
- axiosError.response?.status === 400 ||
- axiosError.response?.status === 404
- ) {
- setError("L'ancien mot de passe est incorrect");
- } else if (axiosError.response?.status === 403) {
- setError("Erreur lors de la connexion");
- } else {
- setError("Erreur lors de la connexion");
+ Cookies.set("access_token", data.access_token);
+ Cookies.set("refresh_token", refresh);
}
+ } catch {
+ Cookies.remove("access_token");
+ Cookies.remove("refresh_token");
}
+ }
+ setHasAccessToken(!!token);
+
+ if (!token && !refresh) {
+ router.push("/");
+ }
};
- return (
-
-
- router.push(`/${tab.toLowerCase()}`)}
- onClickLogout={() => router.push("/auth/logout")}
- onClickLogo={() => router.push("/")}
- />
-
-
-
- Modifier mon mot de passe
-
+
+
+
+ );
+}
diff --git a/front-js/src/axiosConfig.ts b/front-js/src/axiosConfig.ts
index 08af79c..d013004 100644
--- a/front-js/src/axiosConfig.ts
+++ b/front-js/src/axiosConfig.ts
@@ -3,15 +3,15 @@ import axios from "axios";
const instance = axios.create({
baseURL: "http://127.0.0.1:8000/",
headers: {
- "Content-Type": "application/json"
- }
+ "Content-Type": "application/json",
+ },
});
instance.interceptors.request.use(async (config) => {
- const response = await fetch('/api/config');
+ const response = await fetch("/api/config");
const { commonKey } = await response.json();
config.headers["X-Common-Key"] = commonKey;
return config;
});
-export default instance;
\ No newline at end of file
+export default instance;
diff --git a/front-js/src/components/Backlink/Backlink.scss b/front-js/src/components/Backlink/Backlink.scss
index e440f4b..b4168d3 100644
--- a/front-js/src/components/Backlink/Backlink.scss
+++ b/front-js/src/components/Backlink/Backlink.scss
@@ -1,28 +1,28 @@
@keyframes rotate {
- 0% {
- transform: rotate(0);
- }
- 100% {
- transform: rotate(360deg);
- }
+ 0% {
+ transform: rotate(0);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
}
@keyframes rotate-back {
- 0% {
- transform: rotate(360deg);
- }
- 100% {
- transform: rotate(0);
- }
+ 0% {
+ transform: rotate(360deg);
+ }
+ 100% {
+ transform: rotate(0);
+ }
}
.backlink {
- display: flex;
- cursor: pointer;
- > svg {
- animation: rotate-back 0.7s ease 1;
- &:hover {
- animation: rotate 0.7s ease 1;
- }
+ display: flex;
+ cursor: pointer;
+ > svg {
+ animation: rotate-back 0.7s ease 1;
+ &:hover {
+ animation: rotate 0.7s ease 1;
}
+ }
}
diff --git a/front-js/src/components/Card/Card.scss b/front-js/src/components/Card/Card.scss
index 0463932..f7b2a55 100644
--- a/front-js/src/components/Card/Card.scss
+++ b/front-js/src/components/Card/Card.scss
@@ -1,43 +1,43 @@
.card {
+ padding: 1rem;
+ border-radius: 50px;
+ background: rgba(246, 246, 246, 0.4);
+ backdrop-filter: blur(100px);
+ --shadow-color: 236deg 42% 39%;
+ box-shadow:
+ 0px 1px 1.3px hsl(var(--shadow-color) / 0.09),
+ 0px 3.6px 4.5px -0.4px hsl(var(--shadow-color) / 0.1),
+ 0px 7px 8.8px -0.8px hsl(var(--shadow-color) / 0.12),
+ 0.1px 13.4px 16.8px -1.2px hsl(var(--shadow-color) / 0.14),
+ 0.2px 25px 31.3px -1.6px hsl(var(--shadow-color) / 0.16);
+ transition: all 0.3s ease;
+ .background-image {
+ opacity: 0.8;
+ width: calc(100% + 2rem);
+ height: auto;
+ max-height: 200px;
+ margin: -1rem -1rem 0;
+ object-fit: cover;
+ border-radius: 50px 50px 0 0;
+ }
+ &-content {
padding: 1rem;
- border-radius: 50px;
- background: rgba(246, 246, 246, 0.4);
- backdrop-filter: blur(100px);
- --shadow-color: 236deg 42% 39%;
- box-shadow:
- 0px 1px 1.3px hsl(var(--shadow-color) / 0.09),
- 0px 3.6px 4.5px -0.4px hsl(var(--shadow-color) / 0.1),
- 0px 7px 8.8px -0.8px hsl(var(--shadow-color) / 0.12),
- 0.1px 13.4px 16.8px -1.2px hsl(var(--shadow-color) / 0.14),
- 0.2px 25px 31.3px -1.6px hsl(var(--shadow-color) / 0.16);
- transition: all 0.3s ease;
- .background-image {
- opacity: 0.8;
- width: calc(100% + 2rem);
- height: auto;
- max-height: 200px;
- margin: -1rem -1rem 0;
- object-fit: cover;
- border-radius: 50px 50px 0 0;
- }
- &-content {
- padding: 1rem;
- h3 {
- font-size: 1.5rem;
- margin-bottom: 0.5rem;
- }
- p {
- font-size: 1rem;
- }
+ h3 {
+ font-size: 1.5rem;
+ margin-bottom: 0.5rem;
}
- &:hover {
- cursor: pointer;
- transform: translateY(-10px);
- box-shadow:
- 0px 2px 2.6px hsl(var(--shadow-color) / 0.09),
- 0px 7.2px 9px -0.4px hsl(var(--shadow-color) / 0.1),
- 0px 14px 17.6px -0.8px hsl(var(--shadow-color) / 0.12),
- 0.2px 26.8px 33.6px -1.2px hsl(var(--shadow-color) / 0.14),
- 0.4px 50px 62.6px -1.6px hsl(var(--shadow-color) / 0.16);
+ p {
+ font-size: 1rem;
}
+ }
+ &:hover {
+ cursor: pointer;
+ transform: translateY(-10px);
+ box-shadow:
+ 0px 2px 2.6px hsl(var(--shadow-color) / 0.09),
+ 0px 7.2px 9px -0.4px hsl(var(--shadow-color) / 0.1),
+ 0px 14px 17.6px -0.8px hsl(var(--shadow-color) / 0.12),
+ 0.2px 26.8px 33.6px -1.2px hsl(var(--shadow-color) / 0.14),
+ 0.4px 50px 62.6px -1.6px hsl(var(--shadow-color) / 0.16);
+ }
}
diff --git a/front-js/src/components/Header/Header.scss b/front-js/src/components/Header/Header.scss
index af68759..4b57bc8 100644
--- a/front-js/src/components/Header/Header.scss
+++ b/front-js/src/components/Header/Header.scss
@@ -1,64 +1,64 @@
.header {
- margin-left: auto;
- margin-right: auto;
- width: 90%;
- background: rgba(246, 246, 246, 0.4);
- backdrop-filter: blur(100px);
- --shadow-color: 236deg 42% 39%;
- box-shadow:
- 0px 1px 1.3px hsl(var(--shadow-color) / 0.09),
- 0px 3.6px 4.5px -0.4px hsl(var(--shadow-color) / 0.1),
- 0px 7px 8.8px -0.8px hsl(var(--shadow-color) / 0.12),
- 0.1px 13.4px 16.8px -1.2px hsl(var(--shadow-color) / 0.14),
- 0.2px 25px 31.3px -1.6px hsl(var(--shadow-color) / 0.16);
- border-radius: 10px;
- padding: 20px;
+ margin-left: auto;
+ margin-right: auto;
+ width: 90%;
+ background: rgba(246, 246, 246, 0.4);
+ backdrop-filter: blur(100px);
+ --shadow-color: 236deg 42% 39%;
+ box-shadow:
+ 0px 1px 1.3px hsl(var(--shadow-color) / 0.09),
+ 0px 3.6px 4.5px -0.4px hsl(var(--shadow-color) / 0.1),
+ 0px 7px 8.8px -0.8px hsl(var(--shadow-color) / 0.12),
+ 0.1px 13.4px 16.8px -1.2px hsl(var(--shadow-color) / 0.14),
+ 0.2px 25px 31.3px -1.6px hsl(var(--shadow-color) / 0.16);
+ border-radius: 10px;
+ padding: 20px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ &-logo {
display: flex;
- justify-content: space-between;
align-items: center;
-
- &-logo {
- display: flex;
- align-items: center;
- transition: 0.3s;
- &:hover {
- cursor: pointer;
- transform: scale(0.9);
- }
+ transition: 0.3s;
+ &:hover {
+ cursor: pointer;
+ transform: scale(0.9);
}
- &-content {
- display: flex;
- justify-content: right;
- align-items: center;
+ }
+ &-content {
+ display: flex;
+ justify-content: right;
+ align-items: center;
- &-tab {
- font-size: 20px;
- margin-left: 50px;
- margin-right: 50px;
- cursor: pointer;
- transition: 0.3s;
- &:hover {
- transform: scale(0.9);
- }
- &.active {
- font-weight: bold;
- }
- }
- &.logout {
- align-items: center;
- & .logout-line {
- margin-left: 10px;
- margin-right: 20px;
- opacity: 0.8;
- }
- & .logout-icon {
- transition: 0.3s;
+ &-tab {
+ font-size: 20px;
+ margin-left: 50px;
+ margin-right: 50px;
+ cursor: pointer;
+ transition: 0.3s;
+ &:hover {
+ transform: scale(0.9);
+ }
+ &.active {
+ font-weight: bold;
+ }
+ }
+ &.logout {
+ align-items: center;
+ & .logout-line {
+ margin-left: 10px;
+ margin-right: 20px;
+ opacity: 0.8;
+ }
+ & .logout-icon {
+ transition: 0.3s;
- cursor: pointer;
- &:hover {
- transform: scale(0.9);
- }
- }
+ cursor: pointer;
+ &:hover {
+ transform: scale(0.9);
}
+ }
}
+ }
}
diff --git a/front-js/src/components/Layout/Layout.scss b/front-js/src/components/Layout/Layout.scss
index 076aaae..38ad837 100644
--- a/front-js/src/components/Layout/Layout.scss
+++ b/front-js/src/components/Layout/Layout.scss
@@ -5,7 +5,11 @@
width: 100%;
&.background {
&-home {
- background-image: linear-gradient(125deg, rgba(218, 240, 247, 0.63) 25%, rgba(0, 5, 255, 0.34) 75%);
+ background-image: linear-gradient(
+ 125deg,
+ rgba(218, 240, 247, 0.63) 25%,
+ rgba(0, 5, 255, 0.34) 75%
+ );
overflow-y: scroll;
}
&-logged {
diff --git a/front-js/src/components/Modal/Modal.scss b/front-js/src/components/Modal/Modal.scss
index 2469d46..8278bed 100644
--- a/front-js/src/components/Modal/Modal.scss
+++ b/front-js/src/components/Modal/Modal.scss
@@ -1,14 +1,14 @@
.modal {
- padding: 20px;
- width: 471px;
- border-radius: 28px;
- background: rgba(246, 246, 246, 0.4);
- backdrop-filter: blur(100px);
- --shadow-color: 236deg 42% 39%;
- box-shadow:
- 0px 1px 1.3px hsl(var(--shadow-color) / 0.09),
- 0px 3.6px 4.5px -0.4px hsl(var(--shadow-color) / 0.1),
- 0px 7px 8.8px -0.8px hsl(var(--shadow-color) / 0.12),
- 0.1px 13.4px 16.8px -1.2px hsl(var(--shadow-color) / 0.14),
- 0.2px 25px 31.3px -1.6px hsl(var(--shadow-color) / 0.16);
+ padding: 20px;
+ width: 471px;
+ border-radius: 28px;
+ background: rgba(246, 246, 246, 0.4);
+ backdrop-filter: blur(100px);
+ --shadow-color: 236deg 42% 39%;
+ box-shadow:
+ 0px 1px 1.3px hsl(var(--shadow-color) / 0.09),
+ 0px 3.6px 4.5px -0.4px hsl(var(--shadow-color) / 0.1),
+ 0px 7px 8.8px -0.8px hsl(var(--shadow-color) / 0.12),
+ 0.1px 13.4px 16.8px -1.2px hsl(var(--shadow-color) / 0.14),
+ 0.2px 25px 31.3px -1.6px hsl(var(--shadow-color) / 0.16);
}
diff --git a/front-js/src/components/ValidatePsw/ValidatePsw.scss b/front-js/src/components/ValidatePsw/ValidatePsw.scss
index 1d87a01..2961da7 100644
--- a/front-js/src/components/ValidatePsw/ValidatePsw.scss
+++ b/front-js/src/components/ValidatePsw/ValidatePsw.scss
@@ -1,14 +1,14 @@
.validate-password {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ margin-top: 20px;
+ margin-bottom: 20px;
+ border-radius: 8px;
+ padding: 10px;
+ border: 1px solid var(--Gris, #4b4c59);
+ span {
display: flex;
- flex-direction: column;
- justify-content: center;
- margin-top: 20px;
- margin-bottom: 20px;
- border-radius: 8px;
- padding: 10px;
- border: 1px solid var(--Gris, #4b4c59);
- span {
- display: flex;
- align-items: center;
- }
+ align-items: center;
+ }
}
diff --git a/front-js/src/components/ValidatePsw/index.ts b/front-js/src/components/ValidatePsw/index.ts
index 7ebe8f8..2ade628 100644
--- a/front-js/src/components/ValidatePsw/index.ts
+++ b/front-js/src/components/ValidatePsw/index.ts
@@ -1 +1 @@
-export { default} from './ValidatePsw';
\ No newline at end of file
+export { default } from "./ValidatePsw";
diff --git a/front-js/src/utils/validatePasswd.js b/front-js/src/utils/validatePasswd.js
index 4bdf352..352d69f 100644
--- a/front-js/src/utils/validatePasswd.js
+++ b/front-js/src/utils/validatePasswd.js
@@ -1,6 +1,8 @@
export function validate_passwd(passwd) {
- if (!passwd.match(/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/)) {
- return false;
- }
- return true;
-}
\ No newline at end of file
+ if (
+ !passwd.match(/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/)
+ ) {
+ return false;
+ }
+ return true;
+}
diff --git a/front-js/tailwind.config.js b/front-js/tailwind.config.js
index 8f98db5..6933d51 100644
--- a/front-js/tailwind.config.js
+++ b/front-js/tailwind.config.js
@@ -1,5 +1,5 @@
// tailwind.config.js
-const {nextui} = require("@nextui-org/theme");
+const { nextui } = require("@nextui-org/theme");
/** @type {import('tailwindcss').Config} */
module.exports = {
@@ -11,4 +11,4 @@ module.exports = {
},
darkMode: "class",
plugins: [nextui()],
-};
\ No newline at end of file
+};