Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions mcpgateway/services/token_storage_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"""

# Standard
from datetime import datetime, timedelta
from datetime import datetime, timedelta, timezone
import logging
from typing import Any, Dict, List, Optional

Expand Down Expand Up @@ -73,8 +73,7 @@ async def store_tokens(self, gateway_id: str, user_id: str, access_token: str, r
encrypted_refresh = self.encryption.encrypt_secret(refresh_token)

# Calculate expiration
expires_at = datetime.utcnow() + timedelta(seconds=expires_in)

expires_at = datetime.now(timezone.utc) + timedelta(seconds=int(expires_in))
# Create or update token record
token_record = self.db.execute(select(OAuthToken).where(OAuthToken.gateway_id == gateway_id, OAuthToken.user_id == user_id)).scalar_one_or_none()

Expand All @@ -84,7 +83,7 @@ async def store_tokens(self, gateway_id: str, user_id: str, access_token: str, r
token_record.refresh_token = encrypted_refresh
token_record.expires_at = expires_at
token_record.scopes = scopes
token_record.updated_at = datetime.utcnow()
token_record.updated_at = datetime.now()
logger.info(f"Updated OAuth tokens for gateway {gateway_id}, user {user_id}")
else:
# Create new record
Expand Down Expand Up @@ -210,8 +209,10 @@ def _is_token_expired(self, token_record: OAuthToken, threshold_seconds: int = 3
"""
if not token_record.expires_at:
return True

return datetime.utcnow() + timedelta(seconds=threshold_seconds) >= token_record.expires_at
expires_at = token_record.expires_at
if expires_at.tzinfo is None:
expires_at = expires_at.replace(tzinfo=timezone.utc)
return datetime.now(timezone.utc) + timedelta(seconds=threshold_seconds) >= expires_at

async def get_token_info(self, gateway_id: str, user_id: str) -> Optional[Dict[str, Any]]:
"""Get information about stored OAuth tokens.
Expand Down