const bcrypt = require('bcryptjs'); const { User } = require('../models'); const jwt = require('jsonwebtoken'); exports.register = async (req, res) => { const { name, email, password } = req.body; if (!name || !email || !password) { return res.status(400).json({ message: 'Alle Felder sind erforderlich' }); } try { const hashedPassword = await bcrypt.hash(password, 10); const user = await User.create({ name, email, password: hashedPassword, active: true }); res.status(201).json({ message: 'Benutzer erfolgreich registriert', user }); } catch (error) { if (error.name === 'SequelizeUniqueConstraintError') { return res.status(400).json({ message: 'Email-Adresse bereits in Verwendung' }); } res.status(500).json({ message: 'Ein Fehler ist aufgetreten' }); } }; exports.login = async (req, res) => { const { email, password } = req.body; if (!email || !password) { return res.status(400).json({ message: 'Email und Passwort sind erforderlich' }); } try { const user = await User.findOne({ where: { email } }); if (!user) { return res.status(401).json({ message: 'Ungültige Anmeldedaten' }); } const validPassword = await bcrypt.compare(password, user.password); if (!validPassword) { return res.status(401).json({ message: 'Ungültige Anmeldedaten' }); } if (!user.active) { return res.status(403).json({ message: 'Benutzerkonto ist nicht aktiv' }); } const token = jwt.sign({ id: user.id, name: user.name, email: user.email }, 'zTxVgptmPl9!_dr%xxx9999(dd)', { expiresIn: '1h' }); res.status(200).json({ message: 'Login erfolgreich', token, 'user': user }); } catch (error) { console.log(error); res.status(500).json({ message: 'Ein Fehler ist aufgetreten' }); } };