Nouvelle version, ne nécessitant que la saisie d'un pseudo (plus besoin de créer un compte)
This commit is contained in:
97
app.js
97
app.js
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user