From 8dc8ed71ab2a3338e4917a560a7ef7c8e02e50b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Mon, 8 Apr 2024 09:29:08 +0200 Subject: [PATCH 01/17] Remove old php code --- calendrier.php | 90 --------------------------------------- search.php | 65 ---------------------------- src/php/db/Calendrier.php | 55 ------------------------ 3 files changed, 210 deletions(-) delete mode 100644 calendrier.php delete mode 100644 search.php diff --git a/calendrier.php b/calendrier.php deleted file mode 100644 index 34c42c4..0000000 --- a/calendrier.php +++ /dev/null @@ -1,90 +0,0 @@ - - - - - Oui....Stiti - - - - - - - - - -
-
- -

- Doct'ISEN -

-
-
-
-
- -
-
-
- -
-
-
-
-
-
- -
- '; - echo ''; - ?> -
- -
-
-
- -
-
-
-
-
- Veuillez choisir une date

'; - } - else{ - displayRDVForDate($pdo, $_POST['start'], $_POST['id']); - } - ?> -
-
-
-
- - \ No newline at end of file diff --git a/search.php b/search.php deleted file mode 100644 index 63b6f8e..0000000 --- a/search.php +++ /dev/null @@ -1,65 +0,0 @@ - - - - - Recherche - - - - - - - - - - - -
-
-
- -

- Doct'ISEN -

-
-
-
-
- -
-
-
- -
-
- -
- - - \ No newline at end of file diff --git a/src/php/db/Calendrier.php b/src/php/db/Calendrier.php index 148c1fd..bfa876a 100644 --- a/src/php/db/Calendrier.php +++ b/src/php/db/Calendrier.php @@ -61,59 +61,4 @@ function takeRDV($pdo, $rdv_id, $patient_id): void $query->execute(); Response::HTTP200(['success' => 'RDV taken']); } - -/* -function displayRDVForDate($pdo, $date, $medecin){ - $availableHours = selectRDVForDate($pdo, $date, $medecin); - if(!$availableHours){ - echo '

Aucun rendez-vous disponible

'; - } - else{ - echo '

Rendez-vous disponible :

'; - foreach ($availableHours as $hour){ - $hourValue = selectRDVTimeByID($pdo, $hour); - $hourValue = substr($hourValue, 0, 5); - $token = tokenDecode(); - $patient = $token[1]; - echo ''.$hourValue.''; - } - } -} - - - - -function DisplayMedecinCard($pdo, $medecin){ - $query = $pdo->prepare("SELECT * FROM medecin WHERE m_id = :id"); - $query->bindParam(':id', $medecin); - $query->execute(); - $result = $query->fetchAll(); - foreach ($result as $row){ - echo '
'; - echo '
'; - echo '
'; - $imageUrl = 'https://thispersondoesnotexist.com'; - echo 'doctor'; - echo '
'; - echo '
'; - echo '
'; - echo '
'.$row['m_name'].' '.$row['m_surname'].'
'; - echo '
'.$row['m_specialty'].'
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - } -} - -function addRDVToDBThenRedirect($pdo, $rdv, $patient){ - $query = $pdo->prepare("UPDATE rendez_vous SET p_id = :p_id WHERE rdv_id = :rdv_id"); - $query->bindParam(':p_id', $patient); - $query->bindParam(':rdv_id', $rdv); - $query->execute(); - //Redirect to the rdv.php page - echo ''; -} -*/ - ?> \ No newline at end of file From fc1d6c1274d43aa9d0f191e57932eab45b53f6df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Mon, 8 Apr 2024 09:33:06 +0200 Subject: [PATCH 02/17] Add temp mokup for practicien --- index.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/index.php b/index.php index 9c85ef3..c630bae 100644 --- a/index.php +++ b/index.php @@ -36,8 +36,15 @@
+
From 6016b45d94faf128322c33bb55fe741c2b66d043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fouch=C3=A9?= Date: Mon, 8 Apr 2024 10:01:01 +0200 Subject: [PATCH 03/17] Add Login token --- src/js/AJAX/lib.js | 0 src/php/db/Login.php | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 src/js/AJAX/lib.js diff --git a/src/js/AJAX/lib.js b/src/js/AJAX/lib.js new file mode 100644 index 0000000..e69de29 diff --git a/src/php/db/Login.php b/src/php/db/Login.php index 58fd748..ce3ec13 100644 --- a/src/php/db/Login.php +++ b/src/php/db/Login.php @@ -101,15 +101,15 @@ class LoginPatient { public static function Login($pdo,$mail,$password) : void { if(LoginPatient::checkMail($pdo,$mail)){ - $query = $pdo->prepare("SELECT p_id,p_password FROM patient where p_mail = :mail"); + $query = $pdo->prepare("SELECT p_id,p_password,p_name,p_surname,p_mail FROM patient where p_mail = :mail"); $query->bindParam(':mail', $mail); $query->execute(); $result = $query->fetch(PDO::FETCH_ASSOC); if(password_verify($password,$result['p_password'])){ - Response::HTTP200(['message' => 'Login success', 'id' => $result['p_id']]); + Response::HTTP200(['message' => 'Login success', 'token' => base64_encode("patient:".strval($result['p_id']).":".$result['p_name'].":".$result['p_surname'].":".$result['p_mail'])]); } else { - Response::HTTP401(['message' => 'Login failed', 'id' => 0]); + Response::HTTP401(['message' => 'Login failed', 'token' => 0]); } } } @@ -133,15 +133,15 @@ class LoginMedecin { public static function Login($pdo,$mail,$password) : void { if(LoginMedecin::checkMail($pdo,$mail)){ - $query = $pdo->prepare("SELECT m_id, m_password FROM medecin where m_mail = :mail"); + $query = $pdo->prepare("SELECT m_id, m_password,m_name,m_surname,m_mail FROM medecin where m_mail = :mail"); $query->bindParam(':mail', $mail); $query->execute(); $result = $query->fetch(PDO::FETCH_ASSOC); if(password_verify($password,$result['m_password'])){ - Response::HTTP200(['message' => 'Login success', 'id' => $result['m_id']]); + Response::HTTP200(['message' => 'Login success', 'token' => base64_encode("medecin:".strval($result['m_id']).":".$result['m_name'].":".$result['m_surname'].":".$result['m_mail'])]); } else { - Response::HTTP401(['message' => 'Login failed', 'id' => 0]); + Response::HTTP401(['message' => 'Login failed', 'token' => 0]); } } } From 8deeb4225b734d1a3fb08300d4b830387cac00cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fouch=C3=A9?= Date: Mon, 8 Apr 2024 10:01:16 +0200 Subject: [PATCH 04/17] Add Login token --- src/js/AJAX/lib.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/js/AJAX/lib.js b/src/js/AJAX/lib.js index e69de29..18c047e 100644 --- a/src/js/AJAX/lib.js +++ b/src/js/AJAX/lib.js @@ -0,0 +1,14 @@ +console.log("lib.js loaded"); + +function TokenDecode(token){ + let decodedToken = atob(token); + decodedToken = decodedToken.split(":"); + return { + type: decodedToken[0], + id: decodedToken[1], + name: decodedToken[2], + surname: decodedToken[3], + mail: decodedToken[4] + + }; +} \ No newline at end of file From 388d723e8a8a541d600dd5d24887540ca307c514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Wed, 10 Apr 2024 09:22:45 +0200 Subject: [PATCH 05/17] Temp mokup for login, start login in ajax, bug with the click on signup to login --- Request_Test/testHTTP.http | 8 ++ index.php | 17 +--- src/API/requests.php | 5 + src/css/styles.css | 52 ++++++++-- src/js/AJAX/index.js | 162 +++++++++++++++++++++++++++++- src/php/components/user-login.php | 2 +- 6 files changed, 223 insertions(+), 23 deletions(-) diff --git a/Request_Test/testHTTP.http b/Request_Test/testHTTP.http index 4f99b02..b6ac60f 100644 --- a/Request_Test/testHTTP.http +++ b/Request_Test/testHTTP.http @@ -52,3 +52,11 @@ test = "coucou" ### +POST http://serveur-projet-s4.felix/src/API/requests.php/api/login/patient +Content-Type: application/x-www-form-urlencoded + +mail = "nicolasgrenier@example.com" & +password = "a" + +### + diff --git a/index.php b/index.php index c630bae..eb15669 100644 --- a/index.php +++ b/index.php @@ -13,20 +13,6 @@ - diff --git a/src/API/requests.php b/src/API/requests.php index f044578..a4f9365 100644 --- a/src/API/requests.php +++ b/src/API/requests.php @@ -104,4 +104,9 @@ $router->POST('/api/create-rdv', ["medID", "date", "time", "lieu"], function($me CreateRDV($pdo, $medID, $date, $time, $lieu); }); +$router->POST('/api/login/patient', ["mail", "password"], function($mail, $password){ + global $pdo; + loginPatient::Login($pdo, $mail, $password); +}); + $router->run(); diff --git a/src/css/styles.css b/src/css/styles.css index 793c3d9..e83a622 100644 --- a/src/css/styles.css +++ b/src/css/styles.css @@ -4,6 +4,7 @@ body{ margin: 0; padding: 0; font-family: 'Roboto', sans-serif; + min-height: 100vh; } #DoctISEN{ @@ -15,6 +16,49 @@ body{ cursor: pointer; } +.login-ui{ + height: 78vh; + background-color: #EEF2F7; +} + +.signup-ui{ + height: 100vh; + background-color: #EEF2F7; +} + +#signup-sign-part{ + background-color: white; + height: 75%; + display: flex; + flex-direction: column; + gap: 1em; + border-radius: 20px; + box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); +} + + +#login-part{ + background-color: white; + height: 45%; + display: flex; + flex-direction: column; + gap: 1em; + border-radius: 20px; + box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); + margin-top: 10%; +} + +#signup-part{ + background-color: white; + height: 15%; + display: flex; + flex-direction: column; + gap: 1em; + border-radius: 20px; + box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); + margin-top: 10%; +} + #topbar{ background-color: #ff0000; height: 22vh; @@ -78,13 +122,7 @@ body{ padding-top: 5%; } -.logButton{ - width: 30%; - height: 100%; - background-color: #ff0000; - color: white; - font-weight: bold; -} + .pointer{ cursor: pointer; diff --git a/src/js/AJAX/index.js b/src/js/AJAX/index.js index 919777b..46efda6 100644 --- a/src/js/AJAX/index.js +++ b/src/js/AJAX/index.js @@ -249,6 +249,7 @@ function displayHome() {

Annuaire des médecins du CNOM • Annuaire des chirurgiens-dentistes de l'ONCD • Ordre National des Médecins • Ordre National des Chirurgiens-Dentistes

`; attachSearchEventListener(); + attachLoginUserDisplayEventListener(); displayAlert("Rendez-vous pris avec succès"); } @@ -279,6 +280,158 @@ function performSearch(event) { } } +function displayLoginUser() { + let container = document.getElementById("content"); + container.innerHTML = ""; + container.classList.add("d-flex", "flex-column", "justify-content-center", "text-center", "w-100", "login-ui"); + container.innerHTML = ` +
`; + document.getElementById("user-login-button").addEventListener("click", function(event) { + event.preventDefault(); + let mail = document.getElementById("user-login-mail").value; + let password = document.getElementById("user-login-password").value; + let data = "mail=" + mail + "&password=" + password; + ajaxRequest('POST', "src/API/requests.php/api/login/patient", function (data) { + if (data.success) { + sessionStorage.setItem("user_id", data.id); + sessionStorage.setItem("user_type", "patient"); + sessionStorage.setItem("user_mail", mail); + sessionStorage.setItem("user_name", data.name); + sessionStorage.setItem("user_surname", data.surname); + displayHome(); + } else { + alert("Erreur lors de la connexion"); + } + }, data); + }); + document.getElementById("signup-user").addEventListener("click", function(event) { + displaySignUpUser(); + }); +} + +function displaySignUpUser() { + let container = document.getElementById("content"); + container.innerHTML = ""; + container.classList.add("d-flex", "flex-column", "justify-content-center", "text-center", "w-100", "signup-ui"); + container.classList.remove("login-ui"); + container.innerHTML = ` +
+
+
+
Inscription sur Doct'ISEN
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
Déjà inscrit ?
+ + + +
+
+
+
`; + document.getElementById("login-user").addEventListener("click", function(event) { + console.log("login-user clicked"); + displayLoginUser(); + }); + document.getElementById("user-signup-button").addEventListener("click", function(event) { + event.preventDefault(); + let name = document.getElementById("user-signup-name").value; + let surname = document.getElementById("user-signup-surname").value; + let mail = document.getElementById("user-signup-mail").value; + let mailConfirm = document.getElementById("user-signup-mail-confirm").value; + let password = document.getElementById("user-signup-password").value; + let passwordConfirm = document.getElementById("user-signup-password-confirm").value; + let phone = document.getElementById("user-signup-phone").value; + if (mail !== mailConfirm) { + alert("Les adresses mail ne correspondent pas"); + return; + } + if (password !== passwordConfirm) { + alert("Les mots de passe ne correspondent pas"); + return; + } + let data = "name=" + name + "&surname=" + surname + "&mail=" + mail + "&password=" + password + "&phone=" + phone; + ajaxRequest('POST', "src/API/requests.php/api/signup/patient", function (data) { + if (data.success) { + sessionStorage.setItem("user_id", data.id); + sessionStorage.setItem("user_type", "patient"); + sessionStorage.setItem("user_mail", mail); + sessionStorage.setItem("user_name", name); + sessionStorage.setItem("user_surname", surname); + displayHome(); + } else { + alert("Erreur lors de l'inscription"); + } + }, data); + }); +} + function attachSearchEventListener() { try{ document.getElementById("recherche").addEventListener("click", function (event) { @@ -322,6 +475,12 @@ function attachPrendreRDVEventListener() { }); } +function attachLoginUserDisplayEventListener() { + document.getElementById("login-user").addEventListener("click", function (event) { + displayLoginUser(); + }); +} + //Yanis Part function DisplayRDVPraticient(rdv){ @@ -383,4 +542,5 @@ function ButtonShowRdvPraticient() { //End Call ButtonShowRdvPraticient(); -attachSearchEventListener(); \ No newline at end of file +attachSearchEventListener(); +attachLoginUserDisplayEventListener(); \ No newline at end of file diff --git a/src/php/components/user-login.php b/src/php/components/user-login.php index c97b6fb..07b4130 100644 --- a/src/php/components/user-login.php +++ b/src/php/components/user-login.php @@ -24,7 +24,7 @@ echo 'Mon calendrier'; } } else { - echo '

'; + echo '

'; } } ?> \ No newline at end of file From 1d27b68318e17b6d7b823078589005fb3c7a453d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Wed, 10 Apr 2024 09:35:16 +0200 Subject: [PATCH 06/17] Fix click bug --- src/API/requests.php | 5 ----- src/css/styles.css | 1 - src/js/AJAX/index.js | 28 ++++++++++------------------ 3 files changed, 10 insertions(+), 24 deletions(-) diff --git a/src/API/requests.php b/src/API/requests.php index a4f9365..f044578 100644 --- a/src/API/requests.php +++ b/src/API/requests.php @@ -104,9 +104,4 @@ $router->POST('/api/create-rdv', ["medID", "date", "time", "lieu"], function($me CreateRDV($pdo, $medID, $date, $time, $lieu); }); -$router->POST('/api/login/patient', ["mail", "password"], function($mail, $password){ - global $pdo; - loginPatient::Login($pdo, $mail, $password); -}); - $router->run(); diff --git a/src/css/styles.css b/src/css/styles.css index e83a622..9774885 100644 --- a/src/css/styles.css +++ b/src/css/styles.css @@ -50,7 +50,6 @@ body{ #signup-part{ background-color: white; - height: 15%; display: flex; flex-direction: column; gap: 1em; diff --git a/src/js/AJAX/index.js b/src/js/AJAX/index.js index 46efda6..c849d1e 100644 --- a/src/js/AJAX/index.js +++ b/src/js/AJAX/index.js @@ -283,7 +283,7 @@ function performSearch(event) { function displayLoginUser() { let container = document.getElementById("content"); container.innerHTML = ""; - container.classList.add("d-flex", "flex-column", "justify-content-center", "text-center", "w-100", "login-ui"); + container.className = 'd-flex flex-column justify-content-center text-center w-100 login-ui'; container.innerHTML = `
@@ -302,12 +302,6 @@ function displayLoginUser() {
- -
@@ -344,8 +338,7 @@ function displayLoginUser() { function displaySignUpUser() { let container = document.getElementById("content"); container.innerHTML = ""; - container.classList.add("d-flex", "flex-column", "justify-content-center", "text-center", "w-100", "signup-ui"); - container.classList.remove("login-ui"); + container.className = 'd-flex flex-column justify-content-center text-center w-100 signup-ui'; container.innerHTML = `
@@ -358,7 +351,7 @@ function displaySignUpUser() {
- +
@@ -369,16 +362,16 @@ function displaySignUpUser() {
- - + +
- - + +
- +
@@ -388,15 +381,14 @@ function displaySignUpUser() {
Déjà inscrit ?
- +
`; - document.getElementById("login-user").addEventListener("click", function(event) { - console.log("login-user clicked"); + document.getElementById("login-user2").addEventListener("click", function(event) { displayLoginUser(); }); document.getElementById("user-signup-button").addEventListener("click", function(event) { From 3dd5a328ac7c84bee9d6fd9c7e67a4e458973b5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Wed, 10 Apr 2024 09:45:08 +0200 Subject: [PATCH 07/17] Add login and signup page for praticien --- src/css/styles.css | 5 ++ src/js/AJAX/index.js | 151 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 151 insertions(+), 5 deletions(-) diff --git a/src/css/styles.css b/src/css/styles.css index 9774885..c5e5821 100644 --- a/src/css/styles.css +++ b/src/css/styles.css @@ -26,6 +26,11 @@ body{ background-color: #EEF2F7; } +.signup-ui-praticien{ + height: 125vh; + background-color: #EEF2F7; +} + #signup-sign-part{ background-color: white; height: 75%; diff --git a/src/js/AJAX/index.js b/src/js/AJAX/index.js index c849d1e..b0d4026 100644 --- a/src/js/AJAX/index.js +++ b/src/js/AJAX/index.js @@ -296,7 +296,7 @@ function displayLoginUser() {
- +
@@ -335,6 +335,127 @@ function displayLoginUser() { }); } +function displayLoginPraticien() { + let container = document.getElementById("content"); + container.innerHTML = ""; + container.className = 'd-flex flex-column justify-content-center text-center w-100 login-ui'; + container.innerHTML = ` +
+
+
+
J'ai déjà un compte praticien Doct'ISEN
+
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
Nouveau praticien sur Doct'ISEN?
+ + + +
+
+
`; + document.getElementById("praticien-login-button").addEventListener("click", function(event) { + event.preventDefault(); + let mail = document.getElementById("praticien-login-mail").value; + let password = document.getElementById("praticien-login-password").value; + let data = "mail=" + mail + "&password=" + password; + ajaxRequest('POST', "src/API/requests.php/api/login/praticien", function (data) { + if (data.success) { + sessionStorage.setItem("user_id", data.id); + sessionStorage.setItem("user_type", "praticien"); + sessionStorage.setItem("user_mail", mail); + sessionStorage.setItem("user_name", data.name); + sessionStorage.setItem("user_surname", data.surname); + displayHome(); + } else { + alert("Erreur lors de la connexion"); + } + }, data); + }); + document.getElementById("signup-praticien").addEventListener("click", function(event) { + displaySignUpPraticien(); + }); +} + +function displaySignUpPraticien() { + let container = document.getElementById("content"); + container.innerHTML = ""; + container.className = 'd-flex flex-column justify-content-center text-center w-100 signup-ui-praticien'; + container.innerHTML = ` +
+
+
+
Inscription praticien sur Doct'ISEN
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
Déjà inscrit en tant que praticien ?
+ + + +
+
+
+
`; + document.getElementById("login-praticien2").addEventListener("click", function(event) { + displayLoginPraticien(); + }); +} + function displaySignUpUser() { let container = document.getElementById("content"); container.innerHTML = ""; @@ -468,11 +589,30 @@ function attachPrendreRDVEventListener() { } function attachLoginUserDisplayEventListener() { - document.getElementById("login-user").addEventListener("click", function (event) { - displayLoginUser(); - }); + try { + document.getElementById("login-user").addEventListener("click", function (event) { + displayLoginUser(); + }); + } + catch (e) { + //Do nothing + //console.error(e); + } } +function attachLoginPraticienDisplayEventListener() { + try { + document.getElementById("login-praticien").addEventListener("click", function (event) { + displayLoginPraticien(); + }); + } + catch (e) { + //Do nothing + //console.error(e); + } +} + + //Yanis Part function DisplayRDVPraticient(rdv){ @@ -535,4 +675,5 @@ function ButtonShowRdvPraticient() { ButtonShowRdvPraticient(); attachSearchEventListener(); -attachLoginUserDisplayEventListener(); \ No newline at end of file +attachLoginUserDisplayEventListener(); +attachLoginPraticienDisplayEventListener(); \ No newline at end of file From 395f0e2744022b16cde78f7c84c27e45baee5a69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fouch=C3=A9?= Date: Mon, 8 Apr 2024 10:01:01 +0200 Subject: [PATCH 08/17] Add Login token --- src/js/AJAX/lib.js | 0 src/php/db/Login.php | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 src/js/AJAX/lib.js diff --git a/src/js/AJAX/lib.js b/src/js/AJAX/lib.js new file mode 100644 index 0000000..e69de29 diff --git a/src/php/db/Login.php b/src/php/db/Login.php index 58fd748..ce3ec13 100644 --- a/src/php/db/Login.php +++ b/src/php/db/Login.php @@ -101,15 +101,15 @@ class LoginPatient { public static function Login($pdo,$mail,$password) : void { if(LoginPatient::checkMail($pdo,$mail)){ - $query = $pdo->prepare("SELECT p_id,p_password FROM patient where p_mail = :mail"); + $query = $pdo->prepare("SELECT p_id,p_password,p_name,p_surname,p_mail FROM patient where p_mail = :mail"); $query->bindParam(':mail', $mail); $query->execute(); $result = $query->fetch(PDO::FETCH_ASSOC); if(password_verify($password,$result['p_password'])){ - Response::HTTP200(['message' => 'Login success', 'id' => $result['p_id']]); + Response::HTTP200(['message' => 'Login success', 'token' => base64_encode("patient:".strval($result['p_id']).":".$result['p_name'].":".$result['p_surname'].":".$result['p_mail'])]); } else { - Response::HTTP401(['message' => 'Login failed', 'id' => 0]); + Response::HTTP401(['message' => 'Login failed', 'token' => 0]); } } } @@ -133,15 +133,15 @@ class LoginMedecin { public static function Login($pdo,$mail,$password) : void { if(LoginMedecin::checkMail($pdo,$mail)){ - $query = $pdo->prepare("SELECT m_id, m_password FROM medecin where m_mail = :mail"); + $query = $pdo->prepare("SELECT m_id, m_password,m_name,m_surname,m_mail FROM medecin where m_mail = :mail"); $query->bindParam(':mail', $mail); $query->execute(); $result = $query->fetch(PDO::FETCH_ASSOC); if(password_verify($password,$result['m_password'])){ - Response::HTTP200(['message' => 'Login success', 'id' => $result['m_id']]); + Response::HTTP200(['message' => 'Login success', 'token' => base64_encode("medecin:".strval($result['m_id']).":".$result['m_name'].":".$result['m_surname'].":".$result['m_mail'])]); } else { - Response::HTTP401(['message' => 'Login failed', 'id' => 0]); + Response::HTTP401(['message' => 'Login failed', 'token' => 0]); } } } From cba90ac648435850164961d4c45264f802661fc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fouch=C3=A9?= Date: Mon, 8 Apr 2024 10:01:16 +0200 Subject: [PATCH 09/17] Add Login token --- src/js/AJAX/lib.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/js/AJAX/lib.js b/src/js/AJAX/lib.js index e69de29..18c047e 100644 --- a/src/js/AJAX/lib.js +++ b/src/js/AJAX/lib.js @@ -0,0 +1,14 @@ +console.log("lib.js loaded"); + +function TokenDecode(token){ + let decodedToken = atob(token); + decodedToken = decodedToken.split(":"); + return { + type: decodedToken[0], + id: decodedToken[1], + name: decodedToken[2], + surname: decodedToken[3], + mail: decodedToken[4] + + }; +} \ No newline at end of file From b3e0c556db2edeac455e2aa992ad246bb2698cfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Sat, 13 Apr 2024 19:04:53 +0200 Subject: [PATCH 10/17] Login and signup using ajax --- index.php | 2 +- src/API/requests.php | 12 +++++++ src/css/styles.css | 7 +++- src/js/AJAX/index.js | 75 +++++++++++++++++++++++++++++-------------- src/js/AJAX/lib.js | 4 ++- src/php/db/Signup.php | 13 ++++---- 6 files changed, 80 insertions(+), 33 deletions(-) diff --git a/index.php b/index.php index eb15669..40fdcb9 100644 --- a/index.php +++ b/index.php @@ -9,7 +9,7 @@ - + diff --git a/src/API/requests.php b/src/API/requests.php index f044578..d3ac587 100644 --- a/src/API/requests.php +++ b/src/API/requests.php @@ -5,6 +5,7 @@ require_once '../php/constants.php'; require_once '../php/db/dbconnect.php'; require_once '../php/db/Search.php'; require_once '../php/db/Login.php'; +require_once '../php/db/Signup.php'; require_once '../php/db/Calendrier.php'; require_once 'test/database.php'; ini_set('display_errors', 1); @@ -65,10 +66,21 @@ $router->POST('/api/login/patient', ["mail", "password"], function($mail, $passw loginPatient::Login($pdo, $mail, $password); }); +$router->PUT('/api/signup/patient', ["mail", "password", "name", "surname", "phone"], function($mail, $password, $name, $surname, $phone){ + global $pdo; + SignupPatient::Insert($pdo, $mail, $password, $name, $surname, $phone); +}); + $router->POST('/api/login/medecin', ["mail", "password"], function($mail, $password){ global $pdo; loginMedecin::Login($pdo, $mail, $password); }); + +$router->PUT('/api/signup/medecin', ["name", "surname", "mail", "password", "specialite", "phone", "postal"], function($name, $surname, $mail, $password, $specialite, $phone, $postal){ + global $pdo; + SignupMedecin::insertMedecin($pdo, $name, $surname, $mail, $password, $specialite, $phone, $postal); +}); + $router->PUT('/api/requests', ["test"], function($test){ echo json_encode($test); }); diff --git a/src/css/styles.css b/src/css/styles.css index c5e5821..de23199 100644 --- a/src/css/styles.css +++ b/src/css/styles.css @@ -33,7 +33,7 @@ body{ #signup-sign-part{ background-color: white; - height: 75%; + height: 80%; display: flex; flex-direction: column; gap: 1em; @@ -159,6 +159,11 @@ margin-left: 6rem !important; margin-right: 24rem !important; } +.mx-25{ + margin-left: 25% !important; + margin-right: 25% !important; +} + .thumbnail{ max-width: 100%; height: auto; diff --git a/src/js/AJAX/index.js b/src/js/AJAX/index.js index b0d4026..bddab30 100644 --- a/src/js/AJAX/index.js +++ b/src/js/AJAX/index.js @@ -1,5 +1,7 @@ +import {TokenDecode} from "./lib.js"; console.log("index.js loaded"); + //Felix Part function displaySearchResults(data) { @@ -285,7 +287,7 @@ function displayLoginUser() { container.innerHTML = ""; container.className = 'd-flex flex-column justify-content-center text-center w-100 login-ui'; container.innerHTML = ` -
+
J'ai déjà un compte Doct'ISEN
@@ -318,12 +320,13 @@ function displayLoginUser() { let password = document.getElementById("user-login-password").value; let data = "mail=" + mail + "&password=" + password; ajaxRequest('POST', "src/API/requests.php/api/login/patient", function (data) { - if (data.success) { - sessionStorage.setItem("user_id", data.id); - sessionStorage.setItem("user_type", "patient"); - sessionStorage.setItem("user_mail", mail); - sessionStorage.setItem("user_name", data.name); - sessionStorage.setItem("user_surname", data.surname); + if (data.message === "Login success") { + const token_decoded = TokenDecode(data.token); + sessionStorage.setItem("user_type", token_decoded.type); + sessionStorage.setItem("user_id", token_decoded.id); + sessionStorage.setItem("user_mail", token_decoded.mail); + sessionStorage.setItem("user_name", token_decoded.name); + sessionStorage.setItem("user_surname", token_decoded.surname); displayHome(); } else { alert("Erreur lors de la connexion"); @@ -340,7 +343,7 @@ function displayLoginPraticien() { container.innerHTML = ""; container.className = 'd-flex flex-column justify-content-center text-center w-100 login-ui'; container.innerHTML = ` -
+
J'ai déjà un compte praticien Doct'ISEN
@@ -372,13 +375,14 @@ function displayLoginPraticien() { let mail = document.getElementById("praticien-login-mail").value; let password = document.getElementById("praticien-login-password").value; let data = "mail=" + mail + "&password=" + password; - ajaxRequest('POST', "src/API/requests.php/api/login/praticien", function (data) { - if (data.success) { - sessionStorage.setItem("user_id", data.id); - sessionStorage.setItem("user_type", "praticien"); - sessionStorage.setItem("user_mail", mail); - sessionStorage.setItem("user_name", data.name); - sessionStorage.setItem("user_surname", data.surname); + ajaxRequest('POST', "src/API/requests.php/api/login/medecin", function (data) { + if (data.message === "Login success") { + const token_decoded = TokenDecode(data.token); + sessionStorage.setItem("user_type", token_decoded.type); + sessionStorage.setItem("user_id", token_decoded.id); + sessionStorage.setItem("user_mail", token_decoded.mail); + sessionStorage.setItem("user_name", token_decoded.name); + sessionStorage.setItem("user_surname", token_decoded.surname); displayHome(); } else { alert("Erreur lors de la connexion"); @@ -395,7 +399,7 @@ function displaySignUpPraticien() { container.innerHTML = ""; container.className = 'd-flex flex-column justify-content-center text-center w-100 signup-ui-praticien'; container.innerHTML = ` -
+
Inscription praticien sur Doct'ISEN
@@ -454,6 +458,34 @@ function displaySignUpPraticien() { document.getElementById("login-praticien2").addEventListener("click", function(event) { displayLoginPraticien(); }); + document.getElementById("praticien-signup-button").addEventListener("click", function(event) { + event.preventDefault(); + let name = document.getElementById("praticien-signup-name").value; + let surname = document.getElementById("praticien-signup-surname").value; + let mail = document.getElementById("praticien-signup-mail").value; + let mailConfirm = document.getElementById("praticien-signup-mail-confirm").value; + let password = document.getElementById("praticien-signup-password").value; + let passwordConfirm = document.getElementById("praticien-signup-password-confirm").value; + let phone = document.getElementById("praticien-signup-phone").value; + let specialty = document.getElementById("praticien-signup-specialty").value; + let postal = document.getElementById("praticien-signup-postal").value; + if (mail !== mailConfirm) { + alert("Les adresses mail ne correspondent pas"); + return; + } + if (password !== passwordConfirm) { + alert("Les mots de passe ne correspondent pas"); + return; + } + let data = "name=" + name + "&surname=" + surname + "&mail=" + mail + "&password=" + password + "&specialite=" + specialty + "&phone=" + phone + "&postal=" + postal; + ajaxRequest('PUT', "src/API/requests.php/api/signup/medecin", function (data) { + if (data.success) { + displayLoginPraticien(); + } else { + alert("Erreur lors de l'inscription"); + } + }, data); + }); } function displaySignUpUser() { @@ -461,7 +493,7 @@ function displaySignUpUser() { container.innerHTML = ""; container.className = 'd-flex flex-column justify-content-center text-center w-100 signup-ui'; container.innerHTML = ` -
+
Inscription sur Doct'ISEN
@@ -530,14 +562,9 @@ function displaySignUpUser() { return; } let data = "name=" + name + "&surname=" + surname + "&mail=" + mail + "&password=" + password + "&phone=" + phone; - ajaxRequest('POST', "src/API/requests.php/api/signup/patient", function (data) { + ajaxRequest('PUT', "src/API/requests.php/api/signup/patient", function (data) { if (data.success) { - sessionStorage.setItem("user_id", data.id); - sessionStorage.setItem("user_type", "patient"); - sessionStorage.setItem("user_mail", mail); - sessionStorage.setItem("user_name", name); - sessionStorage.setItem("user_surname", surname); - displayHome(); + displayLoginUser(); } else { alert("Erreur lors de l'inscription"); } diff --git a/src/js/AJAX/lib.js b/src/js/AJAX/lib.js index 18c047e..87ed7dc 100644 --- a/src/js/AJAX/lib.js +++ b/src/js/AJAX/lib.js @@ -11,4 +11,6 @@ function TokenDecode(token){ mail: decodedToken[4] }; -} \ No newline at end of file +} + +export {TokenDecode}; \ No newline at end of file diff --git a/src/php/db/Signup.php b/src/php/db/Signup.php index 955b8b6..26610c4 100644 --- a/src/php/db/Signup.php +++ b/src/php/db/Signup.php @@ -2,7 +2,8 @@ class SignupPatient { - public static function Insert($pdo,$name,$surname,$mail,$password,$phone){ + public static function Insert($pdo, $mail, $password, $name, $surname, $phone): void + { $password = password_hash($password, PASSWORD_ARGON2ID); $query = $pdo->prepare("INSERT INTO patient (p_name,p_surname,p_mail,p_password,p_phone) VALUES (:name,:surname,:mail,:password,:phone)"); $query->bindParam(':name', $name); @@ -17,9 +18,9 @@ class SignupPatient $query->execute(); $result = $query->fetch(PDO::FETCH_ASSOC); if ($result['count'] == 0) { - return false; + Response::HTTP401(['message' => 'Signup failed', 'token' => 0]); } else { - return true; + Response::HTTP200(['message' => 'Signup success', 'success' => true]); } } @@ -27,7 +28,7 @@ class SignupPatient class SignupMedecin { - public static function insertMedecin($pdo,$name,$surname,$mail,$password,$specialite,$phone,$postal) { + public static function insertMedecin($pdo, $name, $surname, $mail, $password, $specialite, $phone, $postal) { $password = password_hash($password, PASSWORD_ARGON2ID); $query = $pdo->prepare("INSERT INTO medecin (m_name,m_surname,m_mail,m_password,m_specialty,m_phone,m_postal) VALUES (:name,:surname,:mail,:password,:specialite,:phone,:postal)"); $query->bindParam(':name', $name); @@ -44,9 +45,9 @@ class SignupMedecin $query->execute(); $result = $query->fetch(PDO::FETCH_ASSOC); if ($result['count'] == 0) { - return false; + Response::HTTP401(['message' => 'Signup failed', 'token' => 0]); } else { - return true; + Response::HTTP200(['message' => 'Signup success', 'success' => true]); } } } \ No newline at end of file From 0d9ab96bf4f6b3936a99e200292c3136822f91e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fouch=C3=A9?= Date: Sat, 13 Apr 2024 20:24:07 +0200 Subject: [PATCH 11/17] store token only --- src/js/AJAX/index.js | 14 ++------------ src/php/db/Login.php | 2 ++ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/js/AJAX/index.js b/src/js/AJAX/index.js index bddab30..2220f87 100644 --- a/src/js/AJAX/index.js +++ b/src/js/AJAX/index.js @@ -321,12 +321,7 @@ function displayLoginUser() { let data = "mail=" + mail + "&password=" + password; ajaxRequest('POST', "src/API/requests.php/api/login/patient", function (data) { if (data.message === "Login success") { - const token_decoded = TokenDecode(data.token); - sessionStorage.setItem("user_type", token_decoded.type); - sessionStorage.setItem("user_id", token_decoded.id); - sessionStorage.setItem("user_mail", token_decoded.mail); - sessionStorage.setItem("user_name", token_decoded.name); - sessionStorage.setItem("user_surname", token_decoded.surname); + sessionStorage.setItem("token", data.token); displayHome(); } else { alert("Erreur lors de la connexion"); @@ -377,12 +372,7 @@ function displayLoginPraticien() { let data = "mail=" + mail + "&password=" + password; ajaxRequest('POST', "src/API/requests.php/api/login/medecin", function (data) { if (data.message === "Login success") { - const token_decoded = TokenDecode(data.token); - sessionStorage.setItem("user_type", token_decoded.type); - sessionStorage.setItem("user_id", token_decoded.id); - sessionStorage.setItem("user_mail", token_decoded.mail); - sessionStorage.setItem("user_name", token_decoded.name); - sessionStorage.setItem("user_surname", token_decoded.surname); + sessionStorage.setItem("token", data.token) displayHome(); } else { alert("Erreur lors de la connexion"); diff --git a/src/php/db/Login.php b/src/php/db/Login.php index ce3ec13..9a44970 100644 --- a/src/php/db/Login.php +++ b/src/php/db/Login.php @@ -92,6 +92,7 @@ class LoginPatient { $result = $query->fetch(PDO::FETCH_ASSOC); if ($result['count'] == 0) { + Response::HTTP404(['message' => 'Mail not found']); return false; } else { return true; @@ -124,6 +125,7 @@ class LoginMedecin { $result = $query->fetch(PDO::FETCH_ASSOC); if ($result['count'] == 0) { + Response::HTTP404(['message' => 'Mail not found']); return false; } else { return true; From 81af439f508f68ecaa54236a6701ebaaa70e0a11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Sun, 14 Apr 2024 12:06:40 +0200 Subject: [PATCH 12/17] Login UI using ajax --- Request_Test/testHTTP.http | 35 ++++++++++++++++-- index.php | 2 ++ src/js/AJAX/index.js | 72 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 105 insertions(+), 4 deletions(-) diff --git a/Request_Test/testHTTP.http b/Request_Test/testHTTP.http index b6ac60f..e4e1141 100644 --- a/Request_Test/testHTTP.http +++ b/Request_Test/testHTTP.http @@ -55,8 +55,39 @@ test = "coucou" POST http://serveur-projet-s4.felix/src/API/requests.php/api/login/patient Content-Type: application/x-www-form-urlencoded -mail = "nicolasgrenier@example.com" & -password = "a" +mail = nicolasgrenier@example.com & +password = a ### +POST http://serveur-projet-s4.felix/src/API/requests.php/api/login/medecin +Content-Type: application/x-www-form-urlencoded + +mail = cberger@example.org & +password = a + +### + +PUT http://serveur-projet-s4.felix/src/API/requests.php/api/signup/patient +Content-Type: application/x-www-form-urlencoded + +mail = felix.marquet@isen-ouest.yncrea.fr & +password = a & +name = Marquet & +surname = Félix & +phone = 0645383602 + +### + +PUT http://serveur-projet-s4.felix/src/API/requests.php/api/signup/medecin +Content-Type: application/x-www-form-urlencoded + +mail = felix.marquet@isen-ouest.yncrea.fr & +password = a & +name = Marquet & +surname = Félix & +phone = 0645383602 & +specialite = Test & +postal = 44470 + +### \ No newline at end of file diff --git a/index.php b/index.php index 40fdcb9..d189965 100644 --- a/index.php +++ b/index.php @@ -82,5 +82,7 @@
+ + \ No newline at end of file diff --git a/src/js/AJAX/index.js b/src/js/AJAX/index.js index 2220f87..38aaa3c 100644 --- a/src/js/AJAX/index.js +++ b/src/js/AJAX/index.js @@ -204,13 +204,81 @@ function clearAlert() { alert.innerHTML = ""; } +function displayHomeTopBar() { + let topbar = document.getElementById("topbar"); + topbar.innerHTML = ""; + if(sessionStorage.getItem("token") === null) { + topbar.innerHTML = ` +
+ +

+ Doct'ISEN +

+
+
+

+
+
+ `; + attachLoginUserDisplayEventListener(); + attachLoginPraticienDisplayEventListener(); + } + else { + let token = sessionStorage.getItem("token"); + let user = TokenDecode(token); + const mailMD5 = CryptoJS.MD5(user.mail); + if(user.type === "patient") { + topbar.innerHTML = ` +
+ +

+ Doct'ISEN +

+
+
+ avatar +
+

${user.name} ${user.surname}

+
+ +
+
`; + } + else if (user.type === "medecin") { + topbar.innerHTML = ` +
+ +

+ Doct'ISEN +

+
+
+ avatar +
+

${user.name} ${user.surname}

+
+ +
+
`; + } + else { + topbar.innerHTML = ` +
+

Erreur

+
`; + } + } +} + function displayHome() { removeSearchTopBar(); + displayHomeTopBar(); let container = document.getElementById("content"); + container.classList = ""; container.innerHTML = ""; container.innerHTML = `
-
+
img_index

Trouvez un rendez vous avec un medecin

@@ -593,7 +661,7 @@ function attachPrendreRDVEventListener() { buttons.forEach(function (button) { button.addEventListener("click", function (event) { let RDVid = event.target.id.split("-")[2]; - data = "rdv_id=" + RDVid + "&patient_id=" + 1; + let data = "rdv_id=" + RDVid + "&patient_id=" + 1; ajaxRequest('PUT', "src/API/requests.php/api/rdv", function (returnData){ if (returnData.success) { displayHome(); From 283095829978168d60ff3c825ab9e08bfe4cf7bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Sun, 14 Apr 2024 12:21:38 +0200 Subject: [PATCH 13/17] Disconnect functional --- index.php | 2 +- src/js/AJAX/index.js | 84 +++++++++++++++++++++++++++++++++----------- 2 files changed, 65 insertions(+), 21 deletions(-) diff --git a/index.php b/index.php index d189965..314c3b3 100644 --- a/index.php +++ b/index.php @@ -15,7 +15,7 @@
- +

Doct'ISEN

diff --git a/src/js/AJAX/index.js b/src/js/AJAX/index.js index 38aaa3c..1356416 100644 --- a/src/js/AJAX/index.js +++ b/src/js/AJAX/index.js @@ -4,6 +4,12 @@ console.log("index.js loaded"); //Felix Part +document.addEventListener("DOMContentLoaded", function() { + if(sessionStorage.getItem("token") !== null) { + displayHomeTopBar(); + } +}); + function displaySearchResults(data) { let container = document.getElementById("content"); container.innerHTML = ""; @@ -65,7 +71,7 @@ function removeSearchTopBar(){ topbar.innerHTML = ""; topbar.innerHTML = `
- +

Doct'ISEN

@@ -210,7 +216,7 @@ function displayHomeTopBar() { if(sessionStorage.getItem("token") === null) { topbar.innerHTML = `
- +

Doct'ISEN

@@ -230,7 +236,7 @@ function displayHomeTopBar() { if(user.type === "patient") { topbar.innerHTML = `
`; + attachDisconnectEventListener(); } else if (user.type === "medecin") { topbar.innerHTML = ` `; + attachDisconnectEventListener(); } else { topbar.innerHTML = ` @@ -270,7 +278,7 @@ function displayHomeTopBar() { } } -function displayHome() { +function displayHome(text) { removeSearchTopBar(); displayHomeTopBar(); let container = document.getElementById("content"); @@ -320,7 +328,9 @@ function displayHome() { `; attachSearchEventListener(); attachLoginUserDisplayEventListener(); - displayAlert("Rendez-vous pris avec succès"); + if(text !== ""){ + displayAlert(text); + } } function performSearch(event) { @@ -390,7 +400,7 @@ function displayLoginUser() { ajaxRequest('POST', "src/API/requests.php/api/login/patient", function (data) { if (data.message === "Login success") { sessionStorage.setItem("token", data.token); - displayHome(); + displayHome("Vous êtes connecté"); } else { alert("Erreur lors de la connexion"); } @@ -441,7 +451,7 @@ function displayLoginPraticien() { ajaxRequest('POST', "src/API/requests.php/api/login/medecin", function (data) { if (data.message === "Login success") { sessionStorage.setItem("token", data.token) - displayHome(); + displayHome("Vous êtes connecté"); } else { alert("Erreur lors de la connexion"); } @@ -630,6 +640,11 @@ function displaySignUpUser() { }); } +function disconnect() { + sessionStorage.removeItem("token"); + displayHome("Vous êtes déconnecté"); +} + function attachSearchEventListener() { try{ document.getElementById("recherche").addEventListener("click", function (event) { @@ -660,15 +675,20 @@ function attachPrendreRDVEventListener() { let buttons = document.querySelectorAll("button[id^='rdv-id-']"); buttons.forEach(function (button) { button.addEventListener("click", function (event) { - let RDVid = event.target.id.split("-")[2]; - let data = "rdv_id=" + RDVid + "&patient_id=" + 1; - ajaxRequest('PUT', "src/API/requests.php/api/rdv", function (returnData){ - if (returnData.success) { - displayHome(); - } else { - alert("Erreur lors de la prise de rendez-vous"); - } - }, data); + if(sessionStorage.getItem("token") === null) { + displayHome("Vous devez être connecté pour prendre un rendez-vous"); + } + else{ + let RDVid = event.target.id.split("-")[2]; + let data = "rdv_id=" + RDVid + "&patient_id=" + 1; + ajaxRequest('PUT', "src/API/requests.php/api/rdv", function (returnData){ + if (returnData.success) { + displayHome("Rendez-vous pris avec succès"); + } else { + alert("Erreur lors de la prise de rendez-vous"); + } + }, data); + } }); }); } @@ -697,6 +717,28 @@ function attachLoginPraticienDisplayEventListener() { } } +function attachReturnHomeEventListener() { + try { + document.getElementById("home").addEventListener("click", function (event) { + displayHome(""); + }); + } + catch (e) { + //Do nothing + //console.error(e); + } +} + +function attachDisconnectEventListener() { + try { + document.getElementById("user-name-disconect").addEventListener("click", function (event) { + disconnect(); + }); + } catch (e) { + //Do nothing + } +} + //Yanis Part @@ -761,4 +803,6 @@ function ButtonShowRdvPraticient() { ButtonShowRdvPraticient(); attachSearchEventListener(); attachLoginUserDisplayEventListener(); -attachLoginPraticienDisplayEventListener(); \ No newline at end of file +attachLoginPraticienDisplayEventListener(); +attachReturnHomeEventListener(); +attachDisconnectEventListener(); \ No newline at end of file From 80696a06ede10550221ed6dcb51c53dcb6adc155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Sun, 14 Apr 2024 12:25:32 +0200 Subject: [PATCH 14/17] Add check for login if already logged --- src/js/AJAX/index.js | 532 ++++++++++++++++++++++--------------------- 1 file changed, 276 insertions(+), 256 deletions(-) diff --git a/src/js/AJAX/index.js b/src/js/AJAX/index.js index 1356416..5441907 100644 --- a/src/js/AJAX/index.js +++ b/src/js/AJAX/index.js @@ -361,283 +361,303 @@ function performSearch(event) { } function displayLoginUser() { - let container = document.getElementById("content"); - container.innerHTML = ""; - container.className = 'd-flex flex-column justify-content-center text-center w-100 login-ui'; - container.innerHTML = ` -
-
-
-
J'ai déjà un compte Doct'ISEN
-
-
- - -
-
- - -
-
- -
-
-
-
-
-
Nouveau sur Doct'ISEN?
- - - + if (sessionStorage.getItem("token") === null) { + let container = document.getElementById("content"); + container.innerHTML = ""; + container.className = 'd-flex flex-column justify-content-center text-center w-100 login-ui'; + container.innerHTML = ` +
+
+
+
J'ai déjà un compte Doct'ISEN
+
+
+ + +
+
+ + +
+
+ +
+
-
-
`; - document.getElementById("user-login-button").addEventListener("click", function(event) { - event.preventDefault(); - let mail = document.getElementById("user-login-mail").value; - let password = document.getElementById("user-login-password").value; - let data = "mail=" + mail + "&password=" + password; - ajaxRequest('POST', "src/API/requests.php/api/login/patient", function (data) { - if (data.message === "Login success") { - sessionStorage.setItem("token", data.token); - displayHome("Vous êtes connecté"); - } else { - alert("Erreur lors de la connexion"); - } - }, data); - }); - document.getElementById("signup-user").addEventListener("click", function(event) { - displaySignUpUser(); - }); +
+
+
Nouveau sur Doct'ISEN?
+ + + +
+
+
`; + document.getElementById("user-login-button").addEventListener("click", function (event) { + event.preventDefault(); + let mail = document.getElementById("user-login-mail").value; + let password = document.getElementById("user-login-password").value; + let data = "mail=" + mail + "&password=" + password; + ajaxRequest('POST', "src/API/requests.php/api/login/patient", function (data) { + if (data.message === "Login success") { + sessionStorage.setItem("token", data.token); + displayHome("Vous êtes connecté"); + } else { + alert("Erreur lors de la connexion"); + } + }, data); + }); + document.getElementById("signup-user").addEventListener("click", function (event) { + displaySignUpUser(); + }); + } + else { + displayHome("Vous êtes déjà connecté"); + } } function displayLoginPraticien() { let container = document.getElementById("content"); - container.innerHTML = ""; - container.className = 'd-flex flex-column justify-content-center text-center w-100 login-ui'; - container.innerHTML = ` -
-
-
-
J'ai déjà un compte praticien Doct'ISEN
-
-
- - -
-
- - -
-
- -
-
-
-
-
-
Nouveau praticien sur Doct'ISEN?
- - - + if (sessionStorage.getItem("token") === null) { + container.innerHTML = ""; + container.className = 'd-flex flex-column justify-content-center text-center w-100 login-ui'; + container.innerHTML = ` +
+
+
+
J'ai déjà un compte praticien Doct'ISEN
+
+
+ + +
+
+ + +
+
+ +
+
-
-
`; - document.getElementById("praticien-login-button").addEventListener("click", function(event) { - event.preventDefault(); - let mail = document.getElementById("praticien-login-mail").value; - let password = document.getElementById("praticien-login-password").value; - let data = "mail=" + mail + "&password=" + password; - ajaxRequest('POST', "src/API/requests.php/api/login/medecin", function (data) { - if (data.message === "Login success") { - sessionStorage.setItem("token", data.token) - displayHome("Vous êtes connecté"); - } else { - alert("Erreur lors de la connexion"); - } - }, data); - }); - document.getElementById("signup-praticien").addEventListener("click", function(event) { - displaySignUpPraticien(); - }); +
+
+
Nouveau praticien sur Doct'ISEN?
+ + + +
+
+
`; + document.getElementById("praticien-login-button").addEventListener("click", function (event) { + event.preventDefault(); + let mail = document.getElementById("praticien-login-mail").value; + let password = document.getElementById("praticien-login-password").value; + let data = "mail=" + mail + "&password=" + password; + ajaxRequest('POST', "src/API/requests.php/api/login/medecin", function (data) { + if (data.message === "Login success") { + sessionStorage.setItem("token", data.token) + displayHome("Vous êtes connecté"); + } else { + alert("Erreur lors de la connexion"); + } + }, data); + }); + document.getElementById("signup-praticien").addEventListener("click", function (event) { + displaySignUpPraticien(); + }); + } + else { + displayHome("Vous êtes déjà connecté"); + } } function displaySignUpPraticien() { - let container = document.getElementById("content"); - container.innerHTML = ""; - container.className = 'd-flex flex-column justify-content-center text-center w-100 signup-ui-praticien'; - container.innerHTML = ` -
-
-
-
Inscription praticien sur Doct'ISEN
-
-
- - + if (sessionStorage.getItem("token") === null) { + let container = document.getElementById("content"); + container.innerHTML = ""; + container.className = 'd-flex flex-column justify-content-center text-center w-100 signup-ui-praticien'; + container.innerHTML = ` +
+
+
+
Inscription praticien sur Doct'ISEN
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
-
- - +
+
+
Déjà inscrit en tant que praticien ?
+ + + +
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
-
+
`; + document.getElementById("login-praticien2").addEventListener("click", function (event) { + displayLoginPraticien(); + }); + document.getElementById("praticien-signup-button").addEventListener("click", function (event) { + event.preventDefault(); + let name = document.getElementById("praticien-signup-name").value; + let surname = document.getElementById("praticien-signup-surname").value; + let mail = document.getElementById("praticien-signup-mail").value; + let mailConfirm = document.getElementById("praticien-signup-mail-confirm").value; + let password = document.getElementById("praticien-signup-password").value; + let passwordConfirm = document.getElementById("praticien-signup-password-confirm").value; + let phone = document.getElementById("praticien-signup-phone").value; + let specialty = document.getElementById("praticien-signup-specialty").value; + let postal = document.getElementById("praticien-signup-postal").value; + if (mail !== mailConfirm) { + alert("Les adresses mail ne correspondent pas"); + return; + } + if (password !== passwordConfirm) { + alert("Les mots de passe ne correspondent pas"); + return; + } + let data = "name=" + name + "&surname=" + surname + "&mail=" + mail + "&password=" + password + "&specialite=" + specialty + "&phone=" + phone + "&postal=" + postal; + ajaxRequest('PUT', "src/API/requests.php/api/signup/medecin", function (data) { + if (data.success) { + displayLoginPraticien(); + } else { + alert("Erreur lors de l'inscription"); + } + }, data); + }); + } + else { + displayHome("Vous êtes déjà connecté"); + } +} + +function displaySignUpUser() { + if (sessionStorage.getItem("token") === null) { + let container = document.getElementById("content"); + container.innerHTML = ""; + container.className = 'd-flex flex-column justify-content-center text-center w-100 signup-ui'; + container.innerHTML = ` +
+
+
+
Inscription sur Doct'ISEN
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
-
Déjà inscrit en tant que praticien ?
- +
Déjà inscrit ?
+
`; - document.getElementById("login-praticien2").addEventListener("click", function(event) { - displayLoginPraticien(); - }); - document.getElementById("praticien-signup-button").addEventListener("click", function(event) { - event.preventDefault(); - let name = document.getElementById("praticien-signup-name").value; - let surname = document.getElementById("praticien-signup-surname").value; - let mail = document.getElementById("praticien-signup-mail").value; - let mailConfirm = document.getElementById("praticien-signup-mail-confirm").value; - let password = document.getElementById("praticien-signup-password").value; - let passwordConfirm = document.getElementById("praticien-signup-password-confirm").value; - let phone = document.getElementById("praticien-signup-phone").value; - let specialty = document.getElementById("praticien-signup-specialty").value; - let postal = document.getElementById("praticien-signup-postal").value; - if (mail !== mailConfirm) { - alert("Les adresses mail ne correspondent pas"); - return; - } - if (password !== passwordConfirm) { - alert("Les mots de passe ne correspondent pas"); - return; - } - let data = "name=" + name + "&surname=" + surname + "&mail=" + mail + "&password=" + password + "&specialite=" + specialty + "&phone=" + phone + "&postal=" + postal; - ajaxRequest('PUT', "src/API/requests.php/api/signup/medecin", function (data) { - if (data.success) { - displayLoginPraticien(); - } else { - alert("Erreur lors de l'inscription"); + document.getElementById("login-user2").addEventListener("click", function (event) { + displayLoginUser(); + }); + document.getElementById("user-signup-button").addEventListener("click", function (event) { + event.preventDefault(); + let name = document.getElementById("user-signup-name").value; + let surname = document.getElementById("user-signup-surname").value; + let mail = document.getElementById("user-signup-mail").value; + let mailConfirm = document.getElementById("user-signup-mail-confirm").value; + let password = document.getElementById("user-signup-password").value; + let passwordConfirm = document.getElementById("user-signup-password-confirm").value; + let phone = document.getElementById("user-signup-phone").value; + if (mail !== mailConfirm) { + alert("Les adresses mail ne correspondent pas"); + return; } - }, data); - }); -} - -function displaySignUpUser() { - let container = document.getElementById("content"); - container.innerHTML = ""; - container.className = 'd-flex flex-column justify-content-center text-center w-100 signup-ui'; - container.innerHTML = ` -
-
-
-
Inscription sur Doct'ISEN
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
-
-
-
-
Déjà inscrit ?
- - - -
-
-
-
`; - document.getElementById("login-user2").addEventListener("click", function(event) { - displayLoginUser(); - }); - document.getElementById("user-signup-button").addEventListener("click", function(event) { - event.preventDefault(); - let name = document.getElementById("user-signup-name").value; - let surname = document.getElementById("user-signup-surname").value; - let mail = document.getElementById("user-signup-mail").value; - let mailConfirm = document.getElementById("user-signup-mail-confirm").value; - let password = document.getElementById("user-signup-password").value; - let passwordConfirm = document.getElementById("user-signup-password-confirm").value; - let phone = document.getElementById("user-signup-phone").value; - if (mail !== mailConfirm) { - alert("Les adresses mail ne correspondent pas"); - return; - } - if (password !== passwordConfirm) { - alert("Les mots de passe ne correspondent pas"); - return; - } - let data = "name=" + name + "&surname=" + surname + "&mail=" + mail + "&password=" + password + "&phone=" + phone; - ajaxRequest('PUT', "src/API/requests.php/api/signup/patient", function (data) { - if (data.success) { - displayLoginUser(); - } else { - alert("Erreur lors de l'inscription"); + if (password !== passwordConfirm) { + alert("Les mots de passe ne correspondent pas"); + return; } - }, data); - }); + let data = "name=" + name + "&surname=" + surname + "&mail=" + mail + "&password=" + password + "&phone=" + phone; + ajaxRequest('PUT', "src/API/requests.php/api/signup/patient", function (data) { + if (data.success) { + displayLoginUser(); + } else { + alert("Erreur lors de l'inscription"); + } + }, data); + }); + } + else { + displayHome("Vous êtes déjà connecté"); + } } function disconnect() { From 6c78f180751cc4fe4714db4aea16eff0a673cea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fouch=C3=A9?= Date: Sun, 14 Apr 2024 12:37:34 +0200 Subject: [PATCH 15/17] Fix UTF-8 encoding --- src/js/AJAX/lib.js | 3 +-- src/php/db/Login.php | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/js/AJAX/lib.js b/src/js/AJAX/lib.js index 87ed7dc..251ece4 100644 --- a/src/js/AJAX/lib.js +++ b/src/js/AJAX/lib.js @@ -1,7 +1,7 @@ console.log("lib.js loaded"); function TokenDecode(token){ - let decodedToken = atob(token); + let decodedToken = decodeURIComponent(atob(token).replace(/\s+/g, '').replace(/[0-9a-f]{2}/g, '%$&')); decodedToken = decodedToken.split(":"); return { type: decodedToken[0], @@ -12,5 +12,4 @@ function TokenDecode(token){ }; } - export {TokenDecode}; \ No newline at end of file diff --git a/src/php/db/Login.php b/src/php/db/Login.php index 9a44970..80a3b9f 100644 --- a/src/php/db/Login.php +++ b/src/php/db/Login.php @@ -108,7 +108,7 @@ class LoginPatient { $result = $query->fetch(PDO::FETCH_ASSOC); if(password_verify($password,$result['p_password'])){ - Response::HTTP200(['message' => 'Login success', 'token' => base64_encode("patient:".strval($result['p_id']).":".$result['p_name'].":".$result['p_surname'].":".$result['p_mail'])]); + Response::HTTP200(['message' => 'Login success', 'token' => base64_encode(bin2hex("patient:".strval($result['p_id']).":".$result['p_name'].":".$result['p_surname'].":".$result['p_mail']))]); } else { Response::HTTP401(['message' => 'Login failed', 'token' => 0]); } @@ -141,7 +141,7 @@ class LoginMedecin { $result = $query->fetch(PDO::FETCH_ASSOC); if(password_verify($password,$result['m_password'])){ - Response::HTTP200(['message' => 'Login success', 'token' => base64_encode("medecin:".strval($result['m_id']).":".$result['m_name'].":".$result['m_surname'].":".$result['m_mail'])]); + Response::HTTP200(['message' => 'Login success', 'token' => base64_encode(bin2hex("medecin:".strval($result['m_id']).":".$result['m_name'].":".$result['m_surname'].":".$result['m_mail']))]); } else { Response::HTTP401(['message' => 'Login failed', 'token' => 0]); } From 264562f17c09f14b2d70fba3e0ddbdc34c64b4c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Sun, 14 Apr 2024 12:38:43 +0200 Subject: [PATCH 16/17] Refactor code to be in multiple file instead of one big js file --- src/js/AJAX/index.js | 730 +--------------------------------------- src/js/AJAX/login.js | 473 ++++++++++++++++++++++++++ src/js/AJAX/search.js | 118 +++++++ src/js/AJAX/take-rdv.js | 150 +++++++++ 4 files changed, 743 insertions(+), 728 deletions(-) create mode 100644 src/js/AJAX/login.js create mode 100644 src/js/AJAX/search.js create mode 100644 src/js/AJAX/take-rdv.js diff --git a/src/js/AJAX/index.js b/src/js/AJAX/index.js index 5441907..bef543d 100644 --- a/src/js/AJAX/index.js +++ b/src/js/AJAX/index.js @@ -1,4 +1,5 @@ -import {TokenDecode} from "./lib.js"; +import {attachSearchEventListener} from "./search.js"; +import {attachLoginUserDisplayEventListener, attachLoginPraticienDisplayEventListener, disconnect, displayHome, displayHomeTopBar} from "./login.js"; console.log("index.js loaded"); @@ -10,733 +11,6 @@ document.addEventListener("DOMContentLoaded", function() { } }); -function displaySearchResults(data) { - let container = document.getElementById("content"); - container.innerHTML = ""; - let mainDiv = document.createElement("div"); - mainDiv.classList.add("d-flex", "flex-row", "flex-wrap", "mx-5", "gap-5", "justify-content-center"); - let count = 0; - data.forEach(function(element) { - count++; - let card = document.createElement("div"); - card.classList.add("card", "w-25"); - card.innerHTML = ` -
-
- doctor -
-
-
-
${element.m_surname} ${element.m_name}
-
${element.m_specialty}
-

Code Postal: ${element.m_postal}

- -
-
`; - mainDiv.appendChild(card); - }); - container.appendChild(mainDiv); - if(count === 0) { - mainDiv.innerHTML = "

Aucun résultats

"; - } - else { - let resultText = document.createElement("h1"); - resultText.textContent = count + " résultats"; - container.insertBefore(resultText, mainDiv); - attachRDVEventListener(); - } -} - -function displaySearchTopBar(){ - let topbar = document.getElementById("topbar"); - let searchbar = document.getElementById("searchbar"); - - let form = topbar.querySelector("form"); - if (form) { - topbar.removeChild(form); - } - - searchbar.innerHTML = ` -
- - - -
`; - - attachSearchEventListener(); -} - -function removeSearchTopBar(){ - let topbar = document.getElementById("topbar"); - topbar.innerHTML = ""; - topbar.innerHTML = ` - - `; -} - -function displayRDVForDate(data) { - let container = document.getElementById("rdv-list"); - container.innerHTML = ""; - let count = 0; - data.forEach(function(element) { - try{ - let card = document.createElement("div"); - card.classList.add("card"); - element.rdv_time = element.rdv_time.slice(0, 5); - card.innerHTML = ` -
-
${element.rdv_time}
-

Adresse: ${element.l_adress}
- Ville: ${element.l_city} ${element.l_postal}

- -
`; - container.appendChild(card); - count++; - } catch (e) { - //Do nothing - //console.error(e); - } - }); - if(count === 0) { - container.innerHTML = "

Aucun rendez-vous

"; - } - else { - let resultText = document.createElement("h1"); - resultText.textContent = count + " rendez-vous"; - container.insertBefore(resultText, container.firstChild); - attachPrendreRDVEventListener(); - } -} - -function displayCalendar(data) { - let container = document.getElementById("content"); - container.innerHTML = ""; - let mainDiv = document.createElement("div"); - mainDiv.classList.add("row"); - - // Colonne de gauche - let leftCol = document.createElement("div"); - leftCol.classList.add("col", "h-100", "border-dark", "border-3", "justify-content-center", "text-center", "ms-3"); - let leftDiv = document.createElement("div"); - leftDiv.classList.add("d-flex", "flex-column", "justify-content-center", "gap-6"); - - // Calendrier de sélection de date - let form = document.createElement("form"); - form.classList.add("mt-3"); - form.id = "date-selection-form"; - let label = document.createElement("label"); - label.setAttribute("for", "date"); - label.textContent = "Choisissez une date :"; - form.appendChild(label); - let input = document.createElement("input"); - input.setAttribute("type", "date"); - input.setAttribute("name", "start"); - input.setAttribute("id", "date"); - input.classList.add("mt-2", "form-control"); - form.appendChild(input); - let submit = document.createElement("input"); - submit.setAttribute("type", "submit"); - submit.setAttribute("value", "Valider"); - submit.classList.add("mt-2", "btn", "btn-outline-danger"); - form.appendChild(submit); - leftDiv.appendChild(form); - - // Carte du médecin - let medecinCard = document.createElement("div"); - medecinCard.classList.add("card", "mx-auto", "d-flex", "flex-row"); - medecinCard.innerHTML = ` -
-
- doctor -
-
-
-
${data[0].m_surname} ${data[0].m_name}
-
${data[0].m_specialty}
-
-
-
`; - leftDiv.appendChild(medecinCard); - - leftCol.appendChild(leftDiv); - mainDiv.appendChild(leftCol); - - // Colonne de droite - let rightCol = document.createElement("div"); - rightCol.classList.add("col-8", "h-100", "border-start", "border-dark", "border-3", "me-3"); - - // Liste des rendez-vous - let rdvList = document.createElement("div"); - rdvList.classList.add("mt-3", "d-flex", "flex-column", "gap-3"); - rdvList.id = "rdv-list"; - rightCol.appendChild(rdvList); - - mainDiv.appendChild(rightCol); - container.appendChild(mainDiv); - displayRDVForDate(data); - document.getElementById("date-selection-form").addEventListener("submit", function(event) { - event.preventDefault(); - let date = document.getElementById("date").value; - let id = data[0].m_id; // Assuming 'data' is accessible in this scope and contains the doctor's details - ajaxRequest('GET', "src/API/requests.php/api/rdv-date?date=" + date + "&id=" + id, function (data) { - displayRDVForDate(data); - }); - }); -} - -function displayAlert(text) { - let alert = document.getElementById("Alert"); - alert.innerHTML = ""; - alert.innerHTML = ` - `; - setTimeout(clearAlert, 5000); -} - -function clearAlert() { - let alert = document.getElementById("Alert"); - alert.innerHTML = ""; -} - -function displayHomeTopBar() { - let topbar = document.getElementById("topbar"); - topbar.innerHTML = ""; - if(sessionStorage.getItem("token") === null) { - topbar.innerHTML = ` -
- -

- Doct'ISEN -

-
-
-

-
-
- `; - attachLoginUserDisplayEventListener(); - attachLoginPraticienDisplayEventListener(); - } - else { - let token = sessionStorage.getItem("token"); - let user = TokenDecode(token); - const mailMD5 = CryptoJS.MD5(user.mail); - if(user.type === "patient") { - topbar.innerHTML = ` -
- -

- Doct'ISEN -

-
-
- avatar - - -
-
`; - attachDisconnectEventListener(); - } - else if (user.type === "medecin") { - topbar.innerHTML = ` -
- -

- Doct'ISEN -

-
-
- avatar - - -
-
`; - attachDisconnectEventListener(); - } - else { - topbar.innerHTML = ` -
-

Erreur

-
`; - } - } -} - -function displayHome(text) { - removeSearchTopBar(); - displayHomeTopBar(); - let container = document.getElementById("content"); - container.classList = ""; - container.innerHTML = ""; - container.innerHTML = ` -
-
- img_index -
-

Trouvez un rendez vous avec un medecin

-
- - - -
-
-
-
-
-
Information
-
Ligue contre le cancer
-

Mois sans tabac: c’est le moment d’arrêter !

-
-
-
-
-
Information
-
Pharmacie Sanchez
-

Le rôle du phramacien évolue: Venez nous voir.

-
-
-
-
-
Information
-
Doct’ISEN
-

Un empechement: Prevenez votre soignant.

-
-
-
-
-
-

Recherche de praticiens

-

Doct’ISEN, 33 QUATER Av. du Champ de Manœuvre, 44470 Carquefou

-

Conditions générales d'utilisation • Conditions d'utilisation du site Doct'ISEN • Politique relative à la protection des données personnelles • Politique en matière de cookies • Gestion des cookies et consentement • Règles de référencement • Mentions légales

-

Annuaire des médecins du CNOM • Annuaire des chirurgiens-dentistes de l'ONCD • Ordre National des Médecins • Ordre National des Chirurgiens-Dentistes

-
`; - attachSearchEventListener(); - attachLoginUserDisplayEventListener(); - if(text !== ""){ - displayAlert(text); - } -} - -function performSearch(event) { - event.preventDefault(); - let type = document.getElementById("nom").value; - let postal = document.getElementById("postal").value; - if (postal === "") { - if (type === "") { - alert("Veuillez remplir au moins un champ"); - return; - } else { - ajaxRequest('GET', "src/API/requests.php/api/search-type?type=" + type, function (data) { - displaySearchResults(data); - displaySearchTopBar(); - }) - } - } else if (type === "") { - ajaxRequest('GET', "src/API/requests.php/api/search-postal?postal=" + postal, function (data) { - displaySearchResults(data); - displaySearchTopBar(); - }); - } else { - ajaxRequest('GET', "src/API/requests.php/api/search?type=" + type + "&postal=" + postal, function (data) { - displaySearchResults(data); - displaySearchTopBar(); - }); - } -} - -function displayLoginUser() { - if (sessionStorage.getItem("token") === null) { - let container = document.getElementById("content"); - container.innerHTML = ""; - container.className = 'd-flex flex-column justify-content-center text-center w-100 login-ui'; - container.innerHTML = ` -
-
-
-
J'ai déjà un compte Doct'ISEN
-
-
- - -
-
- - -
-
- -
-
-
-
-
-
Nouveau sur Doct'ISEN?
- - - -
-
-
`; - document.getElementById("user-login-button").addEventListener("click", function (event) { - event.preventDefault(); - let mail = document.getElementById("user-login-mail").value; - let password = document.getElementById("user-login-password").value; - let data = "mail=" + mail + "&password=" + password; - ajaxRequest('POST', "src/API/requests.php/api/login/patient", function (data) { - if (data.message === "Login success") { - sessionStorage.setItem("token", data.token); - displayHome("Vous êtes connecté"); - } else { - alert("Erreur lors de la connexion"); - } - }, data); - }); - document.getElementById("signup-user").addEventListener("click", function (event) { - displaySignUpUser(); - }); - } - else { - displayHome("Vous êtes déjà connecté"); - } -} - -function displayLoginPraticien() { - let container = document.getElementById("content"); - if (sessionStorage.getItem("token") === null) { - container.innerHTML = ""; - container.className = 'd-flex flex-column justify-content-center text-center w-100 login-ui'; - container.innerHTML = ` -
-
-
-
J'ai déjà un compte praticien Doct'ISEN
-
-
- - -
-
- - -
-
- -
-
-
-
-
-
Nouveau praticien sur Doct'ISEN?
- - - -
-
-
`; - document.getElementById("praticien-login-button").addEventListener("click", function (event) { - event.preventDefault(); - let mail = document.getElementById("praticien-login-mail").value; - let password = document.getElementById("praticien-login-password").value; - let data = "mail=" + mail + "&password=" + password; - ajaxRequest('POST', "src/API/requests.php/api/login/medecin", function (data) { - if (data.message === "Login success") { - sessionStorage.setItem("token", data.token) - displayHome("Vous êtes connecté"); - } else { - alert("Erreur lors de la connexion"); - } - }, data); - }); - document.getElementById("signup-praticien").addEventListener("click", function (event) { - displaySignUpPraticien(); - }); - } - else { - displayHome("Vous êtes déjà connecté"); - } -} - -function displaySignUpPraticien() { - if (sessionStorage.getItem("token") === null) { - let container = document.getElementById("content"); - container.innerHTML = ""; - container.className = 'd-flex flex-column justify-content-center text-center w-100 signup-ui-praticien'; - container.innerHTML = ` -
-
-
-
Inscription praticien sur Doct'ISEN
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
-
-
-
-
Déjà inscrit en tant que praticien ?
- - - -
-
-
-
`; - document.getElementById("login-praticien2").addEventListener("click", function (event) { - displayLoginPraticien(); - }); - document.getElementById("praticien-signup-button").addEventListener("click", function (event) { - event.preventDefault(); - let name = document.getElementById("praticien-signup-name").value; - let surname = document.getElementById("praticien-signup-surname").value; - let mail = document.getElementById("praticien-signup-mail").value; - let mailConfirm = document.getElementById("praticien-signup-mail-confirm").value; - let password = document.getElementById("praticien-signup-password").value; - let passwordConfirm = document.getElementById("praticien-signup-password-confirm").value; - let phone = document.getElementById("praticien-signup-phone").value; - let specialty = document.getElementById("praticien-signup-specialty").value; - let postal = document.getElementById("praticien-signup-postal").value; - if (mail !== mailConfirm) { - alert("Les adresses mail ne correspondent pas"); - return; - } - if (password !== passwordConfirm) { - alert("Les mots de passe ne correspondent pas"); - return; - } - let data = "name=" + name + "&surname=" + surname + "&mail=" + mail + "&password=" + password + "&specialite=" + specialty + "&phone=" + phone + "&postal=" + postal; - ajaxRequest('PUT', "src/API/requests.php/api/signup/medecin", function (data) { - if (data.success) { - displayLoginPraticien(); - } else { - alert("Erreur lors de l'inscription"); - } - }, data); - }); - } - else { - displayHome("Vous êtes déjà connecté"); - } -} - -function displaySignUpUser() { - if (sessionStorage.getItem("token") === null) { - let container = document.getElementById("content"); - container.innerHTML = ""; - container.className = 'd-flex flex-column justify-content-center text-center w-100 signup-ui'; - container.innerHTML = ` -
-
-
-
Inscription sur Doct'ISEN
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
-
-
-
-
Déjà inscrit ?
- - - -
-
-
-
`; - document.getElementById("login-user2").addEventListener("click", function (event) { - displayLoginUser(); - }); - document.getElementById("user-signup-button").addEventListener("click", function (event) { - event.preventDefault(); - let name = document.getElementById("user-signup-name").value; - let surname = document.getElementById("user-signup-surname").value; - let mail = document.getElementById("user-signup-mail").value; - let mailConfirm = document.getElementById("user-signup-mail-confirm").value; - let password = document.getElementById("user-signup-password").value; - let passwordConfirm = document.getElementById("user-signup-password-confirm").value; - let phone = document.getElementById("user-signup-phone").value; - if (mail !== mailConfirm) { - alert("Les adresses mail ne correspondent pas"); - return; - } - if (password !== passwordConfirm) { - alert("Les mots de passe ne correspondent pas"); - return; - } - let data = "name=" + name + "&surname=" + surname + "&mail=" + mail + "&password=" + password + "&phone=" + phone; - ajaxRequest('PUT', "src/API/requests.php/api/signup/patient", function (data) { - if (data.success) { - displayLoginUser(); - } else { - alert("Erreur lors de l'inscription"); - } - }, data); - }); - } - else { - displayHome("Vous êtes déjà connecté"); - } -} - -function disconnect() { - sessionStorage.removeItem("token"); - displayHome("Vous êtes déconnecté"); -} - -function attachSearchEventListener() { - try{ - document.getElementById("recherche").addEventListener("click", function (event) { - performSearch(event); - }); - } - catch (e) { - //Do nothing - //console.error(e); - } -} - -function attachRDVEventListener() { - let buttons = document.querySelectorAll("button[id^='m-id-']"); - buttons.forEach(function (button) { - button.addEventListener("click", function (event) { - let id = event.target.id.split("-")[2] - let today = new Date(); - let date = today.getFullYear() + "-" + (today.getMonth() + 1).toString().padStart(2, "0") + "-" + today.getDate().toString().padStart(2, "0"); - ajaxRequest('GET', "src/API/requests.php/api/rdv-date?date=" + date + "&id=" + id, function (data) { - displayCalendar(data); - }); - }); - }); -} - -function attachPrendreRDVEventListener() { - let buttons = document.querySelectorAll("button[id^='rdv-id-']"); - buttons.forEach(function (button) { - button.addEventListener("click", function (event) { - if(sessionStorage.getItem("token") === null) { - displayHome("Vous devez être connecté pour prendre un rendez-vous"); - } - else{ - let RDVid = event.target.id.split("-")[2]; - let data = "rdv_id=" + RDVid + "&patient_id=" + 1; - ajaxRequest('PUT', "src/API/requests.php/api/rdv", function (returnData){ - if (returnData.success) { - displayHome("Rendez-vous pris avec succès"); - } else { - alert("Erreur lors de la prise de rendez-vous"); - } - }, data); - } - }); - }); -} - -function attachLoginUserDisplayEventListener() { - try { - document.getElementById("login-user").addEventListener("click", function (event) { - displayLoginUser(); - }); - } - catch (e) { - //Do nothing - //console.error(e); - } -} - -function attachLoginPraticienDisplayEventListener() { - try { - document.getElementById("login-praticien").addEventListener("click", function (event) { - displayLoginPraticien(); - }); - } - catch (e) { - //Do nothing - //console.error(e); - } -} - function attachReturnHomeEventListener() { try { document.getElementById("home").addEventListener("click", function (event) { diff --git a/src/js/AJAX/login.js b/src/js/AJAX/login.js new file mode 100644 index 0000000..3eff691 --- /dev/null +++ b/src/js/AJAX/login.js @@ -0,0 +1,473 @@ +import {TokenDecode} from "./lib"; + +console.log("login.js loaded"); +import {attachSearchEventListener, removeSearchTopBar} from "./search.js"; + +function displayLoginUser() { + if (sessionStorage.getItem("token") === null) { + let container = document.getElementById("content"); + container.innerHTML = ""; + container.className = 'd-flex flex-column justify-content-center text-center w-100 login-ui'; + container.innerHTML = ` +
+
+
+
J'ai déjà un compte Doct'ISEN
+
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
Nouveau sur Doct'ISEN?
+ + + +
+
+
`; + document.getElementById("user-login-button").addEventListener("click", function (event) { + event.preventDefault(); + let mail = document.getElementById("user-login-mail").value; + let password = document.getElementById("user-login-password").value; + let data = "mail=" + mail + "&password=" + password; + ajaxRequest('POST', "src/API/requests.php/api/login/patient", function (data) { + if (data.message === "Login success") { + sessionStorage.setItem("token", data.token); + displayHome("Vous êtes connecté"); + } else { + alert("Erreur lors de la connexion"); + } + }, data); + }); + document.getElementById("signup-user").addEventListener("click", function (event) { + displaySignUpUser(); + }); + } + else { + displayHome("Vous êtes déjà connecté"); + } +} + +function displayLoginPraticien() { + let container = document.getElementById("content"); + if (sessionStorage.getItem("token") === null) { + container.innerHTML = ""; + container.className = 'd-flex flex-column justify-content-center text-center w-100 login-ui'; + container.innerHTML = ` +
+
+
+
J'ai déjà un compte praticien Doct'ISEN
+
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
Nouveau praticien sur Doct'ISEN?
+ + + +
+
+
`; + document.getElementById("praticien-login-button").addEventListener("click", function (event) { + event.preventDefault(); + let mail = document.getElementById("praticien-login-mail").value; + let password = document.getElementById("praticien-login-password").value; + let data = "mail=" + mail + "&password=" + password; + ajaxRequest('POST', "src/API/requests.php/api/login/medecin", function (data) { + if (data.message === "Login success") { + sessionStorage.setItem("token", data.token) + displayHome("Vous êtes connecté"); + } else { + alert("Erreur lors de la connexion"); + } + }, data); + }); + document.getElementById("signup-praticien").addEventListener("click", function (event) { + displaySignUpPraticien(); + }); + } + else { + displayHome("Vous êtes déjà connecté"); + } +} + +function displaySignUpPraticien() { + if (sessionStorage.getItem("token") === null) { + let container = document.getElementById("content"); + container.innerHTML = ""; + container.className = 'd-flex flex-column justify-content-center text-center w-100 signup-ui-praticien'; + container.innerHTML = ` +
+
+
+
Inscription praticien sur Doct'ISEN
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
Déjà inscrit en tant que praticien ?
+ + + +
+
+
+
`; + document.getElementById("login-praticien2").addEventListener("click", function (event) { + displayLoginPraticien(); + }); + document.getElementById("praticien-signup-button").addEventListener("click", function (event) { + event.preventDefault(); + let name = document.getElementById("praticien-signup-name").value; + let surname = document.getElementById("praticien-signup-surname").value; + let mail = document.getElementById("praticien-signup-mail").value; + let mailConfirm = document.getElementById("praticien-signup-mail-confirm").value; + let password = document.getElementById("praticien-signup-password").value; + let passwordConfirm = document.getElementById("praticien-signup-password-confirm").value; + let phone = document.getElementById("praticien-signup-phone").value; + let specialty = document.getElementById("praticien-signup-specialty").value; + let postal = document.getElementById("praticien-signup-postal").value; + if (mail !== mailConfirm) { + alert("Les adresses mail ne correspondent pas"); + return; + } + if (password !== passwordConfirm) { + alert("Les mots de passe ne correspondent pas"); + return; + } + let data = "name=" + name + "&surname=" + surname + "&mail=" + mail + "&password=" + password + "&specialite=" + specialty + "&phone=" + phone + "&postal=" + postal; + ajaxRequest('PUT', "src/API/requests.php/api/signup/medecin", function (data) { + if (data.success) { + displayLoginPraticien(); + } else { + alert("Erreur lors de l'inscription"); + } + }, data); + }); + } + else { + displayHome("Vous êtes déjà connecté"); + } +} + +function displaySignUpUser() { + if (sessionStorage.getItem("token") === null) { + let container = document.getElementById("content"); + container.innerHTML = ""; + container.className = 'd-flex flex-column justify-content-center text-center w-100 signup-ui'; + container.innerHTML = ` +
+
+
+
Inscription sur Doct'ISEN
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
Déjà inscrit ?
+ + + +
+
+
+
`; + document.getElementById("login-user2").addEventListener("click", function (event) { + displayLoginUser(); + }); + document.getElementById("user-signup-button").addEventListener("click", function (event) { + event.preventDefault(); + let name = document.getElementById("user-signup-name").value; + let surname = document.getElementById("user-signup-surname").value; + let mail = document.getElementById("user-signup-mail").value; + let mailConfirm = document.getElementById("user-signup-mail-confirm").value; + let password = document.getElementById("user-signup-password").value; + let passwordConfirm = document.getElementById("user-signup-password-confirm").value; + let phone = document.getElementById("user-signup-phone").value; + if (mail !== mailConfirm) { + alert("Les adresses mail ne correspondent pas"); + return; + } + if (password !== passwordConfirm) { + alert("Les mots de passe ne correspondent pas"); + return; + } + let data = "name=" + name + "&surname=" + surname + "&mail=" + mail + "&password=" + password + "&phone=" + phone; + ajaxRequest('PUT', "src/API/requests.php/api/signup/patient", function (data) { + if (data.success) { + displayLoginUser(); + } else { + alert("Erreur lors de l'inscription"); + } + }, data); + }); + } + else { + displayHome("Vous êtes déjà connecté"); + } +} + +function disconnect() { + sessionStorage.removeItem("token"); + displayHome("Vous êtes déconnecté"); +} + +function attachLoginUserDisplayEventListener() { + try { + document.getElementById("login-user").addEventListener("click", function (event) { + displayLoginUser(); + }); + } + catch (e) { + //Do nothing + //console.error(e); + } +} + +function attachLoginPraticienDisplayEventListener() { + try { + document.getElementById("login-praticien").addEventListener("click", function (event) { + displayLoginPraticien(); + }); + } + catch (e) { + //Do nothing + //console.error(e); + } +} + +function displayHomeTopBar() { + let topbar = document.getElementById("topbar"); + topbar.innerHTML = ""; + if(sessionStorage.getItem("token") === null) { + topbar.innerHTML = ` +
+ +

+ Doct'ISEN +

+
+
+

+
+
+ `; + attachLoginUserDisplayEventListener(); + attachLoginPraticienDisplayEventListener(); + } + else { + let token = sessionStorage.getItem("token"); + let user = TokenDecode(token); + const mailMD5 = CryptoJS.MD5(user.mail); + if(user.type === "patient") { + topbar.innerHTML = ` +
+ +

+ Doct'ISEN +

+
+
+ avatar + + +
+
`; + attachDisconnectEventListener(); + } + else if (user.type === "medecin") { + topbar.innerHTML = ` +
+ +

+ Doct'ISEN +

+
+
+ avatar + + +
+
`; + attachDisconnectEventListener(); + } + else { + topbar.innerHTML = ` +
+

Erreur

+
`; + } + } +} + +function displayAlert(text) { + let alert = document.getElementById("Alert"); + alert.innerHTML = ""; + alert.innerHTML = ` + `; + setTimeout(clearAlert, 5000); +} + +function clearAlert() { + let alert = document.getElementById("Alert"); + alert.innerHTML = ""; +} + +function displayHome(text) { + removeSearchTopBar(); + displayHomeTopBar(); + let container = document.getElementById("content"); + container.classList = ""; + container.innerHTML = ""; + container.innerHTML = ` +
+
+ img_index +
+

Trouvez un rendez vous avec un medecin

+
+ + + +
+
+
+
+
+
Information
+
Ligue contre le cancer
+

Mois sans tabac: c’est le moment d’arrêter !

+
+
+
+
+
Information
+
Pharmacie Sanchez
+

Le rôle du phramacien évolue: Venez nous voir.

+
+
+
+
+
Information
+
Doct’ISEN
+

Un empechement: Prevenez votre soignant.

+
+
+
+
+
+

Recherche de praticiens

+

Doct’ISEN, 33 QUATER Av. du Champ de Manœuvre, 44470 Carquefou

+

Conditions générales d'utilisation • Conditions d'utilisation du site Doct'ISEN • Politique relative à la protection des données personnelles • Politique en matière de cookies • Gestion des cookies et consentement • Règles de référencement • Mentions légales

+

Annuaire des médecins du CNOM • Annuaire des chirurgiens-dentistes de l'ONCD • Ordre National des Médecins • Ordre National des Chirurgiens-Dentistes

+
`; + attachSearchEventListener(); + attachLoginUserDisplayEventListener(); + if(text !== ""){ + displayAlert(text); + } +} + +export {attachLoginUserDisplayEventListener, attachLoginPraticienDisplayEventListener, disconnect, displayHome, displayHomeTopBar}; \ No newline at end of file diff --git a/src/js/AJAX/search.js b/src/js/AJAX/search.js new file mode 100644 index 0000000..67e7316 --- /dev/null +++ b/src/js/AJAX/search.js @@ -0,0 +1,118 @@ +console.log("search.js loaded"); +import {attachRDVEventListener} from "./take-rdv.js"; + +function displaySearchResults(data) { + let container = document.getElementById("content"); + container.innerHTML = ""; + let mainDiv = document.createElement("div"); + mainDiv.classList.add("d-flex", "flex-row", "flex-wrap", "mx-5", "gap-5", "justify-content-center"); + let count = 0; + data.forEach(function(element) { + count++; + let card = document.createElement("div"); + card.classList.add("card", "w-25"); + card.innerHTML = ` +
+
+ doctor +
+
+
+
${element.m_surname} ${element.m_name}
+
${element.m_specialty}
+

Code Postal: ${element.m_postal}

+ +
+
`; + mainDiv.appendChild(card); + }); + container.appendChild(mainDiv); + if(count === 0) { + mainDiv.innerHTML = "

Aucun résultats

"; + } + else { + let resultText = document.createElement("h1"); + resultText.textContent = count + " résultats"; + container.insertBefore(resultText, mainDiv); + attachRDVEventListener(); + } +} + +function displaySearchTopBar(){ + let topbar = document.getElementById("topbar"); + let searchbar = document.getElementById("searchbar"); + + let form = topbar.querySelector("form"); + if (form) { + topbar.removeChild(form); + } + + searchbar.innerHTML = ` +
+ + + +
`; + + attachSearchEventListener(); +} + +function removeSearchTopBar(){ + let topbar = document.getElementById("topbar"); + topbar.innerHTML = ""; + topbar.innerHTML = ` + + `; +} + +function performSearch(event) { + event.preventDefault(); + let type = document.getElementById("nom").value; + let postal = document.getElementById("postal").value; + if (postal === "") { + if (type === "") { + alert("Veuillez remplir au moins un champ"); + return; + } else { + ajaxRequest('GET', "src/API/requests.php/api/search-type?type=" + type, function (data) { + displaySearchResults(data); + displaySearchTopBar(); + }) + } + } else if (type === "") { + ajaxRequest('GET', "src/API/requests.php/api/search-postal?postal=" + postal, function (data) { + displaySearchResults(data); + displaySearchTopBar(); + }); + } else { + ajaxRequest('GET', "src/API/requests.php/api/search?type=" + type + "&postal=" + postal, function (data) { + displaySearchResults(data); + displaySearchTopBar(); + }); + } +} + +function attachSearchEventListener() { + try{ + document.getElementById("recherche").addEventListener("click", function (event) { + performSearch(event); + }); + } + catch (e) { + //Do nothing + //console.error(e); + } +} + +export {removeSearchTopBar, attachSearchEventListener}; \ No newline at end of file diff --git a/src/js/AJAX/take-rdv.js b/src/js/AJAX/take-rdv.js new file mode 100644 index 0000000..526a22a --- /dev/null +++ b/src/js/AJAX/take-rdv.js @@ -0,0 +1,150 @@ +console.log("take-rdv.js loaded"); +import {displayHome} from "./login.js"; + +function displayRDVForDate(data) { + let container = document.getElementById("rdv-list"); + container.innerHTML = ""; + let count = 0; + data.forEach(function(element) { + try{ + let card = document.createElement("div"); + card.classList.add("card"); + element.rdv_time = element.rdv_time.slice(0, 5); + card.innerHTML = ` +
+
${element.rdv_time}
+

Adresse: ${element.l_adress}
+ Ville: ${element.l_city} ${element.l_postal}

+ +
`; + container.appendChild(card); + count++; + } catch (e) { + //Do nothing + //console.error(e); + } + }); + if(count === 0) { + container.innerHTML = "

Aucun rendez-vous

"; + } + else { + let resultText = document.createElement("h1"); + resultText.textContent = count + " rendez-vous"; + container.insertBefore(resultText, container.firstChild); + attachPrendreRDVEventListener(); + } +} + +function displayCalendar(data) { + let container = document.getElementById("content"); + container.innerHTML = ""; + let mainDiv = document.createElement("div"); + mainDiv.classList.add("row"); + + // Colonne de gauche + let leftCol = document.createElement("div"); + leftCol.classList.add("col", "h-100", "border-dark", "border-3", "justify-content-center", "text-center", "ms-3"); + let leftDiv = document.createElement("div"); + leftDiv.classList.add("d-flex", "flex-column", "justify-content-center", "gap-6"); + + // Calendrier de sélection de date + let form = document.createElement("form"); + form.classList.add("mt-3"); + form.id = "date-selection-form"; + let label = document.createElement("label"); + label.setAttribute("for", "date"); + label.textContent = "Choisissez une date :"; + form.appendChild(label); + let input = document.createElement("input"); + input.setAttribute("type", "date"); + input.setAttribute("name", "start"); + input.setAttribute("id", "date"); + input.classList.add("mt-2", "form-control"); + form.appendChild(input); + let submit = document.createElement("input"); + submit.setAttribute("type", "submit"); + submit.setAttribute("value", "Valider"); + submit.classList.add("mt-2", "btn", "btn-outline-danger"); + form.appendChild(submit); + leftDiv.appendChild(form); + + // Carte du médecin + let medecinCard = document.createElement("div"); + medecinCard.classList.add("card", "mx-auto", "d-flex", "flex-row"); + medecinCard.innerHTML = ` +
+
+ doctor +
+
+
+
${data[0].m_surname} ${data[0].m_name}
+
${data[0].m_specialty}
+
+
+
`; + leftDiv.appendChild(medecinCard); + + leftCol.appendChild(leftDiv); + mainDiv.appendChild(leftCol); + + // Colonne de droite + let rightCol = document.createElement("div"); + rightCol.classList.add("col-8", "h-100", "border-start", "border-dark", "border-3", "me-3"); + + // Liste des rendez-vous + let rdvList = document.createElement("div"); + rdvList.classList.add("mt-3", "d-flex", "flex-column", "gap-3"); + rdvList.id = "rdv-list"; + rightCol.appendChild(rdvList); + + mainDiv.appendChild(rightCol); + container.appendChild(mainDiv); + displayRDVForDate(data); + document.getElementById("date-selection-form").addEventListener("submit", function(event) { + event.preventDefault(); + let date = document.getElementById("date").value; + let id = data[0].m_id; // Assuming 'data' is accessible in this scope and contains the doctor's details + ajaxRequest('GET', "src/API/requests.php/api/rdv-date?date=" + date + "&id=" + id, function (data) { + displayRDVForDate(data); + }); + }); +} + +function attachRDVEventListener() { + let buttons = document.querySelectorAll("button[id^='m-id-']"); + buttons.forEach(function (button) { + button.addEventListener("click", function (event) { + let id = event.target.id.split("-")[2] + let today = new Date(); + let date = today.getFullYear() + "-" + (today.getMonth() + 1).toString().padStart(2, "0") + "-" + today.getDate().toString().padStart(2, "0"); + ajaxRequest('GET', "src/API/requests.php/api/rdv-date?date=" + date + "&id=" + id, function (data) { + displayCalendar(data); + }); + }); + }); +} + +function attachPrendreRDVEventListener() { + let buttons = document.querySelectorAll("button[id^='rdv-id-']"); + buttons.forEach(function (button) { + button.addEventListener("click", function (event) { + if(sessionStorage.getItem("token") === null) { + displayHome("Vous devez être connecté pour prendre un rendez-vous"); + } + else{ + let RDVid = event.target.id.split("-")[2]; + let data = "rdv_id=" + RDVid + "&patient_id=" + 1; + ajaxRequest('PUT', "src/API/requests.php/api/rdv", function (returnData){ + if (returnData.success) { + displayHome("Rendez-vous pris avec succès"); + } else { + alert("Erreur lors de la prise de rendez-vous"); + } + }, data); + } + }); + }); +} + +export {attachRDVEventListener}; \ No newline at end of file From 730bee47d451fb05c40b9cc935d125b4caf9e057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Sun, 14 Apr 2024 12:46:07 +0200 Subject: [PATCH 17/17] End of refactor --- src/js/AJAX/alert.js | 18 +++++ src/js/AJAX/home.js | 130 +++++++++++++++++++++++++++++++++++ src/js/AJAX/index.js | 13 +--- src/js/AJAX/login.js | 148 +++------------------------------------- src/js/AJAX/take-rdv.js | 2 +- 5 files changed, 160 insertions(+), 151 deletions(-) create mode 100644 src/js/AJAX/alert.js create mode 100644 src/js/AJAX/home.js diff --git a/src/js/AJAX/alert.js b/src/js/AJAX/alert.js new file mode 100644 index 0000000..c028fe0 --- /dev/null +++ b/src/js/AJAX/alert.js @@ -0,0 +1,18 @@ +console.log("alert.js loaded"); + +function displayAlert(text) { + let alert = document.getElementById("Alert"); + alert.innerHTML = ""; + alert.innerHTML = ` + `; + setTimeout(clearAlert, 5000); +} + +function clearAlert() { + let alert = document.getElementById("Alert"); + alert.innerHTML = ""; +} + +export {displayAlert}; \ No newline at end of file diff --git a/src/js/AJAX/home.js b/src/js/AJAX/home.js new file mode 100644 index 0000000..6053068 --- /dev/null +++ b/src/js/AJAX/home.js @@ -0,0 +1,130 @@ +import {TokenDecode} from "./lib.js"; +import {attachSearchEventListener, removeSearchTopBar} from "./search.js"; +import {displayAlert} from "./alert.js"; +import {attachLoginPraticienDisplayEventListener, attachLoginUserDisplayEventListener, attachDisconnectEventListener} from "./login.js"; +console.log("home.js loaded"); + +function displayHomeTopBar() { + let topbar = document.getElementById("topbar"); + topbar.innerHTML = ""; + if(sessionStorage.getItem("token") === null) { + topbar.innerHTML = ` +
+ +

+ Doct'ISEN +

+
+
+

+
+
+ `; + attachLoginUserDisplayEventListener(); + attachLoginPraticienDisplayEventListener(); + } + else { + let token = sessionStorage.getItem("token"); + let user = TokenDecode(token); + const mailMD5 = CryptoJS.MD5(user.mail); + if(user.type === "patient") { + topbar.innerHTML = ` +
+ +

+ Doct'ISEN +

+
+
+ avatar + + +
+
`; + attachDisconnectEventListener(); + } + else if (user.type === "medecin") { + topbar.innerHTML = ` +
+ +

+ Doct'ISEN +

+
+
+ avatar + + +
+
`; + attachDisconnectEventListener(); + } + else { + topbar.innerHTML = ` +
+

Erreur

+
`; + } + } +} + +function displayHome(text) { + removeSearchTopBar(); + displayHomeTopBar(); + let container = document.getElementById("content"); + container.classList = ""; + container.innerHTML = ""; + container.innerHTML = ` +
+
+ img_index +
+

Trouvez un rendez vous avec un medecin

+
+ + + +
+
+
+
+
+
Information
+
Ligue contre le cancer
+

Mois sans tabac: c’est le moment d’arrêter !

+
+
+
+
+
Information
+
Pharmacie Sanchez
+

Le rôle du phramacien évolue: Venez nous voir.

+
+
+
+
+
Information
+
Doct’ISEN
+

Un empechement: Prevenez votre soignant.

+
+
+
+
+
+

Recherche de praticiens

+

Doct’ISEN, 33 QUATER Av. du Champ de Manœuvre, 44470 Carquefou

+

Conditions générales d'utilisation • Conditions d'utilisation du site Doct'ISEN • Politique relative à la protection des données personnelles • Politique en matière de cookies • Gestion des cookies et consentement • Règles de référencement • Mentions légales

+

Annuaire des médecins du CNOM • Annuaire des chirurgiens-dentistes de l'ONCD • Ordre National des Médecins • Ordre National des Chirurgiens-Dentistes

+
`; + attachSearchEventListener(); + attachLoginUserDisplayEventListener(); + if(text !== ""){ + displayAlert(text); + } +} + +export {displayHome, displayHomeTopBar}; \ No newline at end of file diff --git a/src/js/AJAX/index.js b/src/js/AJAX/index.js index bef543d..4cf5b8b 100644 --- a/src/js/AJAX/index.js +++ b/src/js/AJAX/index.js @@ -1,5 +1,6 @@ import {attachSearchEventListener} from "./search.js"; -import {attachLoginUserDisplayEventListener, attachLoginPraticienDisplayEventListener, disconnect, displayHome, displayHomeTopBar} from "./login.js"; +import {attachLoginUserDisplayEventListener, attachLoginPraticienDisplayEventListener, attachDisconnectEventListener} from "./login.js"; +import {displayHome, displayHomeTopBar} from "./home.js"; console.log("index.js loaded"); @@ -23,16 +24,6 @@ function attachReturnHomeEventListener() { } } -function attachDisconnectEventListener() { - try { - document.getElementById("user-name-disconect").addEventListener("click", function (event) { - disconnect(); - }); - } catch (e) { - //Do nothing - } -} - //Yanis Part diff --git a/src/js/AJAX/login.js b/src/js/AJAX/login.js index 3eff691..8961dd0 100644 --- a/src/js/AJAX/login.js +++ b/src/js/AJAX/login.js @@ -1,7 +1,5 @@ -import {TokenDecode} from "./lib"; - +import {displayHome, displayHomeTopBar} from "./home.js"; console.log("login.js loaded"); -import {attachSearchEventListener, removeSearchTopBar} from "./search.js"; function displayLoginUser() { if (sessionStorage.getItem("token") === null) { @@ -332,142 +330,14 @@ function attachLoginPraticienDisplayEventListener() { } } -function displayHomeTopBar() { - let topbar = document.getElementById("topbar"); - topbar.innerHTML = ""; - if(sessionStorage.getItem("token") === null) { - topbar.innerHTML = ` -
- -

- Doct'ISEN -

-
-
-

-
-
- `; - attachLoginUserDisplayEventListener(); - attachLoginPraticienDisplayEventListener(); - } - else { - let token = sessionStorage.getItem("token"); - let user = TokenDecode(token); - const mailMD5 = CryptoJS.MD5(user.mail); - if(user.type === "patient") { - topbar.innerHTML = ` -
- -

- Doct'ISEN -

-
-
- avatar - - -
-
`; - attachDisconnectEventListener(); - } - else if (user.type === "medecin") { - topbar.innerHTML = ` -
- -

- Doct'ISEN -

-
-
- avatar - - -
-
`; - attachDisconnectEventListener(); - } - else { - topbar.innerHTML = ` -
-

Erreur

-
`; - } +function attachDisconnectEventListener() { + try { + document.getElementById("user-name-disconect").addEventListener("click", function (event) { + disconnect(); + }); + } catch (e) { + //Do nothing } } -function displayAlert(text) { - let alert = document.getElementById("Alert"); - alert.innerHTML = ""; - alert.innerHTML = ` - `; - setTimeout(clearAlert, 5000); -} - -function clearAlert() { - let alert = document.getElementById("Alert"); - alert.innerHTML = ""; -} - -function displayHome(text) { - removeSearchTopBar(); - displayHomeTopBar(); - let container = document.getElementById("content"); - container.classList = ""; - container.innerHTML = ""; - container.innerHTML = ` -
-
- img_index -
-

Trouvez un rendez vous avec un medecin

-
- - - -
-
-
-
-
-
Information
-
Ligue contre le cancer
-

Mois sans tabac: c’est le moment d’arrêter !

-
-
-
-
-
Information
-
Pharmacie Sanchez
-

Le rôle du phramacien évolue: Venez nous voir.

-
-
-
-
-
Information
-
Doct’ISEN
-

Un empechement: Prevenez votre soignant.

-
-
-
-
- `; - attachSearchEventListener(); - attachLoginUserDisplayEventListener(); - if(text !== ""){ - displayAlert(text); - } -} - -export {attachLoginUserDisplayEventListener, attachLoginPraticienDisplayEventListener, disconnect, displayHome, displayHomeTopBar}; \ No newline at end of file +export {attachLoginUserDisplayEventListener, attachLoginPraticienDisplayEventListener, disconnect, attachDisconnectEventListener}; \ No newline at end of file diff --git a/src/js/AJAX/take-rdv.js b/src/js/AJAX/take-rdv.js index 526a22a..46f8563 100644 --- a/src/js/AJAX/take-rdv.js +++ b/src/js/AJAX/take-rdv.js @@ -1,5 +1,5 @@ console.log("take-rdv.js loaded"); -import {displayHome} from "./login.js"; +import {displayHome} from "./home.js"; function displayRDVForDate(data) { let container = document.getElementById("rdv-list");