Add OAuth provider authentication support#14
Merged
chriswritescode-dev merged 7 commits intomainfrom Dec 8, 2025
Merged
Conversation
added 7 commits
December 7, 2025 17:33
- Add OAuth routes and API endpoints for authorize/callback flows - Create OAuthAuthorizeDialog and OAuthCallbackDialog components - Extend ProviderSettings to support both OAuth and API key auth - Add OAuth credential support to auth service - Update shared schemas with OAuth request/response types - Support both 'auto' and 'code' OAuth flows - Maintain backward compatibility with existing API key authentication Backend: - backend/src/routes/oauth.ts (new) - backend/src/services/auth.ts (extended) - backend/src/index.ts (route registration) Frontend: - frontend/src/api/oauth.ts (new) - frontend/src/components/settings/OAuthAuthorizeDialog.tsx (new) - frontend/src/components/settings/OAuthCallbackDialog.tsx (new) - frontend/src/components/settings/ProviderSettings.tsx (enhanced) Shared: - shared/src/schemas/auth.ts (OAuth schemas)
- Add comprehensive error handling for OAuth failures with specific error messages - Implement OAuth token status checking and expiration monitoring - Add token refresh preparation with 5-minute expiration buffer - Enhance OAuth API client with detailed error reporting - Update OAuth routes to include database parameter and token status endpoint - Add complete OAuth documentation to README with setup guide - Improve user experience with clear error messages and troubleshooting steps - Support both auto and code OAuth flows for different providers - Maintain backward compatibility with existing API key authentication Error Handling: - Specific error messages for invalid codes, expiration, access denied - Graceful fallback for server errors and network issues - User-friendly error display in OAuth dialogs Token Management: - Token status endpoint for checking credential validity - Expiration monitoring with automatic refresh preparation - Secure storage of OAuth credentials alongside API keys Documentation: - Complete OAuth setup guide in README - Comparison table for OAuth vs API keys - Troubleshooting section for common OAuth issues
- Add isOAuthMode state to track authentication mode - Update API key dialog to only open when not in OAuth mode - Modify OAuth and API key button handlers to set proper mode - Add proper cleanup handlers to reset OAuth mode on close - Ensure dialog state management prevents conflicting dialogs This fixes the issue where clicking 'Add OAuth' would incorrectly open the API key dialog instead of the OAuth authorization dialog.
Critical fixes: - Remove unused db parameter from createOAuthRoutes() - Add query invalidation in handleOAuthSuccess to update UI after OAuth - Remove unused setOAuth and getOAuthWithRefreshCheck methods - Fix file permission in delete method (add mode: 0o600) DRY improvements: - Extract duplicated error handling to shared oauthErrors.ts utility - Add OAuthMethod constants to replace magic numbers 0/1 - Use centralized OPENCODE_SERVER_URL constant via ENV config - Remove unused ProviderAuthMethodsResponseSchema import Code quality: - Add documentation comment noting types should match shared schemas - Consolidate error mapping logic into single mapOAuthError function - Improve code maintainability and reduce duplication Files changed: - backend/src/routes/oauth.ts - backend/src/services/auth.ts - backend/src/index.ts - frontend/src/lib/oauthErrors.ts (new) - frontend/src/api/oauth.ts - frontend/src/components/settings/OAuthAuthorizeDialog.tsx - frontend/src/components/settings/OAuthCallbackDialog.tsx - frontend/src/components/settings/ProviderSettings.tsx
dzianisv
referenced
this pull request
in dzianisv/opencode-manager
Jan 5, 2026
* feat: Implement OAuth support for provider authentication - Add OAuth routes and API endpoints for authorize/callback flows - Create OAuthAuthorizeDialog and OAuthCallbackDialog components - Extend ProviderSettings to support both OAuth and API key auth - Add OAuth credential support to auth service - Update shared schemas with OAuth request/response types - Support both 'auto' and 'code' OAuth flows - Maintain backward compatibility with existing API key authentication Backend: - backend/src/routes/oauth.ts (new) - backend/src/services/auth.ts (extended) - backend/src/index.ts (route registration) Frontend: - frontend/src/api/oauth.ts (new) - frontend/src/components/settings/OAuthAuthorizeDialog.tsx (new) - frontend/src/components/settings/OAuthCallbackDialog.tsx (new) - frontend/src/components/settings/ProviderSettings.tsx (enhanced) Shared: - shared/src/schemas/auth.ts (OAuth schemas) * feat: Complete OAuth implementation with comprehensive features - Add comprehensive error handling for OAuth failures with specific error messages - Implement OAuth token status checking and expiration monitoring - Add token refresh preparation with 5-minute expiration buffer - Enhance OAuth API client with detailed error reporting - Update OAuth routes to include database parameter and token status endpoint - Add complete OAuth documentation to README with setup guide - Improve user experience with clear error messages and troubleshooting steps - Support both auto and code OAuth flows for different providers - Maintain backward compatibility with existing API key authentication Error Handling: - Specific error messages for invalid codes, expiration, access denied - Graceful fallback for server errors and network issues - User-friendly error display in OAuth dialogs Token Management: - Token status endpoint for checking credential validity - Expiration monitoring with automatic refresh preparation - Secure storage of OAuth credentials alongside API keys Documentation: - Complete OAuth setup guide in README - Comparison table for OAuth vs API keys - Troubleshooting section for common OAuth issues * fix: Resolve OAuth button opening API key dialog instead - Add isOAuthMode state to track authentication mode - Update API key dialog to only open when not in OAuth mode - Modify OAuth and API key button handlers to set proper mode - Add proper cleanup handlers to reset OAuth mode on close - Ensure dialog state management prevents conflicting dialogs This fixes the issue where clicking 'Add OAuth' would incorrectly open the API key dialog instead of the OAuth authorization dialog. * refactor: Address audit findings for OAuth implementation Critical fixes: - Remove unused db parameter from createOAuthRoutes() - Add query invalidation in handleOAuthSuccess to update UI after OAuth - Remove unused setOAuth and getOAuthWithRefreshCheck methods - Fix file permission in delete method (add mode: 0o600) DRY improvements: - Extract duplicated error handling to shared oauthErrors.ts utility - Add OAuthMethod constants to replace magic numbers 0/1 - Use centralized OPENCODE_SERVER_URL constant via ENV config - Remove unused ProviderAuthMethodsResponseSchema import Code quality: - Add documentation comment noting types should match shared schemas - Consolidate error mapping logic into single mapOAuthError function - Improve code maintainability and reduce duplication Files changed: - backend/src/routes/oauth.ts - backend/src/services/auth.ts - backend/src/index.ts - frontend/src/lib/oauthErrors.ts (new) - frontend/src/api/oauth.ts - frontend/src/components/settings/OAuthAuthorizeDialog.tsx - frontend/src/components/settings/OAuthCallbackDialog.tsx - frontend/src/components/settings/ProviderSettings.tsx * Store model selection client-side with recent models display * Limit provider settings to OAuth-capable providers only * Remove unused code and consolidate model initialization into useModelSelection hook
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary