Initial commit
This commit is contained in:
104
app.js
Normal file
104
app.js
Normal file
@@ -0,0 +1,104 @@
|
||||
const express = require('express')
|
||||
const mysql = require("mysql")
|
||||
const dotenv = require('dotenv')
|
||||
const app = express()
|
||||
const path = require("path")
|
||||
const publicDir = path.join(__dirname, './public')
|
||||
const bcrypt = require("bcryptjs")
|
||||
|
||||
/* Connexion à la BDD MySQL */
|
||||
dotenv.config({ path: './.env'})
|
||||
const db = mysql.createConnection({
|
||||
host: process.env.DATABASE_HOST,
|
||||
port: process.env.DATABASE_PORT,
|
||||
user: process.env.DATABASE_USER,
|
||||
password: process.env.DATABASE_PASSWORD,
|
||||
database: process.env.DATABASE
|
||||
})
|
||||
db.connect((error) => {
|
||||
if(error) {
|
||||
console.log(error)
|
||||
} else {
|
||||
console.log("MySQL connected!")
|
||||
}
|
||||
})
|
||||
|
||||
app.set('view engine', 'hbs')
|
||||
app.use(express.static(publicDir))
|
||||
/* Pour utiliser le bootstrap local */
|
||||
app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css'));
|
||||
|
||||
/* configure the Express.js server to receive the form values as JSON */
|
||||
app.use(express.urlencoded({extended: 'false'}))
|
||||
app.use(express.json())
|
||||
|
||||
|
||||
app.get("/", (req, res) => { res.render("login") })
|
||||
app.get("/register", (req, res) => { res.render("register") })
|
||||
app.get("/index", (req, res) => { res.render("index") })
|
||||
|
||||
|
||||
app.post("/auth/register", (req, res) => {
|
||||
const { gender, name, firstname, dob, title, email, password, password_confirm } = req.body
|
||||
|
||||
// db.query() code goes here
|
||||
db.query('SELECT email FROM user WHERE email = ?', [email], async (error, result) => {
|
||||
if(error){
|
||||
console.log(error)
|
||||
}
|
||||
if( result.length > 0 ) {
|
||||
return res.render('register', {
|
||||
error: 'Adresse email déjà utilisée : choisissez-en une autre ou bien cliquez sur le lien ci-dessus pour vous connecter'
|
||||
})
|
||||
} else if(password !== password_confirm) {
|
||||
return res.render('register', {
|
||||
error: 'Vos mots de passe ne correspondent pas'
|
||||
})
|
||||
}
|
||||
|
||||
let hashedPassword = await bcrypt.hash(password, 8)
|
||||
db.query('INSERT INTO user SET?', {gender : (gender != undefined ? gender : ""), firstname: firstname, name: name, date_of_birth: dob, title: title, email: email, password: hashedPassword}, (err, result) => {
|
||||
if(error) {
|
||||
console.log(error)
|
||||
} else {
|
||||
return res.render('index')
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
app.post("/auth/log-control", (req, res) => {
|
||||
const { email, password } = req.body
|
||||
|
||||
// db.query() code goes here
|
||||
db.query('SELECT password FROM user WHERE email = ?', [email], async (error, result) => {
|
||||
if(error){
|
||||
console.log(error)
|
||||
}
|
||||
|
||||
if( result.length == 0 ) {
|
||||
return res.render('login', {
|
||||
error: 'Utilisateur inconnu : veuillez créer votre compte via le lien ci-dessus'
|
||||
})
|
||||
}
|
||||
|
||||
bcrypt.compare(password, result[0].password, function(err, result) {
|
||||
if(result) {
|
||||
return res.render('index')
|
||||
}
|
||||
else {
|
||||
return res.render('login', {
|
||||
error: 'Mot de passe incorrect : corriger votre saisie'
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
app.listen(5005, ()=> {
|
||||
console.log("server started on port 5005")
|
||||
})
|
||||
Reference in New Issue
Block a user