159 lines
5.4 KiB
TypeScript
159 lines
5.4 KiB
TypeScript
import CoffreIcon from "@Assets/Icons/coffre.svg";
|
||
import idNoteLogo from "@Assets/Icons/id-note-logo.svg";
|
||
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||
import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage";
|
||
import Image from "next/image";
|
||
import { useRouter } from "next/router";
|
||
import { useCallback, useEffect, useState } from "react";
|
||
|
||
import classes from "./classes.module.scss";
|
||
import LandingImage from "./landing-connect.jpeg";
|
||
import { FrontendVariables } from "@Front/Config/VariablesFront";
|
||
import Link from "next/link";
|
||
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
||
|
||
export default function Login() {
|
||
const router = useRouter();
|
||
|
||
const error = router.query["error"];
|
||
|
||
const [isErrorModalOpen, setIsErrorModalOpen] = useState(0);
|
||
|
||
const redirectUserOnConnection = useCallback(() => {
|
||
const variables = FrontendVariables.getInstance();
|
||
router.push(
|
||
`${variables.IDNOT_BASE_URL + variables.IDNOT_AUTHORIZE_ENDPOINT}?client_id=${variables.IDNOT_CLIENT_ID}&redirect_uri=${
|
||
variables.FRONT_APP_HOST
|
||
}/authorized-client&scope=openid,profile&response_type=code`,
|
||
);
|
||
}, [router]);
|
||
|
||
const openErrorModal = useCallback((index: number) => {
|
||
setIsErrorModalOpen(index);
|
||
}, []);
|
||
|
||
const closeErrorModal = useCallback(() => {
|
||
setIsErrorModalOpen(0);
|
||
}, []);
|
||
|
||
const closeNoEmailModal = useCallback(() => {
|
||
setIsErrorModalOpen(0);
|
||
router.push("https://connexion.idnot.fr/");
|
||
}, [router]);
|
||
|
||
const closeContactAdminModal = () => {
|
||
setIsErrorModalOpen(0);
|
||
window.open("https://www.lecoffre.io/contact", "_blank");
|
||
};
|
||
|
||
useEffect(() => {
|
||
openErrorModal(parseInt(error as string));
|
||
}, [error, openErrorModal]);
|
||
|
||
return (
|
||
<DefaultDoubleSidePage title={"Login"} image={LandingImage}>
|
||
<div className={classes["root"]}>
|
||
<Image alt="coffre" src={CoffreIcon} />
|
||
<Typography typo={ITypo.H1}>
|
||
<div className={classes["title"]}>Connexion espace professionnel</div>
|
||
</Typography>
|
||
<Button onClick={redirectUserOnConnection} icon={idNoteLogo} iconposition={"left"}>
|
||
S'identifier avec ID.not
|
||
</Button>
|
||
<Typography typo={ITypo.P_18}>
|
||
<div className={classes["forget-password"]}>Vous n'arrivez pas à vous connecter ?</div>
|
||
</Typography>
|
||
<Link href="mailto:support@lecoffre.io">
|
||
<Button variant={EButtonVariant.LINE}>Contacter l'administrateur</Button>
|
||
</Link>
|
||
</div>
|
||
<Confirm
|
||
isOpen={isErrorModalOpen === 1}
|
||
onClose={closeErrorModal}
|
||
showCancelButton={false}
|
||
onAccept={closeErrorModal}
|
||
closeBtn
|
||
header={"Erreur"}
|
||
confirmText={"OK"}>
|
||
<div className={classes["modal-content"]}>
|
||
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||
Vous ne disposez pas d'un abonnement, veuillez contacter l'administrateur de votre office.
|
||
</Typography>
|
||
</div>
|
||
</Confirm>
|
||
<Confirm
|
||
isOpen={isErrorModalOpen === 2}
|
||
onClose={closeErrorModal}
|
||
showCancelButton={false}
|
||
onAccept={closeErrorModal}
|
||
closeBtn
|
||
header={"Session expirée"}
|
||
confirmText={"OK"}>
|
||
<div className={classes["modal-content"]}>
|
||
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||
Veuillez vous reconnecter.
|
||
</Typography>
|
||
</div>
|
||
</Confirm>
|
||
<Confirm
|
||
isOpen={isErrorModalOpen === 3}
|
||
onClose={closeErrorModal}
|
||
onAccept={closeNoEmailModal}
|
||
closeBtn
|
||
header={"Echec de connexion"}
|
||
confirmText={"Accéder à mon compte ID.not"}
|
||
cancelText={"OK"}>
|
||
<div className={classes["modal-content"]}>
|
||
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||
Votre compte ID.not doit être associé à une adresse email @notaires.fr (onglet Mettre à jour mes données
|
||
professionnelles)
|
||
</Typography>
|
||
</div>
|
||
</Confirm>
|
||
<Confirm
|
||
isOpen={isErrorModalOpen === 4}
|
||
onClose={closeErrorModal}
|
||
onAccept={closeContactAdminModal}
|
||
closeBtn
|
||
header={"Vous n’êtes pas bêta-testeur"}
|
||
confirmText={"Contacter l'administrateur"}
|
||
cancelText={"OK"}>
|
||
<div className={classes["modal-content"]}>
|
||
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||
L'accès à la version bêta de lecoffre.io est limité à un groupe restreint d'utilisateurs autorisés.
|
||
</Typography>
|
||
<ul>
|
||
<li>
|
||
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||
Si vous êtes intéressé par la participation à notre programme de bêta-test, veuillez nous compléter le
|
||
formulaire :{" "}
|
||
<a
|
||
href="https://www.lecoffre.io/contact"
|
||
target="_blank"
|
||
style={{ color: "blue", textDecoration: "underline" }}>
|
||
https://www.lecoffre.io/contact
|
||
</a>
|
||
</Typography>
|
||
</li>
|
||
<div style={{ marginBottom: "10px" }}></div>
|
||
<li>
|
||
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||
Si vous avez déjà un compte bêta-testeur, veuillez vous connecter sur{" "}
|
||
<a
|
||
href="https://compte.idnot.fr/home"
|
||
target="_blank"
|
||
style={{ color: "blue", textDecoration: "underline" }}>
|
||
https://compte.idnot.fr/home
|
||
</a>{" "}
|
||
et vérifier que l'adresse mail renseignée sur votre espace est identique à celle que vous nous avez
|
||
communiquée.
|
||
</Typography>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</Confirm>
|
||
</DefaultDoubleSidePage>
|
||
);
|
||
}
|