Fix #29: Admin-Routen per requireAdmin-Guard schützen - #225
Merged
Conversation
…schützen Die drei /admin/*-Routen (projects, templates, lecturers) wurden bisher für ALLE Nicht-Studenten gerendert — auch Lecturer konnten sie per direkter URL-Eingabe erreichen, obwohl die Sidebar den Admin-Nav für Nicht-Admins bereits ausblendet. Jede Admin-Route ist nun mit <ProtectedRoute requireAdmin> umschlossen (die Komponente existierte bereits, war aber Dead Code). Ein Nicht-Admin (Lecturer) wird über den requireAdmin-Zweig sauber auf /dashboard umgeleitet — eine im Nicht-Studenten-Branch registrierte Route. Der /no-role-Zweig greift nur für rollenlose User und ist hier nicht relevant. Reine Routing-/Shell-Härtung, kein Layout-Change.
RamonaKT
self-requested a review
July 24, 2026 21:43
RamonaKT
approved these changes
Jul 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #29
Problem
Die drei
/admin/*-Routen insrc/App.tsx(/admin/projects,/admin/templates,/admin/lecturers) wurden für alle Nicht-Studenten gerendert — also auch für Lecturer. Zwar blendet die Sidebar (Sidebar.tsx:70-79) den Admin-Nav für Nicht-Admins aus, aber der Route-Level-Guard fehlte: Ein Lecturer konnte die Admin-Seiten per direkter URL-Eingabe erreichen.Change
Jede Admin-Route wird jetzt mit dem bereits existierenden (bislang ungenutzten)
<ProtectedRoute requireAdmin>umschlossen.ProtectedRoutewird inApp.tsximportiert.Ein Nicht-Admin (Lecturer) läuft über den
requireAdmin && !user.isAdmin-Zweig und wird sauber auf/dashboardumgeleitet — eine im Nicht-Studenten-Branch registrierte, existierende Route. Der/no-role-Zweig vonProtectedRoutegreift nur für komplett rollenlose User und ist für diesen Fall irrelevant (er ist nicht als Route registriert, wird hier aber nie erreicht).Hinweis
Das Backend erzwingt diese Berechtigung bereits (403 für Nicht-Admins auf Admin-Endpoints). Dies schließt die Lücke in der UI-Shell — reine Routing-Härtung, kein Daten-Leak und keine Layout-Änderung (Desktop/Mobile unverändert).
Verifikation
npm run buildgrün (der CSS-Minify-Warning ist vorbestehend und unabhängig)isAdmin=false) kannAdminProjectOverview/AdminTemplateApprovals/LecturerManagementnicht mehr rendern