Merge pull request #20 from BreizhHardware/felix

Login and signup using ajax
This commit is contained in:
Félix MARQUET
2024-04-13 19:05:40 +02:00
committed by GitHub
6 changed files with 80 additions and 33 deletions

View File

@@ -9,7 +9,7 @@
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<script src="src/js/AJAX/utils.js" defer></script>
<script src="src/js/AJAX/index.js" defer></script>
<script src="src/js/AJAX/index.js" defer type="module"></script>
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
</head>
<body>

View File

@@ -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);
});

View File

@@ -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;

View File

@@ -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 = `
<div class="h-100 d-flex flex-column gap-0 justify-content-center text-center w-50 mx-6">
<div class="h-100 d-flex flex-column gap-0 justify-content-center text-center w-50 mx-25">
<div class="p-3 m-0 border-0 bd-example m-0 border-0" id="login-part">
<div class="text-center align-content-center">
<h5 class="text-center fw-bold">J'ai déjà un compte Doct'ISEN</h5>
@@ -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 = `
<div class="h-100 d-flex flex-column gap-0 justify-content-center text-center w-50 mx-6">
<div class="h-100 d-flex flex-column gap-0 justify-content-center text-center w-50 mx-25">
<div class="p-3 m-0 border-0 bd-example m-0 border-0" id="login-part">
<div class="text-center align-content-center">
<h5 class="text-center fw-bold">J'ai déjà un compte praticien Doct'ISEN</h5>
@@ -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 = `
<div class="h-100 d-flex flex-column gap-0 justify-content-center text-center w-50 mx-6" style="margin-top: -15%;">
<div class="h-100 d-flex flex-column gap-0 justify-content-center text-center w-50 mx-25" style="margin-top: -15%;">
<div class="p-3 m-0 border-0 bd-example border-0" id="signup-sign-part">
<div class="text-center align-content-center">
<h5 class="text-center fw-bold">Inscription praticien sur Doct'ISEN</h5>
@@ -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 = `
<div class="h-100 d-flex flex-column gap-0 justify-content-center text-center w-50 mx-6" style="margin-top: -15%;">
<div class="h-100 d-flex flex-column gap-0 justify-content-center text-center w-50 mx-25" style="margin-top: -15%;">
<div class="p-3 m-0 border-0 bd-example border-0" id="signup-sign-part">
<div class="text-center align-content-center">
<h5 class="text-center fw-bold">Inscription sur Doct'ISEN</h5>
@@ -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");
}

View File

@@ -11,4 +11,6 @@ function TokenDecode(token){
mail: decodedToken[4]
};
}
}
export {TokenDecode};

View File

@@ -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]);
}
}
}