Skip checking keyring for token in certain scenarios (#7169)
This commit is contained in:
parent
d905165875
commit
9596fd5368
4 changed files with 25 additions and 9 deletions
|
|
@ -140,6 +140,22 @@ func (c *AuthConfig) Token(hostname string) (string, string) {
|
|||
return token, source
|
||||
}
|
||||
|
||||
// HasEnvToken checks whether the current env or config contains a token
|
||||
func (c *AuthConfig) HasEnvToken() bool {
|
||||
// This will check if there are any environment variable
|
||||
// authentication tokens set for enterprise hosts.
|
||||
// Any non-github.com hostname is fine here
|
||||
hostname := "example.com"
|
||||
if c.tokenOverride != nil {
|
||||
token, _ := c.tokenOverride(hostname)
|
||||
if token != "" {
|
||||
return true
|
||||
}
|
||||
}
|
||||
token, _ := ghAuth.TokenFromEnvOrConfig(hostname)
|
||||
return token != ""
|
||||
}
|
||||
|
||||
// SetToken will override any token resolution and return the given
|
||||
// token and source for all calls to Token. Use for testing purposes only.
|
||||
func (c *AuthConfig) SetToken(token, source string) {
|
||||
|
|
|
|||
|
|
@ -82,11 +82,9 @@ func (rr *remoteResolver) Resolver() func() (context.Remotes, error) {
|
|||
}
|
||||
|
||||
if len(cachedRemotes) == 0 {
|
||||
// Any non-github.com hostname is fine here
|
||||
dummyHostname := "example.com"
|
||||
if isHostEnv(src) {
|
||||
return nil, fmt.Errorf("none of the git remotes configured for this repository correspond to the %s environment variable. Try adding a matching remote or unsetting the variable.", src)
|
||||
} else if v, _ := cfg.Authentication().Token(dummyHostname); v != "" {
|
||||
} else if cfg.Authentication().HasEnvToken() {
|
||||
return nil, errors.New("set the GH_HOST environment variable to specify which GitHub host to use")
|
||||
}
|
||||
return nil, errors.New("none of the git remotes configured for this repository point to a known GitHub host. To tell gh about a new GitHub host, please use `gh auth login`")
|
||||
|
|
|
|||
|
|
@ -14,12 +14,7 @@ func DisableAuthCheck(cmd *cobra.Command) {
|
|||
}
|
||||
|
||||
func CheckAuth(cfg config.Config) bool {
|
||||
// This will check if there are any environment variable
|
||||
// authentication tokens set for enterprise hosts.
|
||||
// Any non-github.com hostname is fine here
|
||||
dummyHostname := "example.com"
|
||||
token, _ := cfg.Authentication().Token(dummyHostname)
|
||||
if token != "" {
|
||||
if cfg.Authentication().HasEnvToken() {
|
||||
return true
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,6 +36,13 @@ func Test_CheckAuth(t *testing.T) {
|
|||
},
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
name: "enterprise token",
|
||||
cfgStubs: func(c *config.ConfigMock) {
|
||||
t.Setenv("GH_ENTERPRISE_TOKEN", "token")
|
||||
},
|
||||
expected: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue