Versie module 1 van 26-7
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
const bcrypt = require("bcrypt");
|
||||
|
||||
const db = require("../config/database");
|
||||
const HouseholdService = require("../services/HouseholdService");
|
||||
|
||||
|
||||
|
||||
class AuthController {
|
||||
|
||||
|
||||
registerForm(req, res) {
|
||||
|
||||
res.render("auth/register", {
|
||||
title: "Registreren"
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
async register(req, res) {
|
||||
|
||||
const {
|
||||
name,
|
||||
email,
|
||||
password
|
||||
} = req.body;
|
||||
|
||||
|
||||
const existingUser = db.prepare(
|
||||
"SELECT id FROM users WHERE email = ?"
|
||||
).get(email);
|
||||
|
||||
|
||||
if (existingUser) {
|
||||
|
||||
req.flash(
|
||||
"error",
|
||||
"E-mailadres bestaat al"
|
||||
);
|
||||
|
||||
return res.redirect("/register");
|
||||
|
||||
}
|
||||
|
||||
|
||||
const passwordHash = await bcrypt.hash(
|
||||
password,
|
||||
12
|
||||
);
|
||||
|
||||
|
||||
const result = db.prepare(`
|
||||
|
||||
INSERT INTO users
|
||||
(
|
||||
name,
|
||||
email,
|
||||
password
|
||||
)
|
||||
|
||||
VALUES (?, ?, ?)
|
||||
|
||||
`).run(
|
||||
name,
|
||||
email,
|
||||
passwordHash
|
||||
);
|
||||
|
||||
|
||||
const userId = result.lastInsertRowid;
|
||||
|
||||
|
||||
HouseholdService.createForUser(
|
||||
userId,
|
||||
`${name} huishouden`
|
||||
);
|
||||
|
||||
|
||||
req.session.userId = userId;
|
||||
|
||||
|
||||
res.redirect("/");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
loginForm(req, res) {
|
||||
|
||||
res.render("auth/login", {
|
||||
title: "Inloggen"
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
async login(req, res) {
|
||||
|
||||
const {
|
||||
email,
|
||||
password
|
||||
} = req.body;
|
||||
|
||||
|
||||
const user = db.prepare(
|
||||
"SELECT * FROM users WHERE email = ?"
|
||||
).get(email);
|
||||
|
||||
|
||||
|
||||
if (!user) {
|
||||
|
||||
req.flash(
|
||||
"error",
|
||||
"Ongeldige gegevens"
|
||||
);
|
||||
|
||||
return res.redirect("/login");
|
||||
|
||||
}
|
||||
|
||||
|
||||
const valid = await bcrypt.compare(
|
||||
password,
|
||||
user.password
|
||||
);
|
||||
|
||||
|
||||
if (!valid) {
|
||||
|
||||
req.flash(
|
||||
"error",
|
||||
"Ongeldige gegevens"
|
||||
);
|
||||
|
||||
return res.redirect("/login");
|
||||
|
||||
}
|
||||
|
||||
|
||||
req.session.userId = user.id;
|
||||
|
||||
|
||||
res.redirect("/");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
logout(req, res) {
|
||||
|
||||
req.session.destroy(() => {
|
||||
|
||||
res.redirect("/login");
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
module.exports = new AuthController();
|
||||
Reference in New Issue
Block a user