new features
This commit is contained in:
@@ -325,4 +325,34 @@ router.delete(
|
||||
}
|
||||
);
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// DELETE /api/admin/debug/user/:userId/profile — delete mitglieder_profile row
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
router.delete(
|
||||
'/debug/user/:userId/profile',
|
||||
authenticate,
|
||||
requirePermission('admin:write'),
|
||||
async (req: Request, res: Response): Promise<void> => {
|
||||
try {
|
||||
const userId = req.params.userId;
|
||||
const result = await pool.query(
|
||||
'DELETE FROM mitglieder_profile WHERE user_id = $1',
|
||||
[userId]
|
||||
);
|
||||
|
||||
if ((result.rowCount ?? 0) === 0) {
|
||||
res.status(404).json({ success: false, message: 'Kein Profil fuer diesen Benutzer gefunden' });
|
||||
return;
|
||||
}
|
||||
|
||||
logger.info('Admin deleted user profile data', { userId, admin: req.user?.id });
|
||||
res.json({ success: true, message: 'Profildaten geloescht' });
|
||||
} catch (error) {
|
||||
logger.error('Failed to delete user profile', { error, userId: req.params.userId });
|
||||
res.status(500).json({ success: false, message: 'Fehler beim Loeschen der Profildaten' });
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
export default router;
|
||||
|
||||
@@ -23,6 +23,7 @@ router.post('/', authenticate, requirePermission('ausruestung:create')
|
||||
router.patch('/:id', authenticate, requirePermission('ausruestung:create'), equipmentController.updateEquipment.bind(equipmentController));
|
||||
router.patch('/:id/status', authenticate, requirePermission('ausruestung:create'), equipmentController.updateStatus.bind(equipmentController));
|
||||
router.post('/:id/wartung', authenticate, requirePermission('ausruestung:manage_maintenance'), equipmentController.addWartung.bind(equipmentController));
|
||||
router.patch('/:id/wartung/:wartungId', authenticate, requirePermission('ausruestung:manage_maintenance'), equipmentController.updateWartung.bind(equipmentController));
|
||||
router.post('/wartung/:wartungId/upload', authenticate, requirePermission('ausruestung:manage_maintenance'), uploadWartung.single('datei'), equipmentController.uploadWartungFile.bind(equipmentController));
|
||||
|
||||
// ── Delete — admin only ──────────────────────────────────────────────────────
|
||||
|
||||
45
backend/src/routes/issue.routes.ts
Normal file
45
backend/src/routes/issue.routes.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { Router } from 'express';
|
||||
import issueController from '../controllers/issue.controller';
|
||||
import { authenticate } from '../middleware/auth.middleware';
|
||||
import { requirePermission } from '../middleware/rbac.middleware';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.get(
|
||||
'/',
|
||||
authenticate,
|
||||
issueController.getIssues.bind(issueController)
|
||||
);
|
||||
|
||||
router.post(
|
||||
'/',
|
||||
authenticate,
|
||||
requirePermission('issues:create'),
|
||||
issueController.createIssue.bind(issueController)
|
||||
);
|
||||
|
||||
router.get(
|
||||
'/:id/comments',
|
||||
authenticate,
|
||||
issueController.getComments.bind(issueController)
|
||||
);
|
||||
|
||||
router.post(
|
||||
'/:id/comments',
|
||||
authenticate,
|
||||
issueController.addComment.bind(issueController)
|
||||
);
|
||||
|
||||
router.patch(
|
||||
'/:id',
|
||||
authenticate,
|
||||
issueController.updateIssue.bind(issueController)
|
||||
);
|
||||
|
||||
router.delete(
|
||||
'/:id',
|
||||
authenticate,
|
||||
issueController.deleteIssue.bind(issueController)
|
||||
);
|
||||
|
||||
export default router;
|
||||
@@ -17,6 +17,12 @@ router.delete('/items/:id', authenticate, requirePermission('shop:manage_catalog
|
||||
|
||||
router.get('/categories', authenticate, requirePermission('shop:view'), shopController.getCategories.bind(shopController));
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Overview
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
router.get('/overview', authenticate, requirePermission('shop:view_overview'), shopController.getOverview.bind(shopController));
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Requests
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
@@ -26,6 +26,7 @@ router.delete('/:id', authenticate, requirePermission('fahrzeuge:delete'), vehic
|
||||
|
||||
router.patch('/:id/status', authenticate, requirePermission('fahrzeuge:change_status'), vehicleController.updateVehicleStatus.bind(vehicleController));
|
||||
router.post('/:id/wartung', authenticate, requirePermission('fahrzeuge:manage_maintenance'), vehicleController.addWartung.bind(vehicleController));
|
||||
router.patch('/:id/wartung/:wartungId', authenticate, requirePermission('fahrzeuge:manage_maintenance'), vehicleController.updateWartung.bind(vehicleController));
|
||||
router.post('/wartung/:wartungId/upload', authenticate, requirePermission('fahrzeuge:manage_maintenance'), uploadWartung.single('datei'), vehicleController.uploadWartungFile.bind(vehicleController));
|
||||
|
||||
export default router;
|
||||
|
||||
Reference in New Issue
Block a user