Skip to content
This repository was archived by the owner on May 24, 2024. It is now read-only.

Commit 6bbfdb8

Browse files
author
Obaro
authored
Merge pull request #82 from LF-Engineering/username-aff-bug
Fix identity by username bug
2 parents af51353 + 90f6eb9 commit 6bbfdb8

File tree

7 files changed

+48
-34
lines changed

7 files changed

+48
-34
lines changed

affiliation/dto.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ type UniqueIdentityFullProfile struct {
7676
UUID string `json:"uuid,omitempty"`
7777
}
7878

79+
// ProfileByUsernameResponse ...
80+
type ProfileByUsernameResponse struct {
81+
Profile []*UniqueIdentityFullProfile `json:"profiles"`
82+
}
83+
7984
// Enrollments ...
8085
type Enrollments struct {
8186
Organization *Organization `json:"organization,omitempty"`

affiliation/identity.go

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ type SlackProvider interface {
4242

4343
// Auth0ClientProvider ...
4444
type Auth0ClientProvider interface {
45-
GetToken() (string, error)
45+
GetToken(validateTokenRequired bool) (string, error)
4646
}
4747

4848
// Affiliation struct
@@ -81,7 +81,7 @@ func (a *Affiliation) AddIdentity(identity *Identity) bool {
8181
log.Println("AddIdentity: Identity is nil")
8282
return false
8383
}
84-
token, err := a.auth0ClientProvider.GetToken()
84+
token, err := a.auth0ClientProvider.GetToken(true)
8585
if err != nil {
8686
log.Println(err)
8787
}
@@ -128,7 +128,7 @@ func (a *Affiliation) GetIdentity(uuid string) *Identity {
128128
log.Println("GetIdentity: uuid is empty")
129129
return nil
130130
}
131-
token, err := a.auth0ClientProvider.GetToken()
131+
token, err := a.auth0ClientProvider.GetToken(true)
132132
if err != nil {
133133
log.Println(err)
134134
}
@@ -156,7 +156,7 @@ func (a *Affiliation) GetOrganizations(uuid, projectSlug string) *[]Enrollment {
156156
if uuid == "" || projectSlug == "" {
157157
return nil
158158
}
159-
token, err := a.auth0ClientProvider.GetToken()
159+
token, err := a.auth0ClientProvider.GetToken(true)
160160
if err != nil {
161161
log.Println(err)
162162
}
@@ -201,7 +201,7 @@ func (a *Affiliation) GetProfile(uuid, projectSlug string) *ProfileResponse {
201201
if uuid == "" || projectSlug == "" {
202202
return nil
203203
}
204-
token, err := a.auth0ClientProvider.GetToken()
204+
token, err := a.auth0ClientProvider.GetToken(true)
205205
if err != nil {
206206
log.Println(err)
207207
}
@@ -231,7 +231,7 @@ func (a *Affiliation) GetIdentityByUser(key string, value string) (*AffIdentity,
231231
nilKeyOrValueErr := "GetIdentityByUser: key or value is null"
232232
return nil, fmt.Errorf(nilKeyOrValueErr)
233233
}
234-
token, err := a.auth0ClientProvider.GetToken()
234+
token, err := a.auth0ClientProvider.GetToken(true)
235235
if err != nil {
236236
log.Println(err)
237237
return nil, err
@@ -341,7 +341,7 @@ func (a *Affiliation) GetProfileByUsername(username string, projectSlug string)
341341
return nil, fmt.Errorf(nilKeyOrValueErr)
342342
}
343343

344-
token, err := a.auth0ClientProvider.GetToken()
344+
token, err := a.auth0ClientProvider.GetToken(false)
345345
if err != nil {
346346
log.Println(err)
347347
return nil, err
@@ -360,28 +360,33 @@ func (a *Affiliation) GetProfileByUsername(username string, projectSlug string)
360360
return nil, errors.New("user not found")
361361
}
362362

363-
var profile UniqueIdentityFullProfile
364-
err = json.Unmarshal(res, &profile)
363+
var response ProfileByUsernameResponse
364+
err = json.Unmarshal(res, &response)
365365
if err != nil {
366366
return nil, err
367367
}
368+
369+
profile := response.Profile[0]
368370
var identity AffIdentity
369371

370372
for _, value := range profile.Identities {
371373
if value.Source == "github" {
372374
profileIdentity := value
373375
identity.UUID = profileIdentity.UUID
374-
if profileIdentity.Name != nil {
375-
identity.Name = *profileIdentity.Name
376-
} else {
377-
identity.Name = unknown
378-
}
379-
380376
if profileIdentity.Email != nil {
381377
identity.Email = *profileIdentity.Email
382378
}
383379

384380
identity.ID = &profileIdentity.ID
381+
382+
if profile.Profile != nil {
383+
identity.IsBot = profile.Profile.IsBot
384+
identity.Name = *profile.Profile.Name
385+
} else if profileIdentity.Name != nil {
386+
identity.Name = *profileIdentity.Name
387+
} else {
388+
identity.Name = unknown
389+
}
385390
}
386391
}
387392

@@ -393,10 +398,6 @@ func (a *Affiliation) GetProfileByUsername(username string, projectSlug string)
393398

394399
identity.Username = username
395400

396-
if profile.Profile != nil {
397-
identity.IsBot = profile.Profile.IsBot
398-
}
399-
400401
if profile.Enrollments == nil {
401402
identity.OrgName = &unknown
402403
identity.MultiOrgNames = make([]string, 0)

auth0/token.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7-
"github.com/LF-Engineering/dev-analytics-libraries/elastic"
87
"log"
98
"strings"
109
"time"
1110

11+
"github.com/LF-Engineering/dev-analytics-libraries/elastic"
12+
1213
"github.com/dgrijalva/jwt-go"
1314
)
1415

@@ -74,7 +75,7 @@ func NewAuth0Client(env,
7475
}
7576

7677
// GetToken ...
77-
func (a *ClientProvider) GetToken() (string, error) {
78+
func (a *ClientProvider) GetToken(input bool) (string, error) {
7879
authToken, err := a.getCachedToken()
7980
if err != nil {
8081
log.Println(err)
@@ -84,14 +85,21 @@ func (a *ClientProvider) GetToken() (string, error) {
8485
if authToken == "" {
8586
return authToken, errors.New("cached token is empty")
8687
}
88+
if input {
89+
// check token validity
90+
ok, _, err := a.isValid(authToken)
91+
if err != nil {
92+
log.Println(err)
93+
return "", err
94+
}
8795

88-
// check token validity
89-
ok, _, err := a.isValid(authToken)
90-
if ok {
91-
return authToken, nil
92-
}
96+
if ok {
97+
return authToken, nil
98+
}
9399

94-
return authToken, errors.New("cached token is not valid")
100+
return authToken, errors.New("cached token is not valid")
101+
}
102+
return authToken, nil
95103
}
96104

97105
func (a *ClientProvider) generateToken() (string, error) {

orgs/mocks/auth0_client_provider.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

orgs/organization.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717

1818
// Auth0ClientProvider ...
1919
type Auth0ClientProvider interface {
20-
GetToken() (string, error)
20+
GetToken(validateTokenRequired bool) (string, error)
2121
}
2222

2323
// HTTPClientProvider ...
@@ -62,7 +62,7 @@ func (o *Org) SearchOrganization(name string, pageSize string, offset string) (*
6262
log.Println("SearchOrganization: name param is empty")
6363
return nil, errors.New("SearchOrganization: name param is empty")
6464
}
65-
token, err := o.auth0Client.GetToken()
65+
token, err := o.auth0Client.GetToken(true)
6666
if err != nil {
6767
log.Println(err)
6868
return nil, err
@@ -98,7 +98,7 @@ func (o *Org) LookupOrganization(name string) (*Organization, error) {
9898
log.Println("LookupOrganization: name param is empty")
9999
return nil, errors.New("LookupOrganization: name param is empty")
100100
}
101-
token, err := o.auth0Client.GetToken()
101+
token, err := o.auth0Client.GetToken(true)
102102
if err != nil {
103103
log.Println(err)
104104
return nil, err

users/mocks/auth0_client_provider.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

users/user.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717

1818
// Auth0ClientProvider ...
1919
type Auth0ClientProvider interface {
20-
GetToken() (string, error)
20+
GetToken(validateTokenRequired bool) (string, error)
2121
}
2222

2323
// HTTPClientProvider ...
@@ -58,7 +58,7 @@ type Client struct {
5858

5959
// List ...
6060
func (u *Client) List(email string, pageSize string, offset string) (*ListResponse, error) {
61-
token, err := u.auth0Client.GetToken()
61+
token, err := u.auth0Client.GetToken(true)
6262
if err != nil {
6363
log.Println("users.List", err)
6464
return nil, err

0 commit comments

Comments
 (0)