Skip to content

Commit 484eacb

Browse files
OptionalValueLeonard Immel
andauthored
fix: /repos/{owner}/{repo}/actions/{runs,jobs} requiring owner permissions (#36818)
Resolves #36268 The REST endpoints: `/repos/{owner}/{repo}/actions/runs` `/repos/{owner}/{repo}/actions/jobs` currently require repository/organisation owner permissions, even though in GitHub they only need simple "read" permissions on the repo. In the web interface this is implemented correctly, where anyone with "read" permissions can see the list of action runs. --------- Co-authored-by: Leonard Immel <l.immel@lipowsky.de>
1 parent 93e3be3 commit 484eacb

1 file changed

Lines changed: 19 additions & 16 deletions

File tree

routers/api/v1/api.go

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -895,34 +895,35 @@ func Routes() *web.Router {
895895

896896
addActionsRoutes := func(
897897
m *web.Router,
898-
reqChecker func(ctx *context.APIContext),
898+
reqReaderCheck func(ctx *context.APIContext),
899+
reqOwnerCheck func(ctx *context.APIContext),
899900
act actions.API,
900901
) {
901902
m.Group("/actions", func() {
902903
m.Group("/secrets", func() {
903-
m.Get("", reqToken(), reqChecker, act.ListActionsSecrets)
904+
m.Get("", reqToken(), reqOwnerCheck, act.ListActionsSecrets)
904905
m.Combo("/{secretname}").
905-
Put(reqToken(), reqChecker, bind(api.CreateOrUpdateSecretOption{}), act.CreateOrUpdateSecret).
906-
Delete(reqToken(), reqChecker, act.DeleteSecret)
906+
Put(reqToken(), reqOwnerCheck, bind(api.CreateOrUpdateSecretOption{}), act.CreateOrUpdateSecret).
907+
Delete(reqToken(), reqOwnerCheck, act.DeleteSecret)
907908
})
908909

909910
m.Group("/variables", func() {
910-
m.Get("", reqToken(), reqChecker, act.ListVariables)
911+
m.Get("", reqToken(), reqOwnerCheck, act.ListVariables)
911912
m.Combo("/{variablename}").
912-
Get(reqToken(), reqChecker, act.GetVariable).
913-
Delete(reqToken(), reqChecker, act.DeleteVariable).
914-
Post(reqToken(), reqChecker, bind(api.CreateVariableOption{}), act.CreateVariable).
915-
Put(reqToken(), reqChecker, bind(api.UpdateVariableOption{}), act.UpdateVariable)
913+
Get(reqToken(), reqOwnerCheck, act.GetVariable).
914+
Delete(reqToken(), reqOwnerCheck, act.DeleteVariable).
915+
Post(reqToken(), reqOwnerCheck, bind(api.CreateVariableOption{}), act.CreateVariable).
916+
Put(reqToken(), reqOwnerCheck, bind(api.UpdateVariableOption{}), act.UpdateVariable)
916917
})
917918

918919
m.Group("/runners", func() {
919-
m.Get("", reqToken(), reqChecker, act.ListRunners)
920-
m.Post("/registration-token", reqToken(), reqChecker, act.CreateRegistrationToken)
921-
m.Get("/{runner_id}", reqToken(), reqChecker, act.GetRunner)
922-
m.Delete("/{runner_id}", reqToken(), reqChecker, act.DeleteRunner)
920+
m.Get("", reqToken(), reqOwnerCheck, act.ListRunners)
921+
m.Post("/registration-token", reqToken(), reqOwnerCheck, act.CreateRegistrationToken)
922+
m.Get("/{runner_id}", reqToken(), reqOwnerCheck, act.GetRunner)
923+
m.Delete("/{runner_id}", reqToken(), reqOwnerCheck, act.DeleteRunner)
923924
})
924-
m.Get("/runs", reqToken(), reqChecker, act.ListWorkflowRuns)
925-
m.Get("/jobs", reqToken(), reqChecker, act.ListWorkflowJobs)
925+
m.Get("/runs", reqToken(), reqReaderCheck, act.ListWorkflowRuns)
926+
m.Get("/jobs", reqToken(), reqReaderCheck, act.ListWorkflowJobs)
926927
})
927928
}
928929

@@ -1164,7 +1165,8 @@ func Routes() *web.Router {
11641165
m.Post("/reject", repo.RejectTransfer)
11651166
}, reqToken())
11661167

1167-
addActionsRoutes(m, reqOwner(), repo.NewAction()) // it adds the routes for secrets/variables and runner management
1168+
// Adds the routes for secrets/variables and runner management
1169+
addActionsRoutes(m, reqRepoReader(unit.TypeActions), reqOwner(), repo.NewAction())
11681170

11691171
m.Group("/actions/workflows", func() {
11701172
m.Get("", repo.ActionsListRepositoryWorkflows)
@@ -1619,6 +1621,7 @@ func Routes() *web.Router {
16191621
})
16201622
addActionsRoutes(
16211623
m,
1624+
reqOrgMembership(),
16221625
reqOrgOwnership(),
16231626
org.NewAction(),
16241627
)

0 commit comments

Comments
 (0)