`gh auth refresh` exists to make it simpler for users to refresh their tokens on expiration/scope mismatch, but help messages only suggest using it in limited scenarios, and not in a common case of a token expiring and the user receiving a 401 error. Now, the auth flow will detect this case, and for refreshable tokens (namely, tokens created by logging in with `gh auth login` in the first place), it will suggest using `gh auth refresh` for these cases.
18 lines
529 B
Go
18 lines
529 B
Go
package shared
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/cli/cli/v2/internal/gh"
|
|
)
|
|
|
|
// AuthTokenRefreshable reports whether the token is stored by gh and can be
|
|
// renewed with `gh auth refresh`.
|
|
func AuthTokenRefreshable(token, src string) bool {
|
|
return token != "" && !strings.HasSuffix(src, "_TOKEN") && strings.HasPrefix(token, "gho_")
|
|
}
|
|
|
|
func AuthTokenWriteable(authCfg gh.AuthConfig, hostname string) (string, bool) {
|
|
token, src := authCfg.ActiveToken(hostname)
|
|
return src, (token == "" || !strings.HasSuffix(src, "_TOKEN"))
|
|
}
|