const express = require('express'); const { register, login } = require('../controllers/authController'); const authMiddleware = require('../middleware/authMiddleware'); const adminMiddleware = require('../middleware/adminMiddleware'); const User = require('../models/User'); const router = express.Router(); // Registrierungsroute router.post('/register', register); // Loginroute router.post('/login', login); // Geschützte Route, die die Benutzerinformationen zurückgibt router.get('/me', authMiddleware, (req, res) => { res.status(200).json({ id: req.user.id, user: req.user.username, docAccess: req.user.docAccess, isAdmin: req.user.isAdmin, message: 'Benutzerinformationen abgerufen', }); }); // Eine geschützte Admin-Route router.get('/admin', authMiddleware, adminMiddleware, (req, res) => { res.status(200).json({ message: 'Willkommen, Admin!' }); }); // Admin-Route, die eine Liste aller Benutzer zurückgibt router.get('/users', authMiddleware, adminMiddleware, async (req, res) => { try { // Suche alle Benutzer und gib nur die Felder 'username', 'email' und 'docAccess' zurück const users = await User.find({}, 'username email docAccess'); res.status(200).json(users); } catch (error) { console.error(error); res.status(500).json({ message: 'Fehler beim Abrufen der Benutzerdaten' }); } }); router.put('/user/:id/docAccess', authMiddleware, adminMiddleware, async (req, res) => { const { id } = req.params; const { docAccess } = req.body; // Sicherheitsvalidierung: docAccess-Wert muss zwischen 0 und 4 liegen if (![0, 1, 2, 3, 4].includes(docAccess)) { return res.status(400).json({ message: 'Ungültiger docAccess-Wert' }); } try { const user = await User.findByIdAndUpdate( id, { docAccess }, { new: true, fields: 'username email docAccess' } // nur ausgewählte Felder zurückgeben ); if (!user) return res.status(404).json({ message: 'Benutzer nicht gefunden' }); res.status(200).json(user); } catch (error) { console.error(error); res.status(500).json({ message: 'Fehler beim Aktualisieren von docAccess' }); } }); router.delete('/user/:id', authMiddleware, adminMiddleware, async (req, res) => { const { id } = req.params; try { const user = await User.findByIdAndDelete(id); if (!user) return res.status(404).json({ message: 'Benutzer nicht gefunden' }); res.status(200).json({ message: 'Benutzer erfolgreich gelöscht' }); } catch (error) { console.error(error); res.status(500).json({ message: 'Fehler beim Löschen des Benutzers' }); } }); module.exports = router;