소스 검색

fix docker login when same username

Victor Vieux 12 년 전
부모
커밋
1f23b4caae
3개의 변경된 파일12개의 추가작업 그리고 7개의 파일을 삭제
  1. 4 4
      api.go
  2. 2 2
      commands.go
  3. 6 1
      registry/registry.go

+ 4 - 4
api.go

@@ -59,7 +59,7 @@ func getBoolParam(value string) (bool, error) {
 }
 
 func getAuth(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
-	b, err := json.Marshal(srv.registry.GetAuthConfig())
+	b, err := json.Marshal(srv.registry.GetAuthConfig(false))
 	if err != nil {
 		return err
 	}
@@ -72,9 +72,9 @@ func postAuth(srv *Server, version float64, w http.ResponseWriter, r *http.Reque
 	if err := json.NewDecoder(r.Body).Decode(config); err != nil {
 		return err
 	}
-
-	if config.Username == srv.registry.GetAuthConfig().Username {
-		config.Password = srv.registry.GetAuthConfig().Password
+	authConfig := srv.registry.GetAuthConfig(true)
+	if config.Username == authConfig.Username {
+		config.Password = authConfig.Password
 	}
 
 	newAuthConfig := auth.NewAuthConfig(config.Username, config.Password, config.Email, srv.runtime.root)

+ 2 - 2
commands.go

@@ -1294,6 +1294,6 @@ func NewDockerCli(host string, port int) *DockerCli {
 }
 
 type DockerCli struct {
-	host       string
-	port       int
+	host string
+	port int
 }

+ 6 - 1
registry/registry.go

@@ -428,9 +428,14 @@ func (r *Registry) ResetClient(authConfig *auth.AuthConfig) {
 	r.client.Jar = cookiejar.NewCookieJar()
 }
 
-func (r *Registry) GetAuthConfig() *auth.AuthConfig {
+func (r *Registry) GetAuthConfig(withPasswd bool) *auth.AuthConfig {
+	password := ""
+	if withPasswd {
+		password = r.authConfig.Password
+	}
 	return &auth.AuthConfig{
 		Username: r.authConfig.Username,
+		Password: password,
 		Email:    r.authConfig.Email,
 	}
 }