webinterface/server/routes/authRoutes.js

57 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

2024-10-29 21:09:13 +01:00
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,
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 {
2024-11-18 17:04:10 +01:00
// Suche alle Benutzer und gib nur die Felder 'username', 'email' und 'isAdmin' zurück
const users = await User.find({}, 'username email isAdmin');
2024-10-29 21:09:13 +01:00
res.status(200).json(users);
} catch (error) {
console.error(error);
res.status(500).json({ message: 'Fehler beim Abrufen der Benutzerdaten' });
}
});
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;