43 lines
1.8 KiB
JavaScript
43 lines
1.8 KiB
JavaScript
const UserService = require('../services/UserService');
|
|
const UserValidator = require('../validators/UserValidator');
|
|
const ErrorHandler = require('../utils/ErrorHandler');
|
|
|
|
exports.getAllUsers = ErrorHandler.asyncHandler(async (req, res) => {
|
|
const users = await UserService.getAllUsers();
|
|
ErrorHandler.successResponse(res, users, 'Benutzer erfolgreich abgerufen');
|
|
});
|
|
|
|
exports.getUserById = ErrorHandler.asyncHandler(async (req, res) => {
|
|
UserValidator.validateId(req.params.id);
|
|
const user = await UserService.getUserById(req.params.id);
|
|
ErrorHandler.successResponse(res, user, 'Benutzer erfolgreich abgerufen');
|
|
});
|
|
|
|
exports.createUser = ErrorHandler.asyncHandler(async (req, res) => {
|
|
UserValidator.validateCreateUser(req.body);
|
|
const user = await UserService.createUser(req.body);
|
|
ErrorHandler.successResponse(res, user, 'Benutzer erfolgreich erstellt', 201);
|
|
});
|
|
|
|
exports.updateUser = ErrorHandler.asyncHandler(async (req, res) => {
|
|
UserValidator.validateId(req.params.id);
|
|
UserValidator.validateUpdateUser(req.body);
|
|
const user = await UserService.updateUser(req.params.id, req.body);
|
|
ErrorHandler.successResponse(res, user, 'Benutzer erfolgreich aktualisiert');
|
|
});
|
|
|
|
exports.deleteUser = ErrorHandler.asyncHandler(async (req, res) => {
|
|
UserValidator.validateId(req.params.id);
|
|
await UserService.deleteUser(req.params.id);
|
|
ErrorHandler.successResponse(res, null, 'Benutzer erfolgreich gelöscht');
|
|
});
|
|
|
|
// Neue Route für Passwort-Änderung
|
|
exports.changePassword = ErrorHandler.asyncHandler(async (req, res) => {
|
|
const { currentPassword, newPassword } = req.body;
|
|
UserValidator.validateId(req.params.id);
|
|
UserValidator.validatePasswordChange(currentPassword, newPassword);
|
|
await UserService.changePassword(req.params.id, currentPassword, newPassword);
|
|
ErrorHandler.successResponse(res, null, 'Passwort erfolgreich geändert');
|
|
});
|