@@ -53,6 +53,13 @@ func NewGitHubProvider(p *ProviderData) *GitHubProvider {
5353 return &GitHubProvider{ProviderData: p}
5454}
5555
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))
60+ return header
61+}
62+
5663// SetOrgTeam adds GitHub org reading parameters to the OAuth2 scope
5764func (p *GitHubProvider) SetOrgTeam(org, team string) {
5865 p.Org = org
@@ -87,8 +94,7 @@ func (p *GitHubProvider) hasOrg(accessToken string) (bool, error) {
8794 RawQuery: params.Encode(),
8895 }
8996 req, _ := http.NewRequest("GET", endpoint.String(), nil)
90− req.Header.Set("Accept", "application/vnd.github.v3+json")
91− req.Header.Set("Authorization", fmt.Sprintf("token %s", accessToken))
97+ req.Header = getGitHubHeader(accessToken)
9298 resp, err := http.DefaultClient.Do(req)
9399 if err != nil {
94100 return false, err
@@ -164,8 +170,7 @@ func (p *GitHubProvider) hasOrgAndTeam(accessToken string) (bool, error) {
164170 }
165171
166172 req, _ := http.NewRequest("GET", endpoint.String(), nil)
167− req.Header.Set("Accept", "application/vnd.github.v3+json")
168− req.Header.Set("Authorization", fmt.Sprintf("token %s", accessToken))
173+ req.Header = getGitHubHeader(accessToken)
169174 resp, err := http.DefaultClient.Do(req)
170175 if err != nil {
171176 return false, err
@@ -283,7 +288,7 @@ func (p *GitHubProvider) GetEmailAddress(s *sessions.SessionState) (string, erro
283288 Path: path.Join(p.ValidateURL.Path, "/user/emails"),
284289 }
285290 req, _ := http.NewRequest("GET", endpoint.String(), nil)
286− req.Header.Set("Authorization", fmt.Sprintf("token %s", s.AccessToken))
291+ req.Header = getGitHubHeader(s.AccessToken)
287292 resp, err := http.DefaultClient.Do(req)
288293 if err != nil {
289294 return "", err
@@ -336,7 +341,7 @@ func (p *GitHubProvider) GetUserName(s *sessions.SessionState) (string, error) {
336341 return "", fmt.Errorf("could not create new GET request: %v", err)
337342 }
338343
339− req.Header.Set("Authorization", fmt.Sprintf("token %s", s.AccessToken))
344+ req.Header = getGitHubHeader(s.AccessToken)
340345 resp, err := http.DefaultClient.Do(req)
341346 if err != nil {
342347 return "", err
@@ -361,3 +366,8 @@ func (p *GitHubProvider) GetUserName(s *sessions.SessionState) (string, error) {
361366
362367 return user.Login, nil
363368}
369+
370+// ValidateSessionState validates the AccessToken
371+func (p *GitHubProvider) ValidateSessionState(s *sessions.SessionState) bool {
372+ return validateToken(p, s.AccessToken, getGitHubHeader(s.AccessToken))
373+}