@@ -53,6 +53,13 @@ func NewGitHubProvider(p *ProviderData) *GitHubProvider {
53 return &GitHubProvider{ProviderData: p}
53 return &GitHubProvider{ProviderData: p}
56+func getGitHubHeader(accessToken string) http.Header {
57+ header := make(http.Header)
58+ header.Set("Accept", "application/vnd.github.v3+json")
59+ header.Set("Authorization", fmt.Sprintf("token %s", accessToken))
56// SetOrgTeam adds GitHub org reading parameters to the OAuth2 scope
63// SetOrgTeam adds GitHub org reading parameters to the OAuth2 scope
57func (p *GitHubProvider) SetOrgTeam(org, team string) {
64func (p *GitHubProvider) SetOrgTeam(org, team string) {
58 p.Org = org
65 p.Org = org
@@ -87,8 +94,7 @@ func (p *GitHubProvider) hasOrg(accessToken string) (bool, error) {
87 RawQuery: params.Encode(),
94 RawQuery: params.Encode(),
89 req, _ := http.NewRequest("GET", endpoint.String(), nil)
96 req, _ := http.NewRequest("GET", endpoint.String(), nil)
90− req.Header.Set("Accept", "application/vnd.github.v3+json")
97+ req.Header = getGitHubHeader(accessToken)
91− req.Header.Set("Authorization", fmt.Sprintf("token %s", accessToken))
92 resp, err := http.DefaultClient.Do(req)
98 resp, err := http.DefaultClient.Do(req)
93 if err != nil {
99 if err != nil {
94 return false, err
100 return false, err
@@ -164,8 +170,7 @@ func (p *GitHubProvider) hasOrgAndTeam(accessToken string) (bool, error) {
166 req, _ := http.NewRequest("GET", endpoint.String(), nil)
172 req, _ := http.NewRequest("GET", endpoint.String(), nil)
167− req.Header.Set("Accept", "application/vnd.github.v3+json")
173+ req.Header = getGitHubHeader(accessToken)
168− req.Header.Set("Authorization", fmt.Sprintf("token %s", accessToken))
169 resp, err := http.DefaultClient.Do(req)
174 resp, err := http.DefaultClient.Do(req)
170 if err != nil {
175 if err != nil {
171 return false, err
176 return false, err
@@ -283,7 +288,7 @@ func (p *GitHubProvider) GetEmailAddress(s *sessions.SessionState) (string, erro
283 Path: path.Join(p.ValidateURL.Path, "/user/emails"),
288 Path: path.Join(p.ValidateURL.Path, "/user/emails"),
285 req, _ := http.NewRequest("GET", endpoint.String(), nil)
290 req, _ := http.NewRequest("GET", endpoint.String(), nil)
286− req.Header.Set("Authorization", fmt.Sprintf("token %s", s.AccessToken))
291+ req.Header = getGitHubHeader(s.AccessToken)
287 resp, err := http.DefaultClient.Do(req)
292 resp, err := http.DefaultClient.Do(req)
288 if err != nil {
293 if err != nil {
289 return "", err
294 return "", err
@@ -336,7 +341,7 @@ func (p *GitHubProvider) GetUserName(s *sessions.SessionState) (string, error) {
336 return "", fmt.Errorf("could not create new GET request: %v", err)
341 return "", fmt.Errorf("could not create new GET request: %v", err)
339− req.Header.Set("Authorization", fmt.Sprintf("token %s", s.AccessToken))
344+ req.Header = getGitHubHeader(s.AccessToken)
340 resp, err := http.DefaultClient.Do(req)
345 resp, err := http.DefaultClient.Do(req)
341 if err != nil {
346 if err != nil {
342 return "", err
347 return "", err
@@ -361,3 +366,8 @@ func (p *GitHubProvider) GetUserName(s *sessions.SessionState) (string, error) {
362 return user.Login, nil
367 return user.Login, nil
370+// ValidateSessionState validates the AccessToken
371+func (p *GitHubProvider) ValidateSessionState(s *sessions.SessionState) bool {
372+ return validateToken(p, s.AccessToken, getGitHubHeader(s.AccessToken))