Refaktoriere Controller-Methoden zur Benutzer-, Event- und Menü-Datenverwaltung, indem die Logik in separate Service-Klassen ausgelagert wird. Implementiere eine verbesserte Fehlerbehandlung und sichere Rückgaben. Füge eine neue Route zur Passwortänderung im Benutzer-Router hinzu.
This commit is contained in:
71
utils/ErrorHandler.js
Normal file
71
utils/ErrorHandler.js
Normal file
@@ -0,0 +1,71 @@
|
||||
class ErrorHandler {
|
||||
/**
|
||||
* Error in HTTP Response umwandeln
|
||||
*/
|
||||
handleError(error, res) {
|
||||
console.error('Error:', error);
|
||||
|
||||
// Validation Errors
|
||||
if (error.message.startsWith('VALIDATION_ERROR:')) {
|
||||
const message = error.message.replace('VALIDATION_ERROR: ', '');
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: message,
|
||||
type: 'VALIDATION_ERROR'
|
||||
});
|
||||
}
|
||||
|
||||
// Business Logic Errors
|
||||
switch (error.message) {
|
||||
case 'USER_NOT_FOUND':
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
message: 'Benutzer nicht gefunden',
|
||||
type: 'NOT_FOUND'
|
||||
});
|
||||
|
||||
case 'INVALID_CURRENT_PASSWORD':
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: 'Aktuelles Passwort ist falsch',
|
||||
type: 'INVALID_PASSWORD'
|
||||
});
|
||||
|
||||
case 'EMAIL_ALREADY_EXISTS':
|
||||
return res.status(409).json({
|
||||
success: false,
|
||||
message: 'E-Mail-Adresse bereits vorhanden',
|
||||
type: 'DUPLICATE_EMAIL'
|
||||
});
|
||||
|
||||
default:
|
||||
return res.status(500).json({
|
||||
success: false,
|
||||
message: 'Ein interner Fehler ist aufgetreten',
|
||||
type: 'INTERNAL_ERROR'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Success Response erstellen
|
||||
*/
|
||||
successResponse(res, data, message = 'Erfolgreich', statusCode = 200) {
|
||||
return res.status(statusCode).json({
|
||||
success: true,
|
||||
message: message,
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Async Error Wrapper für Controller
|
||||
*/
|
||||
asyncHandler(fn) {
|
||||
return (req, res, next) => {
|
||||
Promise.resolve(fn(req, res, next)).catch(next);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = new ErrorHandler();
|
||||
Reference in New Issue
Block a user