···123 }
124125 userId, hasSession := session.GetUserID(r.Context())
126-127 // store token and get uid
128- userID, err := o.tokenReceiver.SetAccessToken(token.AccessToken, userId, hasSession)
129 if err != nil {
130 log.Printf("OAuth2 Callback Info: TokenReceiver did not return a valid user ID for token: %s...", token.AccessToken[:min(10, len(token.AccessToken))])
131 }
···123 }
124125 userId, hasSession := session.GetUserID(r.Context())
0126 // store token and get uid
127+ userID, err := o.tokenReceiver.SetAccessToken(token.AccessToken, token.RefreshToken, userId, hasSession)
128 if err != nil {
129 log.Printf("OAuth2 Callback Info: TokenReceiver did not return a valid user ID for token: %s...", token.AccessToken[:min(10, len(token.AccessToken))])
130 }
+1-1
oauth/service.go
···16type TokenReceiver interface {
17 // stores the access token in the db
18 // if there is a session, will associate the token with the session
19- SetAccessToken(token string, currentId int64, hasSession bool) (int64, error)
20}
···16type TokenReceiver interface {
17 // stores the access token in the db
18 // if there is a session, will associate the token with the session
19+ SetAccessToken(token string, refreshToken string, currentId int64, hasSession bool) (int64, error)
20}
+5-5
service/spotify/spotify.go
···117 return nil
118}
119120-func (s *SpotifyService) SetAccessToken(token string, userId int64, hasSession bool) (int64, error) {
121- userID, err := s.identifyAndStoreUser(token, userId, hasSession)
122 if err != nil {
123 log.Printf("Error identifying and storing user: %v", err)
124 return 0, err
···126 return userID, nil
127}
128129-func (s *SpotifyService) identifyAndStoreUser(token string, userId int64, hasSession bool) (int64, error) {
130 userProfile, err := s.fetchSpotifyProfile(token)
131 if err != nil {
132 log.Printf("Error fetching Spotify profile: %v", err)
···151 return 0, fmt.Errorf("user does not seem to exist")
152 } else {
153 // overwrite prev user
154- user, err = s.DB.AddSpotifySession(userId, userProfile.DisplayName, userProfile.Email, userProfile.ID, token, "", tokenExpiryTime)
155 if err != nil {
156 log.Printf("Error adding Spotify session for user ID %d: %v", userId, err)
157 return 0, err
158 }
159 }
160 } else {
161- err = s.DB.UpdateUserToken(user.ID, token, "", tokenExpiryTime)
162 if err != nil {
163 // for now log and continue
164 log.Printf("Error updating user token for user ID %d: %v", user.ID, err)
···117 return nil
118}
119120+func (s *SpotifyService) SetAccessToken(token string, refreshToken string, userId int64, hasSession bool) (int64, error) {
121+ userID, err := s.identifyAndStoreUser(token, refreshToken, userId, hasSession)
122 if err != nil {
123 log.Printf("Error identifying and storing user: %v", err)
124 return 0, err
···126 return userID, nil
127}
128129+func (s *SpotifyService) identifyAndStoreUser(token string, refreshToken string, userId int64, hasSession bool) (int64, error) {
130 userProfile, err := s.fetchSpotifyProfile(token)
131 if err != nil {
132 log.Printf("Error fetching Spotify profile: %v", err)
···151 return 0, fmt.Errorf("user does not seem to exist")
152 } else {
153 // overwrite prev user
154+ user, err = s.DB.AddSpotifySession(userId, userProfile.DisplayName, userProfile.Email, userProfile.ID, token, refreshToken, tokenExpiryTime)
155 if err != nil {
156 log.Printf("Error adding Spotify session for user ID %d: %v", userId, err)
157 return 0, err
158 }
159 }
160 } else {
161+ err = s.DB.UpdateUserToken(user.ID, token, refreshToken, tokenExpiryTime)
162 if err != nil {
163 // for now log and continue
164 log.Printf("Error updating user token for user ID %d: %v", user.ID, err)