Skip to content

Commit c93f914

Browse files
committed
remove token from config on error / success from api req
1 parent 1c6d278 commit c93f914

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

pkg/cmd/cli/cmd/login/logout.go

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
kclientcmd "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
1212
kclientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
1313
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
14+
kutilerrors "k8s.io/kubernetes/pkg/util/errors"
1415

1516
"github.com/openshift/origin/pkg/client"
1617
"github.com/openshift/origin/pkg/cmd/cli/config"
@@ -123,19 +124,22 @@ func (o LogoutOptions) RunLogout() error {
123124
return err
124125
}
125126

126-
// attempt to always delete token from local config
127-
// before deleting using api.
128-
tokenDeleted, err := o.deleteTokenFromConfig()
129-
if err != nil {
130-
return err
131-
}
132-
133127
if err := client.OAuthAccessTokens().Delete(token); err != nil {
134-
// print successful removal of token from local
135-
// config before printing error from server.
136-
if tokenDeleted {
128+
errs := []error{}
129+
130+
configErr := o.deleteTokenFromConfig()
131+
if configErr != nil {
132+
errs = append(errs, configErr)
133+
} else {
137134
fmt.Printf("Successfully removed user token from local config.\n\n")
138135
}
136+
137+
// append error from server
138+
errs = append(errs, err)
139+
return kutilerrors.Flatten(kutilerrors.NewAggregate(errs))
140+
}
141+
142+
if err := o.deleteTokenFromConfig(); err != nil {
139143
return err
140144
}
141145

@@ -144,22 +148,20 @@ func (o LogoutOptions) RunLogout() error {
144148
return nil
145149
}
146150

147-
func (o LogoutOptions) deleteTokenFromConfig() (bool, error) {
151+
func (o LogoutOptions) deleteTokenFromConfig() error {
148152
newConfig := *o.StartingKubeConfig
149-
tokenDeleted := false
150153

151154
for key, value := range newConfig.AuthInfos {
152155
if value.Token == o.Config.BearerToken {
153156
value.Token = ""
154157
newConfig.AuthInfos[key] = value
155-
tokenDeleted = true
156158
// don't break, its possible that more than one user stanza has the same token.
157159
}
158160
}
159161

160162
if err := kclientcmd.ModifyConfig(o.PathOptions, newConfig, true); err != nil {
161-
return tokenDeleted, err
163+
return err
162164
}
163165

164-
return tokenDeleted, nil
166+
return nil
165167
}

0 commit comments

Comments
 (0)