Ask for an additional read:org OAuth scope

This is to facilitate:
- requesting teams for review on `pr create`
- allowing `repo create ORG/REPO --team TEAM`
This commit is contained in:
Mislav Marohnić 2020-04-15 14:28:07 +02:00
parent 82bd7b97cf
commit 14ce1f99a7
2 changed files with 9 additions and 2 deletions

View file

@ -11,6 +11,7 @@ import (
"net/http" "net/http"
"net/url" "net/url"
"os" "os"
"strings"
"github.com/cli/cli/pkg/browser" "github.com/cli/cli/pkg/browser"
) )
@ -29,6 +30,7 @@ type OAuthFlow struct {
Hostname string Hostname string
ClientID string ClientID string
ClientSecret string ClientSecret string
Scopes []string
WriteSuccessHTML func(io.Writer) WriteSuccessHTML func(io.Writer)
VerboseStream io.Writer VerboseStream io.Writer
} }
@ -45,11 +47,15 @@ func (oa *OAuthFlow) ObtainAccessToken() (accessToken string, err error) {
} }
port := listener.Addr().(*net.TCPAddr).Port port := listener.Addr().(*net.TCPAddr).Port
scopes := "repo"
if oa.Scopes != nil {
scopes = strings.Join(oa.Scopes, " ")
}
q := url.Values{} q := url.Values{}
q.Set("client_id", oa.ClientID) q.Set("client_id", oa.ClientID)
q.Set("redirect_uri", fmt.Sprintf("http://127.0.0.1:%d/callback", port)) q.Set("redirect_uri", fmt.Sprintf("http://127.0.0.1:%d/callback", port))
// TODO: make scopes configurable q.Set("scope", scopes)
q.Set("scope", "repo")
q.Set("state", state) q.Set("state", state)
startURL := fmt.Sprintf("https://%s/login/oauth/authorize?%s", oa.Hostname, q.Encode()) startURL := fmt.Sprintf("https://%s/login/oauth/authorize?%s", oa.Hostname, q.Encode())

View file

@ -36,6 +36,7 @@ func setupConfigFile(filename string) (*configEntry, error) {
Hostname: oauthHost, Hostname: oauthHost,
ClientID: oauthClientID, ClientID: oauthClientID,
ClientSecret: oauthClientSecret, ClientSecret: oauthClientSecret,
Scopes: []string{"repo", "read:org"},
WriteSuccessHTML: func(w io.Writer) { WriteSuccessHTML: func(w io.Writer) {
fmt.Fprintln(w, oauthSuccessPage) fmt.Fprintln(w, oauthSuccessPage)
}, },