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:
Derek McGowan 2016-01-28 17:02:09 -08:00
parent 74c4a0e3e3
commit 648a1343db
6 changed files with 18 additions and 7 deletions

View file

@ -39,6 +39,16 @@ import (
"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
// an autenticated/authorized client.
type UserInfo struct {
@ -102,9 +112,9 @@ type userInfoContext struct {
func (uic userInfoContext) Value(key interface{}) interface{} {
switch key {
case "auth.user":
case UserKey:
return uic.user
case "auth.user.name":
case UserNameKey:
return uic.user.Name
}

View file

@ -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 {
t.Fatal("basic accessController did not set auth.user context")
}

View file

@ -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 {
t.Fatal("silly accessController did not set auth.user context")
}

View file

@ -375,7 +375,7 @@ func TestAccessController(t *testing.T) {
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 {
t.Fatal("token accessController did not set auth.user context")
}

View file

@ -588,7 +588,7 @@ func (app *App) dispatcher(dispatch dispatchFunc) http.Handler {
}
// 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) {
nameRef, err := reference.ParseNamed(getName(context))

View file

@ -10,6 +10,7 @@ import (
"github.com/docker/distribution/digest"
"github.com/docker/distribution/registry/api/errcode"
"github.com/docker/distribution/registry/api/v2"
"github.com/docker/distribution/registry/auth"
"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
// a username cannot be resolved, the empty string is returned.
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
if username == "" {