Files
PantryHub/controllers/AuthController.js
T
2026-07-26 22:18:52 +02:00

165 lines
2.3 KiB
JavaScript

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();