-
Notifications
You must be signed in to change notification settings - Fork 77
/
Copy pathsignaturehandler.go
54 lines (50 loc) · 1.46 KB
/
signaturehandler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package server
import (
"net/http"
"github.com/docker/distribution/context"
"github.com/docker/distribution/registry/auth"
"github.com/docker/distribution/registry/handlers"
"github.com/openshift/image-registry/pkg/dockerregistry/server/api"
"github.com/openshift/image-registry/pkg/dockerregistry/server/client"
)
// RegisterSignatureHandler registers the Docker image signature extension to Docker
// registry.
func RegisterSignatureHandler(app *handlers.App, isImageClient client.ImageStreamImagesNamespacer) {
extensionsRouter := app.NewRoute().PathPrefix(api.ExtensionsPrefix).Subrouter()
var (
getSignatureAccess = func(r *http.Request) []auth.Access {
return []auth.Access{
{
Resource: auth.Resource{
Type: "signature",
Name: context.GetStringValue(context.WithVars(app, r), "vars.name"),
},
Action: "get",
},
}
}
putSignatureAccess = func(r *http.Request) []auth.Access {
return []auth.Access{
{
Resource: auth.Resource{
Type: "signature",
Name: context.GetStringValue(context.WithVars(app, r), "vars.name"),
},
Action: "put",
},
}
}
)
app.RegisterRoute(
extensionsRouter.Path(api.SignaturesPath).Methods("GET"),
NewSignatureDispatcher(isImageClient),
handlers.NameRequired,
getSignatureAccess,
)
app.RegisterRoute(
extensionsRouter.Path(api.SignaturesPath).Methods("PUT"),
NewSignatureDispatcher(isImageClient),
handlers.NameRequired,
putSignatureAccess,
)
}