@@ -15,6 +15,11 @@ project_jobs_public(project){
1515 projects[i].public = true
1616}
1717
18+ valid_project_token ([token, project_id]) {
19+ token.type = " project"
20+ token.project.id = project_id
21+ }
22+
1823# Allow GET /api/v1/projects/<id>/jobs for collaborators
1924allow {
2025 api.method = " GET"
@@ -30,6 +35,13 @@ allow {
3035 project_jobs_public (project_id)
3136}
3237
38+ # Allow GET /api/v1/projects/<id>/jobs for valid project token
39+ allow {
40+ api.method = " GET"
41+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" ]
42+ valid_project_token ([api.token, project_id])
43+ }
44+
3345# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/restart for collaborators
3446allow {
3547 api.method = " GET"
@@ -38,6 +50,13 @@ allow {
3850 project_jobs_collaborator ([api.token.user.id, project_id])
3951}
4052
53+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/restart for valid project token
54+ allow {
55+ api.method = " GET"
56+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " restart" ]
57+ valid_project_token ([api.token, project_id])
58+ }
59+
4160# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/abort for collaborators
4261allow {
4362 api.method = " GET"
@@ -46,6 +65,13 @@ allow {
4665 project_jobs_collaborator ([api.token.user.id, project_id])
4766}
4867
68+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/abort for valid project token
69+ allow {
70+ api.method = " GET"
71+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " abort" ]
72+ valid_project_token ([api.token, project_id])
73+ }
74+
4975# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/testresults for collaborators
5076allow {
5177 api.method = " GET"
@@ -54,13 +80,27 @@ allow {
5480 project_jobs_collaborator ([api.token.user.id, project_id])
5581}
5682
83+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/testresults for valid project token
84+ allow {
85+ api.method = " GET"
86+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " testresults" ]
87+ valid_project_token ([api.token, project_id])
88+ }
89+
5790# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/testresults if project is public
5891allow {
5992 api.method = " GET"
6093 api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " testresults" ]
6194 project_jobs_public (project_id)
6295}
6396
97+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/testresults for valid project token
98+ allow {
99+ api.method = " GET"
100+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " testresults" ]
101+ valid_project_token ([api.token, project_id])
102+ }
103+
64104# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/tabs for collaborators
65105allow {
66106 api.method = " GET"
@@ -76,6 +116,13 @@ allow {
76116 project_jobs_public (project_id)
77117}
78118
119+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/tabs if project for valid project token
120+ allow {
121+ api.method = " GET"
122+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " tabs" ]
123+ valid_project_token ([api.token, project_id])
124+ }
125+
79126# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/archive for collaborators
80127allow {
81128 api.method = " GET"
@@ -91,6 +138,13 @@ allow {
91138 project_jobs_public (project_id)
92139}
93140
141+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/archive for valid project token
142+ allow {
143+ api.method = " GET"
144+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " archive" ]
145+ valid_project_token ([api.token, project_id])
146+ }
147+
94148# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/archive/download for collaborators
95149allow {
96150 api.method = " GET"
@@ -106,6 +160,13 @@ allow {
106160 project_jobs_public (project_id)
107161}
108162
163+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/archive/download for valid project token
164+ allow {
165+ api.method = " GET"
166+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " archive" , " download" ]
167+ valid_project_token ([api.token, project_id])
168+ }
169+
109170# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/archive/download/all for collaborators
110171allow {
111172 api.method = " GET"
@@ -121,6 +182,13 @@ allow {
121182 project_jobs_public (project_id)
122183}
123184
185+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/archive/download/all for valid project token
186+ allow {
187+ api.method = " GET"
188+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " archive" , " download" , " all" ]
189+ valid_project_token ([api.token, project_id])
190+ }
191+
124192# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/console for collaborators
125193allow {
126194 api.method = " GET"
@@ -136,6 +204,13 @@ allow {
136204 project_jobs_public (project_id)
137205}
138206
207+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/console for valid project token
208+ allow {
209+ api.method = " GET"
210+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " console" ]
211+ valid_project_token ([api.token, project_id])
212+ }
213+
139214# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/output for collaborators
140215allow {
141216 api.method = " GET"
@@ -151,6 +226,13 @@ allow {
151226 project_jobs_public (project_id)
152227}
153228
229+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/output for valid project token
230+ allow {
231+ api.method = " GET"
232+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " output" ]
233+ valid_project_token ([api.token, project_id])
234+ }
235+
154236# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/testruns for collaborators
155237allow {
156238 api.method = " GET"
@@ -166,6 +248,13 @@ allow {
166248 project_jobs_public (project_id)
167249}
168250
251+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/testruns for valid project token
252+ allow {
253+ api.method = " GET"
254+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " testruns" ]
255+ valid_project_token ([api.token, project_id])
256+ }
257+
169258# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/tests/history for collaborators
170259allow {
171260 api.method = " GET"
@@ -181,6 +270,13 @@ allow {
181270 project_jobs_public (project_id)
182271}
183272
273+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/tests/history for valid project token
274+ allow {
275+ api.method = " GET"
276+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " tests" , " history" ]
277+ valid_project_token ([api.token, project_id])
278+ }
279+
184280# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/badges for collaborators
185281allow {
186282 api.method = " GET"
@@ -196,6 +292,13 @@ allow {
196292 project_jobs_public (project_id)
197293}
198294
295+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/badges for valid project token
296+ allow {
297+ api.method = " GET"
298+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " badges" ]
299+ valid_project_token ([api.token, project_id])
300+ }
301+
199302# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/stats for collaborators
200303allow {
201304 api.method = " GET"
@@ -211,10 +314,24 @@ allow {
211314 project_jobs_public (project_id)
212315}
213316
317+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/stats for valid project token
318+ allow {
319+ api.method = " GET"
320+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " stats" ]
321+ valid_project_token ([api.token, project_id])
322+ }
323+
214324# Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/cache/clear for collaborators
215325allow {
216326 api.method = " GET"
217327 api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " cache" , " clear" ]
218328 api.token.type = " user"
219329 project_jobs_collaborator ([api.token.user.id, project_id])
220330}
331+
332+ # Allow GET /api/v1/projects/<project_id>/jobs/<job_id>/cache/clear for valid project token
333+ allow {
334+ api.method = " GET"
335+ api.path = [" api" , " v1" , " projects" , project_id, " jobs" , _, " cache" , " clear" ]
336+ valid_project_token ([api.token, project_id])
337+ }
0 commit comments