Nouvelle version, ne nécessitant que la saisie d'un pseudo (plus besoin de créer un compte)

This commit is contained in:
2023-11-17 15:30:14 +01:00
parent e844fbf3b0
commit b40e1ac934
138 changed files with 3926 additions and 8660 deletions

97
app.js
View File

@@ -7,6 +7,7 @@ const publicDir = path.join(__dirname, './public')
const bcrypt = require("bcryptjs")
const bodyParser = require('body-parser')
const dateFormat = require('dateformat');
const uuid = require('uuid');
/* Connexion à la BDD MySQL */
@@ -53,17 +54,34 @@ function comparePassword(plaintextPassword, hash) {
})
}
function rollback(session, user) {
db.query('DELETE from participation WHERE user=? AND session=?', [user, session], (error, result) => {
if(error){ console.log(error) }
if(result && result.affectedRows > 0) {
db.query('DELETE from user WHERE id=?', [user], (error, result) => {
if(error){ console.log(error) }
if(result && result.affectedRows > 0) {
db.query('UPDATE session SET nb_of_participants = nb_of_participants - 1 WHERE ID=?', [session], (error, result) => {
if(error){ console.log(error) }
if(result && result.affectedRows > 0) {
console.log('Rollback effectué');
}
})
}
})
}
})
}
// ******************************************* Arrivée sur la page d'accueil *******************************************
app.get("/", (req, res) => {
let today = dateFormat(new Date(), "yyyymmdd");
// On récupère la liste des sessions actives
db.query('SELECT ID, topic, DATE_FORMAT(scheduled_on, "%d/%m/%Y") as "date", DATE_FORMAT(scheduled_on, "%Hh%i") as "heure" FROM session WHERE DATE_FORMAT(scheduled_on, "%Y%m%d") >= ?', [today], async (error, result) => {
if(error){
console.log(error);
}
if (result.length == 0) {
// On récupère la liste des sessions actives et pour lesquelles il reste de la place
db.query('SELECT ID, topic, DATE_FORMAT(scheduled_on, "%d/%m/%Y") as "date", DATE_FORMAT(scheduled_on, "%Hh%i") as "heure", IF(nb_of_attended-nb_of_participants=0, true, false) as "maxAtteint" FROM session WHERE DATE_FORMAT(scheduled_on, "%Y%m%d") >= ?', [today], async (error, result) => {
if(error){ console.log(error); }
if (result && result.length == 0) {
res.render("login-session", { error: 'Aucune session disponible' });
}
else {
@@ -132,7 +150,57 @@ app.post("/auth/register", (req, res) => {
}
})
// ******************************************* Connexion sur le compte utilisateur *******************************************
// ******************************************* Connexion sur le compte utilisateur (sans sécurité) *******************************************
app.post("/auth/check-login-no-security", (req, res) => {
let newUser;
const { nickname, role, session } = req.body;
db.query('SELECT ID FROM user WHERE UPPER(nickname)=? AND session=?', [nickname.toUpperCase(), session], (error, result) => {
if(error){ console.log(error) }
if(result && result.length > 0) {
return res.render('login', {
error: 'Identifiant déjà utilisé : veuillez en choisir un autre',
session: session,
role: role
});
}
else {
// On crée l'utilisateur pour traçabilité
var newUser = uuid.v4();
db.query('INSERT INTO user SET?', {id: newUser, nickname : nickname, session: session}, (error, result) => {
if(error){ console.log(error); rollback(session, newUser); }
if(result && result.affectedRows > 0) {
// On trace la connexion de l'utilisateur à la session...
db.query('INSERT INTO participation (user, session, role_during_session) VALUES (?,?,?)', [newUser, session, role], function (error, result) {
if(error){ console.log(error); rollback(session, newUser);}
if(result.affectedRows > 0) {
console.log("1 record inserted");
}
});
// ... et on incrémente le nb de participants.
db.query('UPDATE session SET nb_of_participants = nb_of_participants + 1 WHERE ID=?', [session], function (error, result) {
if (error) { console.log(error); rollback(session, newUser); }
console.log("1 record updated");
});
}
if (role == 'A') {
res.redirect('https://slave.thecoredev.fr');
}
else {
res.redirect('https://slave.thecoredev.fr');
}
});
}
});
});
// ******************************************* Connexion sur le compte utilisateur (mode sécurisé) *******************************************
app.post("/auth/check-login", (req, res) => {
var userId,
passwordStocke;
@@ -141,8 +209,7 @@ app.post("/auth/check-login", (req, res) => {
if (email == '' && nickname == '') {
return res.render('login', {
error: 'Veuillez saisir soit votre pseudo, soit une adresse email',
"session": session,
"role": role
session: session, role: role
})
}
@@ -161,8 +228,8 @@ app.post("/auth/check-login", (req, res) => {
if( result.length == 0 ) {
return res.render('login', {
error: 'Utilisateur inconnu : veuillez créer votre compte via le lien ci-dessus',
"session": session,
"role": role
session: session,
role: role
})
}
@@ -209,10 +276,10 @@ app.post("/auth/check-login", (req, res) => {
app.post("/auth/check-session", (req, res) => {
const { session, session_password, role } = req.body
let listeSessions;
let listeSessions;
let today = dateFormat(new Date(), "yyyymmdd");
db.query('SELECT ID, topic, DATE_FORMAT(scheduled_on, "%d/%m/%Y") as "date", DATE_FORMAT(scheduled_on, "%Hh%i") as "heure" FROM session WHERE DATE_FORMAT(scheduled_on, "%Y%m%d") >= ?', [today], async (error, result) => {
db.query('SELECT ID, topic, DATE_FORMAT(scheduled_on, "%d/%m/%Y") as "date", DATE_FORMAT(scheduled_on, "%Hh%i") as "heure", IF(nb_of_attended-nb_of_participants=0, true, false) as "maxAtteint" FROM session WHERE DATE_FORMAT(scheduled_on, "%Y%m%d") >= ?', [today], async (error, result) => {
if(error){
console.log(error);
}