From ba32d670233ad74690e8d7a4b04e868cc85fa902 Mon Sep 17 00:00:00 2001 From: BibaBot Jarvis Date: Mon, 16 Mar 2026 09:06:46 +0000 Subject: [PATCH] docs: update roles and permissions documentation --- docs/roles-and-permissions.md | 36 ++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/docs/roles-and-permissions.md b/docs/roles-and-permissions.md index 4c470ef..40b628d 100644 --- a/docs/roles-and-permissions.md +++ b/docs/roles-and-permissions.md @@ -72,4 +72,38 @@ - Rollenmodell im Repo dokumentiert - Rollen-Claims in API-Security-Konzept referenziert - Role-Checks fuer neue Endpunkte verpflichtend -- Audit-Events fuer Admin/Moderation spezifiziert \ No newline at end of file +- Audit-Events fuer Admin/Moderation spezifiziert + +## Implementierung + +Die Rollen werden in der Datenbank als `role`-Feld im `users`-Table gespeichert. Die Middleware `requireRole` prüft, ob der eingeloggte Benutzer die benötigte Rolle besitzt. + +### Beispiel für eine geschützte Route: + +```javascript +const express = require('express'); +const router = express.Router(); +const { requireRole } = require('../middleware/role.middleware'); + +// Nur Admins dürfen diese Route aufrufen +router.delete('/users/:userId', requireRole(['admin']), async (req, res) => { + // ... +}); +``` + +### Beispiel für eine Middleware zur Rollenprüfung: + +```javascript +// backend/middleware/role.middleware.js +const requireRole = (allowedRoles) => { + return (req, res, next) => { + const userRole = req.user.role; // aus JWT + if (!allowedRoles.includes(userRole)) { + return res.status(403).json({ error: 'Forbidden' }); + } + next(); + }; +}; + +module.exports = { requireRole }; +```