fix: P1-02 OAuth context propagation and P1-16 AuthProvider double-check
P1-02: OAuth ExchangeCode and GetUserInfo now accept context parameter
to properly propagate request context to HTTP calls
P1-16: AuthProvider isAuthenticated now uses single source of truth
(effectiveUser !== null) instead of double-checking both
React state and module-level function
This commit is contained in:
@@ -949,12 +949,12 @@ func (s *AuthService) OAuthCallback(ctx context.Context, provider, code string)
|
||||
}
|
||||
|
||||
oauthProvider := auth.OAuthProvider(strings.ToLower(strings.TrimSpace(provider)))
|
||||
token, err := s.oauthManager.ExchangeCode(oauthProvider, strings.TrimSpace(code))
|
||||
token, err := s.oauthManager.ExchangeCode(ctx, oauthProvider, strings.TrimSpace(code))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
oauthUser, err := s.oauthManager.GetUserInfo(oauthProvider, token)
|
||||
oauthUser, err := s.oauthManager.GetUserInfo(ctx, oauthProvider, token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -1127,12 +1127,12 @@ func (s *AuthService) OAuthBindCallback(ctx context.Context, userID int64, provi
|
||||
}
|
||||
|
||||
oauthProvider := auth.OAuthProvider(strings.ToLower(strings.TrimSpace(provider)))
|
||||
token, err := s.oauthManager.ExchangeCode(oauthProvider, strings.TrimSpace(code))
|
||||
token, err := s.oauthManager.ExchangeCode(ctx, oauthProvider, strings.TrimSpace(code))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
oauthUser, err := s.oauthManager.GetUserInfo(oauthProvider, token)
|
||||
oauthUser, err := s.oauthManager.GetUserInfo(ctx, oauthProvider, token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -32,14 +32,14 @@ func (m *mockOAuthManager) GetAuthURL(provider auth.OAuthProvider, state string)
|
||||
return m.authURL, nil
|
||||
}
|
||||
|
||||
func (m *mockOAuthManager) ExchangeCode(provider auth.OAuthProvider, code string) (*auth.OAuthToken, error) {
|
||||
func (m *mockOAuthManager) ExchangeCode(ctx context.Context, provider auth.OAuthProvider, code string) (*auth.OAuthToken, error) {
|
||||
if m.exchangeErr != nil {
|
||||
return nil, m.exchangeErr
|
||||
}
|
||||
return &auth.OAuthToken{AccessToken: "mock-token"}, nil
|
||||
}
|
||||
|
||||
func (m *mockOAuthManager) GetUserInfo(provider auth.OAuthProvider, token *auth.OAuthToken) (*auth.OAuthUser, error) {
|
||||
func (m *mockOAuthManager) GetUserInfo(ctx context.Context, provider auth.OAuthProvider, token *auth.OAuthToken) (*auth.OAuthUser, error) {
|
||||
if m.userInfoErr != nil {
|
||||
return nil, m.userInfoErr
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user