chore: refactor Microsoft OAuth configuration to unify client ID and secret for Teams and OneDrive in environment files and related code

This commit is contained in:
Anish Sarkar 2026-03-28 16:37:23 +05:30
parent bb894ee158
commit 7004e764a9
6 changed files with 24 additions and 36 deletions

View file

@ -203,14 +203,10 @@ STT_SERVICE=local/base
# AIRTABLE_CLIENT_SECRET= # AIRTABLE_CLIENT_SECRET=
# AIRTABLE_REDIRECT_URI=http://localhost:8000/api/v1/auth/airtable/connector/callback # AIRTABLE_REDIRECT_URI=http://localhost:8000/api/v1/auth/airtable/connector/callback
# -- Microsoft Teams -- # -- Microsoft OAuth (shared for Teams and OneDrive) --
# TEAMS_CLIENT_ID= # MICROSOFT_CLIENT_ID=
# TEAMS_CLIENT_SECRET= # MICROSOFT_CLIENT_SECRET=
# TEAMS_REDIRECT_URI=http://localhost:8000/api/v1/auth/teams/connector/callback # 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 # ONEDRIVE_REDIRECT_URI=http://localhost:8000/api/v1/auth/onedrive/connector/callback
# -- Composio -- # -- Composio --

View file

@ -95,14 +95,10 @@ SLACK_CLIENT_ID=your_slack_client_id_here
SLACK_CLIENT_SECRET=your_slack_client_secret_here SLACK_CLIENT_SECRET=your_slack_client_secret_here
SLACK_REDIRECT_URI=http://localhost:8000/api/v1/auth/slack/connector/callback SLACK_REDIRECT_URI=http://localhost:8000/api/v1/auth/slack/connector/callback
# Microsoft Teams OAuth Configuration # Microsoft OAuth (shared for Teams and OneDrive)
TEAMS_CLIENT_ID=your_teams_client_id_here MICROSOFT_CLIENT_ID=your_microsoft_client_id_here
TEAMS_CLIENT_SECRET=your_teams_client_secret_here MICROSOFT_CLIENT_SECRET=your_microsoft_client_secret_here
TEAMS_REDIRECT_URI=http://localhost:8000/api/v1/auth/teams/connector/callback 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 ONEDRIVE_REDIRECT_URI=http://localhost:8000/api/v1/auth/onedrive/connector/callback
# Composio Connector # Composio Connector

View file

@ -281,14 +281,10 @@ class Config:
DISCORD_REDIRECT_URI = os.getenv("DISCORD_REDIRECT_URI") DISCORD_REDIRECT_URI = os.getenv("DISCORD_REDIRECT_URI")
DISCORD_BOT_TOKEN = os.getenv("DISCORD_BOT_TOKEN") DISCORD_BOT_TOKEN = os.getenv("DISCORD_BOT_TOKEN")
# Microsoft Teams OAuth # Microsoft OAuth (shared for Teams and OneDrive)
TEAMS_CLIENT_ID = os.getenv("TEAMS_CLIENT_ID") MICROSOFT_CLIENT_ID = os.getenv("MICROSOFT_CLIENT_ID")
TEAMS_CLIENT_SECRET = os.getenv("TEAMS_CLIENT_SECRET") MICROSOFT_CLIENT_SECRET = os.getenv("MICROSOFT_CLIENT_SECRET")
TEAMS_REDIRECT_URI = os.getenv("TEAMS_REDIRECT_URI") 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") ONEDRIVE_REDIRECT_URI = os.getenv("ONEDRIVE_REDIRECT_URI")
# ClickUp OAuth # ClickUp OAuth

View file

@ -98,8 +98,8 @@ class OneDriveClient:
async def _refresh_token(self, refresh_token: str) -> dict: async def _refresh_token(self, refresh_token: str) -> dict:
data = { data = {
"client_id": config.ONEDRIVE_CLIENT_ID, "client_id": config.MICROSOFT_CLIENT_ID,
"client_secret": config.ONEDRIVE_CLIENT_SECRET, "client_secret": config.MICROSOFT_CLIENT_SECRET,
"grant_type": "refresh_token", "grant_type": "refresh_token",
"refresh_token": refresh_token, "refresh_token": refresh_token,
"scope": "offline_access User.Read Files.Read.All Files.ReadWrite.All", "scope": "offline_access User.Read Files.Read.All Files.ReadWrite.All",

View file

@ -78,7 +78,7 @@ async def connect_onedrive(space_id: int, user: User = Depends(current_active_us
try: try:
if not space_id: if not space_id:
raise HTTPException(status_code=400, detail="space_id is required") 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.") raise HTTPException(status_code=500, detail="Microsoft OneDrive OAuth not configured.")
if not config.SECRET_KEY: if not config.SECRET_KEY:
raise HTTPException(status_code=500, detail="SECRET_KEY not configured for OAuth security.") 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) state_encoded = state_manager.generate_secure_state(space_id, user.id)
auth_params = { auth_params = {
"client_id": config.ONEDRIVE_CLIENT_ID, "client_id": config.MICROSOFT_CLIENT_ID,
"response_type": "code", "response_type": "code",
"redirect_uri": config.ONEDRIVE_REDIRECT_URI, "redirect_uri": config.ONEDRIVE_REDIRECT_URI,
"response_mode": "query", "response_mode": "query",
@ -138,7 +138,7 @@ async def reauth_onedrive(
state_encoded = state_manager.generate_secure_state(space_id, user.id, **extra) state_encoded = state_manager.generate_secure_state(space_id, user.id, **extra)
auth_params = { auth_params = {
"client_id": config.ONEDRIVE_CLIENT_ID, "client_id": config.MICROSOFT_CLIENT_ID,
"response_type": "code", "response_type": "code",
"redirect_uri": config.ONEDRIVE_REDIRECT_URI, "redirect_uri": config.ONEDRIVE_REDIRECT_URI,
"response_mode": "query", "response_mode": "query",
@ -200,8 +200,8 @@ async def onedrive_callback(
reauth_return_url = data.get("return_url") reauth_return_url = data.get("return_url")
token_data = { token_data = {
"client_id": config.ONEDRIVE_CLIENT_ID, "client_id": config.MICROSOFT_CLIENT_ID,
"client_secret": config.ONEDRIVE_CLIENT_SECRET, "client_secret": config.MICROSOFT_CLIENT_SECRET,
"code": code, "code": code,
"redirect_uri": config.ONEDRIVE_REDIRECT_URI, "redirect_uri": config.ONEDRIVE_REDIRECT_URI,
"grant_type": "authorization_code", "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}") raise HTTPException(status_code=400, detail=f"No refresh token available for connector {connector.id}")
refresh_data = { refresh_data = {
"client_id": config.ONEDRIVE_CLIENT_ID, "client_id": config.MICROSOFT_CLIENT_ID,
"client_secret": config.ONEDRIVE_CLIENT_SECRET, "client_secret": config.MICROSOFT_CLIENT_SECRET,
"grant_type": "refresh_token", "grant_type": "refresh_token",
"refresh_token": refresh_token, "refresh_token": refresh_token,
"scope": " ".join(SCOPES), "scope": " ".join(SCOPES),

View file

@ -88,7 +88,7 @@ async def connect_teams(space_id: int, user: User = Depends(current_active_user)
if not space_id: if not space_id:
raise HTTPException(status_code=400, detail="space_id is required") raise HTTPException(status_code=400, detail="space_id is required")
if not config.TEAMS_CLIENT_ID: if not config.MICROSOFT_CLIENT_ID:
raise HTTPException( raise HTTPException(
status_code=500, detail="Microsoft Teams OAuth not configured." 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 from urllib.parse import urlencode
auth_params = { auth_params = {
"client_id": config.TEAMS_CLIENT_ID, "client_id": config.MICROSOFT_CLIENT_ID,
"response_type": "code", "response_type": "code",
"redirect_uri": config.TEAMS_REDIRECT_URI, "redirect_uri": config.TEAMS_REDIRECT_URI,
"response_mode": "query", "response_mode": "query",
@ -181,8 +181,8 @@ async def teams_callback(
# Exchange authorization code for access token # Exchange authorization code for access token
token_data = { token_data = {
"client_id": config.TEAMS_CLIENT_ID, "client_id": config.MICROSOFT_CLIENT_ID,
"client_secret": config.TEAMS_CLIENT_SECRET, "client_secret": config.MICROSOFT_CLIENT_SECRET,
"code": code, "code": code,
"redirect_uri": config.TEAMS_REDIRECT_URI, "redirect_uri": config.TEAMS_REDIRECT_URI,
"grant_type": "authorization_code", "grant_type": "authorization_code",
@ -403,8 +403,8 @@ async def refresh_teams_token(
# Microsoft uses oauth2/v2.0/token for token refresh # Microsoft uses oauth2/v2.0/token for token refresh
refresh_data = { refresh_data = {
"client_id": config.TEAMS_CLIENT_ID, "client_id": config.MICROSOFT_CLIENT_ID,
"client_secret": config.TEAMS_CLIENT_SECRET, "client_secret": config.MICROSOFT_CLIENT_SECRET,
"grant_type": "refresh_token", "grant_type": "refresh_token",
"refresh_token": refresh_token, "refresh_token": refresh_token,
"scope": " ".join(SCOPES), "scope": " ".join(SCOPES),