11import { Router } from 'express'
22
33import { createRateLimiter } from '@/api/apiRateLimiter'
4+ import { requireScopes } from '@/api/public/middlewares/requireScopes'
45import { safeWrap } from '@/middlewares/errorMiddleware'
6+ import { SCOPES } from '@/security/scopes'
57
6- // TODO: restore once scopes are added to Auth0 staging tenant
7- // import { requireScopes } from '@/api/public/middlewares/requireScopes'
8- // import { SCOPES } from '@/security/scopes'
98import { activityFeedHandler } from '../ossprey/activityFeed'
109import { metricsHandler } from '../ossprey/metrics'
1110import { packageListHandler } from '../ossprey/packageList'
@@ -25,46 +24,59 @@ const rateLimiter = createRateLimiter({ max: 60, windowMs: 60 * 1000 })
2524export function akritesRouter ( ) : Router {
2625 const router = Router ( )
2726
28- router . get ( '/metrics' , safeWrap ( metricsHandler ) )
27+ router . get (
28+ '/metrics' ,
29+ requireScopes ( [ SCOPES . READ_PACKAGES , SCOPES . READ_STEWARDSHIPS ] , 'all' ) ,
30+ safeWrap ( metricsHandler ) ,
31+ )
2932 // /packages/scatter registered before router.use('/packages', ...) so Express evaluates this
3033 // explicit route first; without this ordering the sub-router would receive the request first
3134 // and call next() on no match, adding unnecessary overhead.
32- router . get ( '/packages/scatter' , rateLimiter , safeWrap ( packageScatterHandler ) )
33- router . get ( '/packages' , rateLimiter , safeWrap ( packageListHandler ) )
34- router . get ( '/activity' , safeWrap ( activityFeedHandler ) )
35+ router . get (
36+ '/packages/scatter' ,
37+ rateLimiter ,
38+ requireScopes ( [ SCOPES . READ_PACKAGES , SCOPES . READ_STEWARDSHIPS ] , 'all' ) ,
39+ safeWrap ( packageScatterHandler ) ,
40+ )
41+ router . get (
42+ '/packages' ,
43+ rateLimiter ,
44+ requireScopes ( [ SCOPES . READ_PACKAGES , SCOPES . READ_STEWARDSHIPS ] , 'all' ) ,
45+ safeWrap ( packageListHandler ) ,
46+ )
47+ router . get (
48+ '/activity' ,
49+ requireScopes ( [ SCOPES . READ_PACKAGES , SCOPES . READ_STEWARDSHIPS ] , 'all' ) ,
50+ safeWrap ( activityFeedHandler ) ,
51+ )
3552
3653 // --- packages ---
3754 router . post (
3855 / ^ \/ p a c k a g e s : b a t c h - s t e w a r d s h i p \/ ? $ / ,
3956 rateLimiter ,
40- // TODO: restore once read:packages + read:stewardships are added to Auth0 staging tenant
41- // requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'any'),
57+ requireScopes ( [ SCOPES . READ_PACKAGES , SCOPES . READ_STEWARDSHIPS ] , 'all' ) ,
4258 safeWrap ( batchGetStewardship ) ,
4359 )
4460 const packagesSubRouter = Router ( )
4561 packagesSubRouter . use ( rateLimiter )
4662 packagesSubRouter . get (
4763 '/metrics' ,
48- // TODO: restore once read:packages + read:stewardships are added to Auth0 staging tenant
49- // requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'any'),
64+ requireScopes ( [ SCOPES . READ_PACKAGES , SCOPES . READ_STEWARDSHIPS ] , 'all' ) ,
5065 safeWrap ( getPackagesMetrics ) ,
5166 )
5267 packagesSubRouter . get (
5368 '/detail' ,
54- // TODO: restore once read:packages + read:stewardships are added to Auth0 staging tenant
55- // requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'any'),
69+ requireScopes ( [ SCOPES . READ_PACKAGES , SCOPES . READ_STEWARDSHIPS ] , 'all' ) ,
5670 safeWrap ( getPackage ) ,
5771 )
5872 packagesSubRouter . get (
5973 '/advisories' ,
60- // TODO: restore once read:packages + read:stewardships are added to Auth0 staging tenant
61- // requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'any'),
74+ requireScopes ( [ SCOPES . READ_PACKAGES , SCOPES . READ_STEWARDSHIPS ] , 'all' ) ,
6275 safeWrap ( getPackageAdvisories ) ,
6376 )
6477 packagesSubRouter . get (
6578 '/history' ,
66- // TODO: restore once read:packages + read:stewardships are added to Auth0 staging tenant
67- // requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'any'),
79+ requireScopes ( [ SCOPES . READ_PACKAGES , SCOPES . READ_STEWARDSHIPS ] , 'all' ) ,
6880 safeWrap ( getPackageHistory ) ,
6981 )
7082 router . use ( '/packages' , packagesSubRouter )
@@ -74,26 +86,22 @@ export function akritesRouter(): Router {
7486 stewardshipsSubRouter . use ( rateLimiter )
7587 stewardshipsSubRouter . post (
7688 '/open' ,
77- // TODO: restore once write:stewardships is added to Auth0 staging tenant
78- // requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
89+ requireScopes ( [ SCOPES . WRITE_STEWARDSHIPS ] ) ,
7990 safeWrap ( openStewardship ) ,
8091 )
8192 stewardshipsSubRouter . post (
8293 '/:id/assign' ,
83- // TODO: restore once write:stewardships is added to Auth0 staging tenant
84- // requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
94+ requireScopes ( [ SCOPES . WRITE_STEWARDSHIPS ] ) ,
8595 safeWrap ( assignStewardHandler ) ,
8696 )
8797 stewardshipsSubRouter . post (
8898 '/:id/escalate' ,
89- // TODO: restore once write:stewardships is added to Auth0 staging tenant
90- // requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
99+ requireScopes ( [ SCOPES . WRITE_STEWARDSHIPS ] ) ,
91100 safeWrap ( escalateHandler ) ,
92101 )
93102 stewardshipsSubRouter . patch (
94103 '/:id/status' ,
95- // TODO: restore once write:stewardships is added to Auth0 staging tenant
96- // requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
104+ requireScopes ( [ SCOPES . WRITE_STEWARDSHIPS ] ) ,
97105 safeWrap ( updateStatusHandler ) ,
98106 )
99107 router . use ( '/stewardships' , stewardshipsSubRouter )
0 commit comments