import { Router } from 'express'; import bcrypt from 'bcryptjs'; import jwt from 'jsonwebtoken'; import { prisma } from '../prisma.js'; import { JWT_SECRET } from '../auth.js'; export const authRouter = Router(); authRouter.post('/login', async (req, res) => { const { username, password } = req.body ?? {}; if (!username || !password) { res.status(400).json({ error: 'Benutzername und Passwort erforderlich.' }); return; } if (!JWT_SECRET) { res.status(500).json({ error: 'JWT_SECRET ist serverseitig nicht konfiguriert.' }); return; } const user = await prisma.user.findUnique({ where: { username } }); if (!user) { res.status(401).json({ error: 'Benutzername oder Passwort falsch.' }); return; } const ok = await bcrypt.compare(password, user.passwordHash); if (!ok) { res.status(401).json({ error: 'Benutzername oder Passwort falsch.' }); return; } const token = jwt.sign( { username: user.username, name: user.name ?? user.username }, JWT_SECRET, { algorithm: 'HS256', expiresIn: '30d' } ); res.json({ token, name: user.name ?? user.username }); });