Skip to content

Commit ee124fc

Browse files
authored
fix: re enable scopes (CM-1231) (#4210)
Signed-off-by: Umberto Sgueglia <usgueglia@contractor.linuxfoundation.org>
1 parent 42f823a commit ee124fc

6 files changed

Lines changed: 71 additions & 76 deletions

File tree

backend/src/api/public/v1/akrites/index.ts

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import { Router } from 'express'
22

33
import { createRateLimiter } from '@/api/apiRateLimiter'
4+
import { requireScopes } from '@/api/public/middlewares/requireScopes'
45
import { 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'
98
import { activityFeedHandler } from '../ossprey/activityFeed'
109
import { metricsHandler } from '../ossprey/metrics'
1110
import { packageListHandler } from '../ossprey/packageList'
@@ -25,46 +24,59 @@ const rateLimiter = createRateLimiter({ max: 60, windowMs: 60 * 1000 })
2524
export 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
/^\/packages:batch-stewardship\/?$/,
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)

backend/src/api/public/v1/index.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@ import { NotFoundError } from '@crowd/common'
44

55
import { createRateLimiter } from '@/api/apiRateLimiter'
66
import { safeWrap } from '@/middlewares/errorMiddleware'
7+
import { SCOPES } from '@/security/scopes'
78

8-
// TODO: restore once read:stewardships is added to Auth0 staging tenant
9-
// import { SCOPES } from '@/security/scopes'
109
import { AUTH0_CONFIG } from '../../../conf'
1110
import { oauth2Middleware } from '../middlewares/oauth2Middleware'
12-
// import { requireScopes } from '../middlewares/requireScopes'
11+
import { requireScopes } from '../middlewares/requireScopes'
1312
import { staticApiKeyMiddleware } from '../middlewares/staticApiKeyMiddleware'
1413

1514
import { memberOrganizationAffiliationsRouter } from './affiliations'
@@ -35,8 +34,7 @@ export function v1Router(): Router {
3534
/^\/packages:batch-stewardship\/?$/,
3635
oauth2Middleware(AUTH0_CONFIG),
3736
packagesRateLimiter,
38-
// TODO: restore once read:stewardships is added to Auth0 staging tenant
39-
// requireScopes([SCOPES.READ_STEWARDSHIPS]),
37+
requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
4038
safeWrap(batchGetStewardship),
4139
)
4240
router.use('/packages', oauth2Middleware(AUTH0_CONFIG), packagesRouter())
Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { Router } from 'express'
22

3+
import { requireScopes } from '@/api/public/middlewares/requireScopes'
34
import { safeWrap } from '@/middlewares/errorMiddleware'
5+
import { SCOPES } from '@/security/scopes'
46

57
import { activityFeedHandler } from './activityFeed'
68
import { metricsHandler } from './metrics'
@@ -12,11 +14,27 @@ import { packageScatterHandler } from './packageScatter'
1214
export function osspreyRouter(): Router {
1315
const router = Router()
1416

15-
router.get('/metrics', safeWrap(metricsHandler))
17+
router.get(
18+
'/metrics',
19+
requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
20+
safeWrap(metricsHandler),
21+
)
1622
// /packages/scatter must be registered before /packages to avoid Express treating 'scatter' as a path param
17-
router.get('/packages/scatter', safeWrap(packageScatterHandler))
18-
router.get('/packages', safeWrap(packageListHandler))
19-
router.get('/activity', safeWrap(activityFeedHandler))
23+
router.get(
24+
'/packages/scatter',
25+
requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
26+
safeWrap(packageScatterHandler),
27+
)
28+
router.get(
29+
'/packages',
30+
requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
31+
safeWrap(packageListHandler),
32+
)
33+
router.get(
34+
'/activity',
35+
requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
36+
safeWrap(activityFeedHandler),
37+
)
2038

2139
return router
2240
}
Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import { Router } from 'express'
22

33
import { createRateLimiter } from '@/api/apiRateLimiter'
4-
// TODO: restore once read:packages + read:stewardships are added to Auth0 staging tenant
5-
// import { requireScopes } from '@/api/public/middlewares/requireScopes'
4+
import { requireScopes } from '@/api/public/middlewares/requireScopes'
65
import { safeWrap } from '@/middlewares/errorMiddleware'
6+
import { SCOPES } from '@/security/scopes'
77

8-
// import { SCOPES } from '@/security/scopes'
98
import { getPackage } from './getPackage'
109
import { getPackagesMetrics } from './getPackagesMetrics'
1110
import { listPackages } from './listPackages'
@@ -21,27 +20,11 @@ export function packagesRouter(): Router {
2120
const router = Router()
2221

2322
router.use(rateLimiter)
23+
router.use(requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'))
2424

25-
router.get(
26-
'/',
27-
// TODO: restore once read:packages + read:stewardships are added to Auth0 staging tenant
28-
// requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'any'),
29-
safeWrap(listPackages),
30-
)
31-
32-
router.get(
33-
'/metrics',
34-
// TODO: restore once read:packages + read:stewardships are added to Auth0 staging tenant
35-
// requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'any'),
36-
safeWrap(getPackagesMetrics),
37-
)
38-
39-
router.get(
40-
'/detail',
41-
// TODO: restore once read:packages + read:stewardships are added to Auth0 staging tenant
42-
// requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'any'),
43-
safeWrap(getPackage),
44-
)
25+
router.get('/', safeWrap(listPackages))
26+
router.get('/metrics', safeWrap(getPackagesMetrics))
27+
router.get('/detail', safeWrap(getPackage))
4528

4629
return router
4730
}

backend/src/api/public/v1/stewardships/index.ts

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import { Router } from 'express'
22

33
import { createRateLimiter } from '@/api/apiRateLimiter'
4-
// TODO: restore once write:stewardships is added to Auth0 staging tenant
5-
// import { requireScopes } from '@/api/public/middlewares/requireScopes'
4+
import { requireScopes } from '@/api/public/middlewares/requireScopes'
65
import { safeWrap } from '@/middlewares/errorMiddleware'
6+
import { SCOPES } from '@/security/scopes'
77

8-
// import { SCOPES } from '@/security/scopes'
98
import { assignStewardHandler } from './assignSteward'
109
import { escalateHandler } from './escalate'
1110
import { openStewardship } from './openStewardship'
@@ -19,31 +18,19 @@ export function stewardshipsRouter(): Router {
1918

2019
router.use(rateLimiter)
2120

22-
router.post(
23-
'/',
24-
// TODO: restore once write:stewardships is added to Auth0 staging tenant
25-
// requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
26-
safeWrap(openStewardship),
27-
)
21+
router.post('/', requireScopes([SCOPES.WRITE_STEWARDSHIPS]), safeWrap(openStewardship))
2822

2923
router.put(
3024
'/:id/steward',
31-
// TODO: restore once write:stewardships is added to Auth0 staging tenant
32-
// requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
25+
requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
3326
safeWrap(assignStewardHandler),
3427
)
3528

36-
router.put(
37-
'/:id/escalate',
38-
// TODO: restore once write:stewardships is added to Auth0 staging tenant
39-
// requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
40-
safeWrap(escalateHandler),
41-
)
29+
router.put('/:id/escalate', requireScopes([SCOPES.WRITE_STEWARDSHIPS]), safeWrap(escalateHandler))
4230

4331
router.put(
4432
'/:id/status',
45-
// TODO: restore once write:stewardships is added to Auth0 staging tenant
46-
// requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
33+
requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
4734
safeWrap(updateStatusHandler),
4835
)
4936

backend/src/security/scopes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export const SCOPES = {
1313
READ_AFFILIATIONS: 'read:affiliations',
1414
READ_PACKAGES: 'read:packages',
1515
READ_STEWARDSHIPS: 'read:stewardships',
16+
WRITE_STEWARDSHIPS: 'write:stewardships',
1617
} as const
1718

1819
export type Scope = (typeof SCOPES)[keyof typeof SCOPES]

0 commit comments

Comments
 (0)