mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
0eccc3838e
Make sure credentials are removed from the store at logout (not only in the config file). Remove not needed error check and auth erasing at login (auths aren't stored anywhere at that point). Add regression test. Signed-off-by: Antonio Murdaca <runcom@redhat.com>
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package client
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
Cli "github.com/docker/docker/cli"
|
|
flag "github.com/docker/docker/pkg/mflag"
|
|
)
|
|
|
|
// CmdLogout logs a user out from a Docker registry.
|
|
//
|
|
// If no server is specified, the user will be logged out from the registry's index server.
|
|
//
|
|
// Usage: docker logout [SERVER]
|
|
func (cli *DockerCli) CmdLogout(args ...string) error {
|
|
cmd := Cli.Subcmd("logout", []string{"[SERVER]"}, Cli.DockerCommands["logout"].Description+".\nIf no server is specified, the default is defined by the daemon.", true)
|
|
cmd.Require(flag.Max, 1)
|
|
|
|
cmd.ParseFlags(args, true)
|
|
|
|
var serverAddress string
|
|
if len(cmd.Args()) > 0 {
|
|
serverAddress = cmd.Arg(0)
|
|
} else {
|
|
serverAddress = cli.electAuthServer()
|
|
}
|
|
|
|
// check if we're logged in based on the records in the config file
|
|
// which means it couldn't have user/pass cause they may be in the creds store
|
|
if _, ok := cli.configFile.AuthConfigs[serverAddress]; !ok {
|
|
fmt.Fprintf(cli.out, "Not logged in to %s\n", serverAddress)
|
|
return nil
|
|
}
|
|
|
|
fmt.Fprintf(cli.out, "Remove login credentials for %s\n", serverAddress)
|
|
if err := eraseCredentials(cli.configFile, serverAddress); err != nil {
|
|
fmt.Fprintf(cli.out, "WARNING: could not erase credentials: %v\n", err)
|
|
}
|
|
|
|
return nil
|
|
}
|