Skip to content

Commit 6f9faed

Browse files
committed
set raw data
1 parent 0eeeed3 commit 6f9faed

File tree

1 file changed

+30
-15
lines changed

1 file changed

+30
-15
lines changed

providers/quickbooks/quickbooks.go

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package quickbooks
22

33
import (
4+
"bytes"
45
"encoding/json"
56
"fmt"
7+
"io"
68
"net/http"
79
"strings"
810

@@ -85,6 +87,10 @@ func (Provider) UnmarshalSession(data string) (goth.Session, error) {
8587

8688
func (p Provider) FetchUser(session goth.Session) (goth.User, error) {
8789
s := session.(*Session)
90+
user := goth.User{
91+
Provider: p.Name(),
92+
}
93+
8894
if s.AccessToken == "" {
8995
return goth.User{}, fmt.Errorf("no access token obtained for session with provider %s", p.Name())
9096
}
@@ -102,33 +108,42 @@ func (p Provider) FetchUser(session goth.Session) (goth.User, error) {
102108
defer resp.Body.Close()
103109

104110
if resp.StatusCode != http.StatusOK {
105-
return goth.User{}, fmt.Errorf("failed to get user info: %d", resp.StatusCode)
111+
return user, fmt.Errorf("failed to get user info: %d", resp.StatusCode)
112+
}
113+
114+
bits, err := io.ReadAll(resp.Body)
115+
if err != nil {
116+
return user, err
106117
}
107118

108-
var userInfo struct {
119+
u := struct {
109120
Sub string `json:"sub"`
110121
Email string `json:"email"`
111122
EmailVerified bool `json:"email_verified"`
112123
Name string `json:"name"`
113124
GivenName string `json:"given_name"`
114125
FamilyName string `json:"family_name"`
126+
}{}
127+
128+
if err := json.NewDecoder(bytes.NewReader(bits)).Decode(&u); err != nil {
129+
return user, err
115130
}
116131

117-
if err := json.NewDecoder(resp.Body).Decode(&userInfo); err != nil {
118-
return goth.User{}, err
132+
user.UserID = u.Sub
133+
user.Email = u.Email
134+
user.Name = u.Name
135+
user.FirstName = u.GivenName
136+
user.LastName = u.FamilyName
137+
user.AccessToken = s.AccessToken
138+
user.RefreshToken = s.RefreshToken
139+
user.ExpiresAt = s.ExpiresAt
140+
141+
err = json.NewDecoder(bytes.NewReader(bits)).Decode(&user.RawData)
142+
if err != nil {
143+
return user, err
119144
}
120145

121-
return goth.User{
122-
Provider: p.Name(),
123-
UserID: userInfo.Sub,
124-
Email: userInfo.Email,
125-
Name: userInfo.Name,
126-
FirstName: userInfo.GivenName,
127-
LastName: userInfo.FamilyName,
128-
AccessToken: s.AccessToken,
129-
RefreshToken: s.RefreshToken,
130-
ExpiresAt: s.ExpiresAt,
131-
}, nil
146+
return user, err
132147
}
133148

134149
func (Provider) Debug(bool) {}

0 commit comments

Comments
 (0)