diff --git a/src/front/Components/Layouts/Login/index.tsx b/src/front/Components/Layouts/Login/index.tsx index 36609094..b5da5a40 100644 --- a/src/front/Components/Layouts/Login/index.tsx +++ b/src/front/Components/Layouts/Login/index.tsx @@ -17,7 +17,7 @@ export default function Login() { const router = useRouter(); const error = router.query["error"]; - const [isErrorModalOpen, setIsErrorModalOpen] = useState(false); + const [isErrorModalOpen, setIsErrorModalOpen] = useState(0); const redirectUserOnConnection = useCallback(() => { const variables = FrontendVariables.getInstance(); @@ -28,16 +28,25 @@ export default function Login() { ); }, [router]); - const openErrorModal = useCallback(() => { - setIsErrorModalOpen(true); + const openErrorModal = useCallback((index: number) => { + setIsErrorModalOpen(index); }, []); const closeErrorModal = useCallback(() => { - setIsErrorModalOpen(false); + setIsErrorModalOpen(0); }, []); useEffect(() => { - if (error === "1") openErrorModal(); + switch (error) { + case "1": + openErrorModal(1); + break; + case "2": + openErrorModal(2); + break; + default: + break; + } }, [error, openErrorModal]); return ( @@ -58,7 +67,7 @@ export default function Login() { + +
+ + Veuillez vous reconnecter. + +
+
); } diff --git a/src/front/Components/Layouts/LoginCallback/index.tsx b/src/front/Components/Layouts/LoginCallback/index.tsx index 5079e38b..44e1ba60 100644 --- a/src/front/Components/Layouts/LoginCallback/index.tsx +++ b/src/front/Components/Layouts/LoginCallback/index.tsx @@ -13,6 +13,7 @@ import Loader from "@Front/Components/DesignSystem/Loader"; import UserStore from "@Front/Stores/UserStore"; import Link from "next/link"; import JwtService from "@Front/Services/JwtService/JwtService"; +import CookieService from "@Front/Services/CookieService/CookieService"; export default function LoginCallBack() { const router = useRouter(); @@ -20,10 +21,6 @@ export default function LoginCallBack() { useEffect(() => { async function getUser() { const code = router.query["code"]; - const refreshedTokens = await JwtService.getInstance().refreshToken(); - if (refreshedTokens) { - return router.push(Module.getInstance().get().modules.pages.Folder.props.path); - } if (code) { try { const token = await Auth.getInstance().getIdnotJwt(code as string); @@ -35,7 +32,13 @@ export default function LoginCallBack() { return; } } - return router.push(Module.getInstance().get().modules.pages.Login.props.path + "?error=1"); + const refreshToken = CookieService.getInstance().getCookie("leCoffreRefreshToken"); + if(!refreshToken) return router.push(Module.getInstance().get().modules.pages.Login.props.path + "?error=1"); + const isTokenRefreshed = await JwtService.getInstance().refreshToken(refreshToken); + if (isTokenRefreshed) { + return router.push(Module.getInstance().get().modules.pages.Folder.props.path); + } + return router.push(Module.getInstance().get().modules.pages.Login.props.path + "?error=2"); } getUser(); }), diff --git a/src/front/Components/Layouts/LoginCallbackCustomer/index.tsx b/src/front/Components/Layouts/LoginCallbackCustomer/index.tsx index 214bfca6..1db7b577 100644 --- a/src/front/Components/Layouts/LoginCallbackCustomer/index.tsx +++ b/src/front/Components/Layouts/LoginCallbackCustomer/index.tsx @@ -13,6 +13,7 @@ import CustomerStore from "@Front/Stores/CustomerStore"; import Module from "@Front/Config/Module"; import Link from "next/link"; import JwtService from "@Front/Services/JwtService/JwtService"; +import CookieService from "@Front/Services/CookieService/CookieService"; export default function LoginCallBackCustomer() { const router = useRouter(); @@ -20,10 +21,6 @@ export default function LoginCallBackCustomer() { useEffect(() => { const getReport = async () => { const tokenid360 = router.query["token"]; - const refreshedTokens = await JwtService.getInstance().refreshToken(); - if (refreshedTokens) { - return router.push(Module.getInstance().get().modules.pages.Folder.pages.Select.props.path); - } if (tokenid360) { let token: ICustomerTokens | undefined; try { @@ -36,7 +33,13 @@ export default function LoginCallBackCustomer() { CustomerStore.instance.connect(token.accessToken, token.refreshToken); router.push(Module.getInstance().get().modules.pages.Folder.pages.Select.props.path); } - return router.push(Module.getInstance().get().modules.pages.CustomersLogin.props.path + "?error=1"); + const refreshToken = CookieService.getInstance().getCookie("leCoffreRefreshToken"); + if(!refreshToken) return router.push(Module.getInstance().get().modules.pages.Login.props.path + "?error=1"); + const isTokenRefreshed = await JwtService.getInstance().refreshToken(refreshToken); + if (isTokenRefreshed) { + return router.push(Module.getInstance().get().modules.pages.Folder.pages.Select.props.path); + } + return router.push(Module.getInstance().get().modules.pages.Login.props.path + "?error=2"); }; getReport(); }), diff --git a/src/front/Services/JwtService/JwtService.ts b/src/front/Services/JwtService/JwtService.ts index dbe8ca4d..dc2e30fe 100644 --- a/src/front/Services/JwtService/JwtService.ts +++ b/src/front/Services/JwtService/JwtService.ts @@ -35,6 +35,19 @@ export default class JwtService { return (this.instance ??= new this()); } + public getUserJwtPayload(): IUserJwtPayload | undefined { + const accessToken = CookieService.getInstance().getCookie("leCoffreAccessToken"); + if (!accessToken) return; + return jwt_decode(accessToken); + } + + public getCustomerJwtPayload(): ICustomerJwtPayload | undefined { + const accessToken = CookieService.getInstance().getCookie("leCoffreAccessToken"); + if (!accessToken) return; + return jwt_decode(accessToken); + } + + public decodeJwt(): IUserJwtPayload | undefined { const accessToken = CookieService.getInstance().getCookie("leCoffreAccessToken"); if (!accessToken) return; @@ -51,14 +64,12 @@ export default class JwtService { * @description : set a cookie with a name and a value that expire in 7 days * @throws {Error} If the name or the value is empty */ - public async refreshToken() { - const refreshToken = CookieService.getInstance().getCookie("leCoffreRefreshToken"); - const variables = await FrontendVariables.getInstance(); - if (!refreshToken) return false; + public async refreshToken(refreshToken: string): Promise { const userToken = jwt_decode(refreshToken) as IUserJwtPayload; const customerToken = jwt_decode(refreshToken) as ICustomerJwtPayload; if (userToken?.exp && userToken.exp > Math.floor(Date.now() / 1000)) { + const variables = FrontendVariables.getInstance(); if (userToken?.userId) { try { const headers = new Headers();