From 7004e764a994e411d0288615a9cbe318008850b3 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 28 Mar 2026 16:37:23 +0530 Subject: [PATCH] chore: refactor Microsoft OAuth configuration to unify client ID and secret for Teams and OneDrive in environment files and related code --- docker/.env.example | 10 +++------- surfsense_backend/.env.example | 10 +++------- surfsense_backend/app/config/__init__.py | 10 +++------- .../app/connectors/onedrive/client.py | 4 ++-- .../app/routes/onedrive_add_connector_route.py | 14 +++++++------- .../app/routes/teams_add_connector_route.py | 12 ++++++------ 6 files changed, 24 insertions(+), 36 deletions(-) diff --git a/docker/.env.example b/docker/.env.example index 8345e7dd7..3fb02d612 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -203,14 +203,10 @@ STT_SERVICE=local/base # AIRTABLE_CLIENT_SECRET= # AIRTABLE_REDIRECT_URI=http://localhost:8000/api/v1/auth/airtable/connector/callback -# -- Microsoft Teams -- -# TEAMS_CLIENT_ID= -# TEAMS_CLIENT_SECRET= +# -- Microsoft OAuth (shared for Teams and OneDrive) -- +# MICROSOFT_CLIENT_ID= +# MICROSOFT_CLIENT_SECRET= # TEAMS_REDIRECT_URI=http://localhost:8000/api/v1/auth/teams/connector/callback - -# -- Microsoft OneDrive -- -# ONEDRIVE_CLIENT_ID= -# ONEDRIVE_CLIENT_SECRET= # ONEDRIVE_REDIRECT_URI=http://localhost:8000/api/v1/auth/onedrive/connector/callback # -- Composio -- diff --git a/surfsense_backend/.env.example b/surfsense_backend/.env.example index 7a0b095e2..0b2cda19b 100644 --- a/surfsense_backend/.env.example +++ b/surfsense_backend/.env.example @@ -95,14 +95,10 @@ SLACK_CLIENT_ID=your_slack_client_id_here SLACK_CLIENT_SECRET=your_slack_client_secret_here SLACK_REDIRECT_URI=http://localhost:8000/api/v1/auth/slack/connector/callback -# Microsoft Teams OAuth Configuration -TEAMS_CLIENT_ID=your_teams_client_id_here -TEAMS_CLIENT_SECRET=your_teams_client_secret_here +# Microsoft OAuth (shared for Teams and OneDrive) +MICROSOFT_CLIENT_ID=your_microsoft_client_id_here +MICROSOFT_CLIENT_SECRET=your_microsoft_client_secret_here TEAMS_REDIRECT_URI=http://localhost:8000/api/v1/auth/teams/connector/callback - -# Microsoft OneDrive OAuth -ONEDRIVE_CLIENT_ID=your_onedrive_client_id_here -ONEDRIVE_CLIENT_SECRET=your_onedrive_client_secret_here ONEDRIVE_REDIRECT_URI=http://localhost:8000/api/v1/auth/onedrive/connector/callback # Composio Connector diff --git a/surfsense_backend/app/config/__init__.py b/surfsense_backend/app/config/__init__.py index 70100bd0a..b38d7fd1d 100644 --- a/surfsense_backend/app/config/__init__.py +++ b/surfsense_backend/app/config/__init__.py @@ -281,14 +281,10 @@ class Config: DISCORD_REDIRECT_URI = os.getenv("DISCORD_REDIRECT_URI") DISCORD_BOT_TOKEN = os.getenv("DISCORD_BOT_TOKEN") - # Microsoft Teams OAuth - TEAMS_CLIENT_ID = os.getenv("TEAMS_CLIENT_ID") - TEAMS_CLIENT_SECRET = os.getenv("TEAMS_CLIENT_SECRET") + # Microsoft OAuth (shared for Teams and OneDrive) + MICROSOFT_CLIENT_ID = os.getenv("MICROSOFT_CLIENT_ID") + MICROSOFT_CLIENT_SECRET = os.getenv("MICROSOFT_CLIENT_SECRET") TEAMS_REDIRECT_URI = os.getenv("TEAMS_REDIRECT_URI") - - # Microsoft OneDrive OAuth - ONEDRIVE_CLIENT_ID = os.getenv("ONEDRIVE_CLIENT_ID") - ONEDRIVE_CLIENT_SECRET = os.getenv("ONEDRIVE_CLIENT_SECRET") ONEDRIVE_REDIRECT_URI = os.getenv("ONEDRIVE_REDIRECT_URI") # ClickUp OAuth diff --git a/surfsense_backend/app/connectors/onedrive/client.py b/surfsense_backend/app/connectors/onedrive/client.py index bb9fbb42b..0b90a1332 100644 --- a/surfsense_backend/app/connectors/onedrive/client.py +++ b/surfsense_backend/app/connectors/onedrive/client.py @@ -98,8 +98,8 @@ class OneDriveClient: async def _refresh_token(self, refresh_token: str) -> dict: data = { - "client_id": config.ONEDRIVE_CLIENT_ID, - "client_secret": config.ONEDRIVE_CLIENT_SECRET, + "client_id": config.MICROSOFT_CLIENT_ID, + "client_secret": config.MICROSOFT_CLIENT_SECRET, "grant_type": "refresh_token", "refresh_token": refresh_token, "scope": "offline_access User.Read Files.Read.All Files.ReadWrite.All", diff --git a/surfsense_backend/app/routes/onedrive_add_connector_route.py b/surfsense_backend/app/routes/onedrive_add_connector_route.py index 0494888d9..19bcbe6ff 100644 --- a/surfsense_backend/app/routes/onedrive_add_connector_route.py +++ b/surfsense_backend/app/routes/onedrive_add_connector_route.py @@ -78,7 +78,7 @@ async def connect_onedrive(space_id: int, user: User = Depends(current_active_us try: if not space_id: raise HTTPException(status_code=400, detail="space_id is required") - if not config.ONEDRIVE_CLIENT_ID: + if not config.MICROSOFT_CLIENT_ID: raise HTTPException(status_code=500, detail="Microsoft OneDrive OAuth not configured.") if not config.SECRET_KEY: raise HTTPException(status_code=500, detail="SECRET_KEY not configured for OAuth security.") @@ -87,7 +87,7 @@ async def connect_onedrive(space_id: int, user: User = Depends(current_active_us state_encoded = state_manager.generate_secure_state(space_id, user.id) auth_params = { - "client_id": config.ONEDRIVE_CLIENT_ID, + "client_id": config.MICROSOFT_CLIENT_ID, "response_type": "code", "redirect_uri": config.ONEDRIVE_REDIRECT_URI, "response_mode": "query", @@ -138,7 +138,7 @@ async def reauth_onedrive( state_encoded = state_manager.generate_secure_state(space_id, user.id, **extra) auth_params = { - "client_id": config.ONEDRIVE_CLIENT_ID, + "client_id": config.MICROSOFT_CLIENT_ID, "response_type": "code", "redirect_uri": config.ONEDRIVE_REDIRECT_URI, "response_mode": "query", @@ -200,8 +200,8 @@ async def onedrive_callback( reauth_return_url = data.get("return_url") token_data = { - "client_id": config.ONEDRIVE_CLIENT_ID, - "client_secret": config.ONEDRIVE_CLIENT_SECRET, + "client_id": config.MICROSOFT_CLIENT_ID, + "client_secret": config.MICROSOFT_CLIENT_SECRET, "code": code, "redirect_uri": config.ONEDRIVE_REDIRECT_URI, "grant_type": "authorization_code", @@ -416,8 +416,8 @@ async def refresh_onedrive_token( raise HTTPException(status_code=400, detail=f"No refresh token available for connector {connector.id}") refresh_data = { - "client_id": config.ONEDRIVE_CLIENT_ID, - "client_secret": config.ONEDRIVE_CLIENT_SECRET, + "client_id": config.MICROSOFT_CLIENT_ID, + "client_secret": config.MICROSOFT_CLIENT_SECRET, "grant_type": "refresh_token", "refresh_token": refresh_token, "scope": " ".join(SCOPES), diff --git a/surfsense_backend/app/routes/teams_add_connector_route.py b/surfsense_backend/app/routes/teams_add_connector_route.py index 77ce4965e..4442307ba 100644 --- a/surfsense_backend/app/routes/teams_add_connector_route.py +++ b/surfsense_backend/app/routes/teams_add_connector_route.py @@ -88,7 +88,7 @@ async def connect_teams(space_id: int, user: User = Depends(current_active_user) if not space_id: raise HTTPException(status_code=400, detail="space_id is required") - if not config.TEAMS_CLIENT_ID: + if not config.MICROSOFT_CLIENT_ID: raise HTTPException( status_code=500, detail="Microsoft Teams OAuth not configured." ) @@ -106,7 +106,7 @@ async def connect_teams(space_id: int, user: User = Depends(current_active_user) from urllib.parse import urlencode auth_params = { - "client_id": config.TEAMS_CLIENT_ID, + "client_id": config.MICROSOFT_CLIENT_ID, "response_type": "code", "redirect_uri": config.TEAMS_REDIRECT_URI, "response_mode": "query", @@ -181,8 +181,8 @@ async def teams_callback( # Exchange authorization code for access token token_data = { - "client_id": config.TEAMS_CLIENT_ID, - "client_secret": config.TEAMS_CLIENT_SECRET, + "client_id": config.MICROSOFT_CLIENT_ID, + "client_secret": config.MICROSOFT_CLIENT_SECRET, "code": code, "redirect_uri": config.TEAMS_REDIRECT_URI, "grant_type": "authorization_code", @@ -403,8 +403,8 @@ async def refresh_teams_token( # Microsoft uses oauth2/v2.0/token for token refresh refresh_data = { - "client_id": config.TEAMS_CLIENT_ID, - "client_secret": config.TEAMS_CLIENT_SECRET, + "client_id": config.MICROSOFT_CLIENT_ID, + "client_secret": config.MICROSOFT_CLIENT_SECRET, "grant_type": "refresh_token", "refresh_token": refresh_token, "scope": " ".join(SCOPES),