forked from TrueCloudLab/distribution
Update auth context keys to use constant
Prevent using strings throughout the code to reference a string key defined in the auth package. Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
This commit is contained in:
parent
74c4a0e3e3
commit
648a1343db
6 changed files with 18 additions and 7 deletions
|
@ -39,6 +39,16 @@ import (
|
||||||
"github.com/docker/distribution/context"
|
"github.com/docker/distribution/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// UserKey is used to get the user object from
|
||||||
|
// a user context
|
||||||
|
UserKey = "auth.user"
|
||||||
|
|
||||||
|
// UserNameKey is used to get the user name from
|
||||||
|
// a user context
|
||||||
|
UserNameKey = "auth.user.name"
|
||||||
|
)
|
||||||
|
|
||||||
// UserInfo carries information about
|
// UserInfo carries information about
|
||||||
// an autenticated/authorized client.
|
// an autenticated/authorized client.
|
||||||
type UserInfo struct {
|
type UserInfo struct {
|
||||||
|
@ -102,9 +112,9 @@ type userInfoContext struct {
|
||||||
|
|
||||||
func (uic userInfoContext) Value(key interface{}) interface{} {
|
func (uic userInfoContext) Value(key interface{}) interface{} {
|
||||||
switch key {
|
switch key {
|
||||||
case "auth.user":
|
case UserKey:
|
||||||
return uic.user
|
return uic.user
|
||||||
case "auth.user.name":
|
case UserNameKey:
|
||||||
return uic.user.Name
|
return uic.user.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ func TestBasicAccessController(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
userInfo, ok := authCtx.Value("auth.user").(auth.UserInfo)
|
userInfo, ok := authCtx.Value(auth.UserKey).(auth.UserInfo)
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Fatal("basic accessController did not set auth.user context")
|
t.Fatal("basic accessController did not set auth.user context")
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ func TestSillyAccessController(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
userInfo, ok := authCtx.Value("auth.user").(auth.UserInfo)
|
userInfo, ok := authCtx.Value(auth.UserKey).(auth.UserInfo)
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Fatal("silly accessController did not set auth.user context")
|
t.Fatal("silly accessController did not set auth.user context")
|
||||||
}
|
}
|
||||||
|
|
|
@ -375,7 +375,7 @@ func TestAccessController(t *testing.T) {
|
||||||
t.Fatalf("accessController returned unexpected error: %s", err)
|
t.Fatalf("accessController returned unexpected error: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
userInfo, ok := authCtx.Value("auth.user").(auth.UserInfo)
|
userInfo, ok := authCtx.Value(auth.UserKey).(auth.UserInfo)
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Fatal("token accessController did not set auth.user context")
|
t.Fatal("token accessController did not set auth.user context")
|
||||||
}
|
}
|
||||||
|
|
|
@ -588,7 +588,7 @@ func (app *App) dispatcher(dispatch dispatchFunc) http.Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add username to request logging
|
// Add username to request logging
|
||||||
context.Context = ctxu.WithLogger(context.Context, ctxu.GetLogger(context.Context, "auth.user.name"))
|
context.Context = ctxu.WithLogger(context.Context, ctxu.GetLogger(context.Context, auth.UserNameKey))
|
||||||
|
|
||||||
if app.nameRequired(r) {
|
if app.nameRequired(r) {
|
||||||
nameRef, err := reference.ParseNamed(getName(context))
|
nameRef, err := reference.ParseNamed(getName(context))
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"github.com/docker/distribution/digest"
|
"github.com/docker/distribution/digest"
|
||||||
"github.com/docker/distribution/registry/api/errcode"
|
"github.com/docker/distribution/registry/api/errcode"
|
||||||
"github.com/docker/distribution/registry/api/v2"
|
"github.com/docker/distribution/registry/api/v2"
|
||||||
|
"github.com/docker/distribution/registry/auth"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -77,7 +78,7 @@ func getUploadUUID(ctx context.Context) (uuid string) {
|
||||||
// getUserName attempts to resolve a username from the context and request. If
|
// getUserName attempts to resolve a username from the context and request. If
|
||||||
// a username cannot be resolved, the empty string is returned.
|
// a username cannot be resolved, the empty string is returned.
|
||||||
func getUserName(ctx context.Context, r *http.Request) string {
|
func getUserName(ctx context.Context, r *http.Request) string {
|
||||||
username := ctxu.GetStringValue(ctx, "auth.user.name")
|
username := ctxu.GetStringValue(ctx, auth.UserNameKey)
|
||||||
|
|
||||||
// Fallback to request user with basic auth
|
// Fallback to request user with basic auth
|
||||||
if username == "" {
|
if username == "" {
|
||||||
|
|
Loading…
Reference in a new issue