fix(security): require ADMIN role for /api/performance/db-metrics (#718)#840
Open
pharwasz wants to merge 2 commits into
Open
fix(security): require ADMIN role for /api/performance/db-metrics (#718)#840pharwasz wants to merge 2 commits into
pharwasz wants to merge 2 commits into
Conversation
…nafcode#718) - Add requireAuth() check 401 for unauthenticated requests - Add hasPermission(user, ANALYTICS_VIEW) check 403 for non-admin roles - Enhance getUserFromRequest() helper in authMiddleware.ts - Add role-based tests covering anonymous, student, instructor, and admin
|
@pharwasz Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
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.
Summary
Closes #718
/api/performance/db-metricswas returning database pool statistics (total connections, idle connections, wait counts) to any unauthenticated caller. This leaked infrastructure capacity data useful for timing attacks and exposed the fact that a PostgreSQL pool is in use along with its current load.Changes Made
src/app/api/performance/db-metrics/route.tsrequireAuth()check — returns HTTP 401 if no valid session/Bearer token is presenthasPermission(user, Permission.ANALYTICS_VIEW)check — returns HTTP 403 if the user lacks the required rolesrc/lib/authMiddleware.tsgetUserFromRequest()helper to extract user from Bearer token oruser-rolecookieUserobject with role information for downstream authorization checkssrc/lib/auth/acl.tsADMINrole is grantedANALYTICS_VIEWpermissionsrc/app/api/performance/db-metrics/__tests__/route.test.ts(new file)STUDENTrole → 403INSTRUCTORrole → 403GUESTrole → 403ADMINrole → 200 with metricsAcceptance Criteria
Type