From ccb839e0e30c3b6992fb4084dfd6550d0ddd4d1a Mon Sep 17 00:00:00 2001 From: Noah Treuhaft Date: Tue, 3 Jan 2017 12:27:12 -0800 Subject: [PATCH] Change DELETE action from "*" to "delete" With token authentication, requiring the "*" action for DELETE requests makes it impossible to administratively lock a repository against pushes and pulls but still allow deletion. This change adds a new "delete" action for DELETE requests to make that possible. Signed-off-by: Noah Treuhaft --- registry/handlers/app.go | 4 +--- registry/handlers/app_test.go | 6 +++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/registry/handlers/app.go b/registry/handlers/app.go index 670a2794..766dc4b9 100644 --- a/registry/handlers/app.go +++ b/registry/handlers/app.go @@ -901,12 +901,10 @@ func appendAccessRecords(records []auth.Access, method string, repo string) []au Action: "push", }) case "DELETE": - // DELETE access requires full admin rights, which is represented - // as "*". This may not be ideal. records = append(records, auth.Access{ Resource: resource, - Action: "*", + Action: "delete", }) } return records diff --git a/registry/handlers/app_test.go b/registry/handlers/app_test.go index 385fa4c6..12c0b61c 100644 --- a/registry/handlers/app_test.go +++ b/registry/handlers/app_test.go @@ -229,9 +229,9 @@ func TestAppendAccessRecords(t *testing.T) { Resource: expectedResource, Action: "push", } - expectedAllRecord := auth.Access{ + expectedDeleteRecord := auth.Access{ Resource: expectedResource, - Action: "*", + Action: "delete", } records := []auth.Access{} @@ -271,7 +271,7 @@ func TestAppendAccessRecords(t *testing.T) { records = []auth.Access{} result = appendAccessRecords(records, "DELETE", repo) - expectedResult = []auth.Access{expectedAllRecord} + expectedResult = []auth.Access{expectedDeleteRecord} if ok := reflect.DeepEqual(result, expectedResult); !ok { t.Fatalf("Actual access record differs from expected") }