Skip to content

Commit 7069684

Browse files
committed
#205 err should be returned at the end
1 parent 8cd1fd5 commit 7069684

File tree

3 files changed

+34
-36
lines changed

3 files changed

+34
-36
lines changed

handlers/common/common.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ var (
1313
log = cfg.Cfg.Logger
1414
)
1515

16-
func PrepareTokensAndClient(r *http.Request, ptokens *structs.PTokens, setpid bool) (error, *http.Client, *oauth2.Token) {
16+
// PrepareTokensAndClient setup the client, usually for a UserInfo request
17+
func PrepareTokensAndClient(r *http.Request, ptokens *structs.PTokens, setpid bool) (*http.Client, *oauth2.Token, error) {
1718
providerToken, err := cfg.OAuthClient.Exchange(context.TODO(), r.URL.Query().Get("code"))
1819
if err != nil {
19-
return err, nil, nil
20+
return nil, nil, err
2021
}
2122
ptokens.PAccessToken = providerToken.AccessToken
2223

@@ -33,11 +34,11 @@ func PrepareTokensAndClient(r *http.Request, ptokens *structs.PTokens, setpid bo
3334
log.Debugf("ptokens: %+v", ptokens)
3435

3536
client := cfg.OAuthClient.Client(context.TODO(), providerToken)
36-
return err, client, providerToken
37+
return client, providerToken, err
3738
}
3839

40+
// MapClaims populate CustomClaims from userInfo for each configure claims header
3941
func MapClaims(claims []byte, customClaims *structs.CustomClaims) error {
40-
// Create a struct that contains the claims that we want to store from the config.
4142
var f interface{}
4243
err := json.Unmarshal(claims, &f)
4344
if err != nil {

handlers/github/github.go

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -81,22 +81,20 @@ func (me Provider) GetUserInfo(r *http.Request, user *structs.User, customClaims
8181
org, team := toOrgAndTeam(orgAndTeam)
8282
if org != "" {
8383
log.Info(org)
84-
var (
85-
e error
86-
isMember bool
87-
)
84+
var err error
85+
isMember := false
8886
if team != "" {
89-
e, isMember = getTeamMembershipStateFromGitHub(client, user, org, team, ptoken)
87+
isMember, err = getTeamMembershipStateFromGitHub(client, user, org, team, ptoken)
9088
} else {
91-
e, isMember = getOrgMembershipStateFromGitHub(client, user, org, ptoken)
89+
isMember, err = getOrgMembershipStateFromGitHub(client, user, org, ptoken)
9290
}
93-
if e != nil {
94-
return e
95-
} else {
96-
if isMember {
97-
user.TeamMemberships = append(user.TeamMemberships, orgAndTeam)
98-
}
91+
if err != nil {
92+
return err
93+
}
94+
if isMember {
95+
user.TeamMemberships = append(user.TeamMemberships, orgAndTeam)
9996
}
97+
10098
} else {
10199
log.Warnf("Invalid org/team format in %s: must be written as <orgId>/<teamSlug>", orgAndTeam)
102100
}
@@ -108,12 +106,12 @@ func (me Provider) GetUserInfo(r *http.Request, user *structs.User, customClaims
108106
return nil
109107
}
110108

111-
func getOrgMembershipStateFromGitHub(client *http.Client, user *structs.User, orgId string, ptoken *oauth2.Token) (rerr error, isMember bool) {
112-
replacements := strings.NewReplacer(":org_id", orgId, ":username", user.Username)
109+
func getOrgMembershipStateFromGitHub(client *http.Client, user *structs.User, orgID string, ptoken *oauth2.Token) (isMember bool, rerr error) {
110+
replacements := strings.NewReplacer(":org_id", orgID, ":username", user.Username)
113111
orgMembershipResp, err := client.Get(replacements.Replace(cfg.GenOAuth.UserOrgURL) + ptoken.AccessToken)
114112
if err != nil {
115113
log.Error(err)
116-
return err, false
114+
return false, err
117115
}
118116

119117
if orgMembershipResp.StatusCode == 302 {
@@ -126,22 +124,22 @@ func getOrgMembershipStateFromGitHub(client *http.Client, user *structs.User, or
126124

127125
if orgMembershipResp.StatusCode == 204 {
128126
log.Debug("getOrgMembershipStateFromGitHub isMember: true")
129-
return nil, true
127+
return true, nil
130128
} else if orgMembershipResp.StatusCode == 404 {
131129
log.Debug("getOrgMembershipStateFromGitHub isMember: false")
132-
return nil, false
130+
return false, nil
133131
} else {
134132
log.Errorf("getOrgMembershipStateFromGitHub: unexpected status code %d", orgMembershipResp.StatusCode)
135-
return errors.New("Unexpected response status " + orgMembershipResp.Status), false
133+
return false, errors.New("Unexpected response status " + orgMembershipResp.Status)
136134
}
137135
}
138136

139-
func getTeamMembershipStateFromGitHub(client *http.Client, user *structs.User, orgId string, team string, ptoken *oauth2.Token) (rerr error, isMember bool) {
140-
replacements := strings.NewReplacer(":org_id", orgId, ":team_slug", team, ":username", user.Username)
137+
func getTeamMembershipStateFromGitHub(client *http.Client, user *structs.User, orgID string, team string, ptoken *oauth2.Token) (isMember bool, rerr error) {
138+
replacements := strings.NewReplacer(":org_id", orgID, ":team_slug", team, ":username", user.Username)
141139
membershipStateResp, err := client.Get(replacements.Replace(cfg.GenOAuth.UserTeamURL) + ptoken.AccessToken)
142140
if err != nil {
143141
log.Error(err)
144-
return err, false
142+
return false, err
145143
}
146144
defer func() {
147145
if err := membershipStateResp.Body.Close(); err != nil {
@@ -154,16 +152,15 @@ func getTeamMembershipStateFromGitHub(client *http.Client, user *structs.User, o
154152
ghTeamState := structs.GitHubTeamMembershipState{}
155153
if err = json.Unmarshal(data, &ghTeamState); err != nil {
156154
log.Error(err)
157-
return err, false
155+
return false, err
158156
}
159-
log.Debug("getTeamMembershipStateFromGitHub ghTeamState")
160-
log.Debug(ghTeamState)
161-
return nil, ghTeamState.State == "active"
157+
log.Debugf("getTeamMembershipStateFromGitHub ghTeamState %s", ghTeamState)
158+
return ghTeamState.State == "active", nil
162159
} else if membershipStateResp.StatusCode == 404 {
163160
log.Debug("getTeamMembershipStateFromGitHub isMember: false")
164-
return nil, false
161+
return false, err
165162
} else {
166163
log.Errorf("getTeamMembershipStateFromGitHub: unexpected status code %d", membershipStateResp.StatusCode)
167-
return errors.New("Unexpected response status " + membershipStateResp.Status), false
164+
return false, errors.New("Unexpected response status " + membershipStateResp.Status)
168165
}
169166
}

handlers/github/github_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func TestGetTeamMembershipStateFromGitHubActive(t *testing.T) {
9797
setUp()
9898
mockResponse(regexMatcher(".*"), http.StatusOK, map[string]string{}, []byte("{\"state\": \"active\"}"))
9999

100-
err, isMember := getTeamMembershipStateFromGitHub(client, user, "org1", "team1", token)
100+
isMember, err := getTeamMembershipStateFromGitHub(client, user, "org1", "team1", token)
101101

102102
assert.Nil(t, err)
103103
assert.True(t, isMember)
@@ -107,7 +107,7 @@ func TestGetTeamMembershipStateFromGitHubInactive(t *testing.T) {
107107
setUp()
108108
mockResponse(regexMatcher(".*"), http.StatusOK, map[string]string{}, []byte("{\"state\": \"inactive\"}"))
109109

110-
err, isMember := getTeamMembershipStateFromGitHub(client, user, "org1", "team1", token)
110+
isMember, err := getTeamMembershipStateFromGitHub(client, user, "org1", "team1", token)
111111

112112
assert.Nil(t, err)
113113
assert.False(t, isMember)
@@ -117,7 +117,7 @@ func TestGetTeamMembershipStateFromGitHubNotAMember(t *testing.T) {
117117
setUp()
118118
mockResponse(regexMatcher(".*"), http.StatusNotFound, map[string]string{}, []byte(""))
119119

120-
err, isMember := getTeamMembershipStateFromGitHub(client, user, "org1", "team1", token)
120+
isMember, err := getTeamMembershipStateFromGitHub(client, user, "org1", "team1", token)
121121

122122
assert.Nil(t, err)
123123
assert.False(t, isMember)
@@ -127,7 +127,7 @@ func TestGetOrgMembershipStateFromGitHubNotFound(t *testing.T) {
127127
setUp()
128128
mockResponse(regexMatcher(".*"), http.StatusNotFound, map[string]string{}, []byte(""))
129129

130-
err, isMember := getOrgMembershipStateFromGitHub(client, user, "myorg", token)
130+
isMember, err := getOrgMembershipStateFromGitHub(client, user, "myorg", token)
131131

132132
assert.Nil(t, err)
133133
assert.False(t, isMember)
@@ -143,7 +143,7 @@ func TestGetOrgMembershipStateFromGitHubNoOrgAccess(t *testing.T) {
143143
mockResponse(regexMatcher(".*orgs/myorg/members.*"), http.StatusFound, map[string]string{"Location": location}, []byte(""))
144144
mockResponse(regexMatcher(".*orgs/myorg/public_members.*"), http.StatusNoContent, map[string]string{}, []byte(""))
145145

146-
err, isMember := getOrgMembershipStateFromGitHub(client, user, "myorg", token)
146+
isMember, err := getOrgMembershipStateFromGitHub(client, user, "myorg", token)
147147

148148
assert.Nil(t, err)
149149
assert.True(t, isMember)

0 commit comments

Comments
 (0)