security: encrypt OAuth tokens at rest (Fernet) + docs

This commit is contained in:
TLimoges33
2025-08-28 17:13:30 +00:00
parent 08a9c77b65
commit 8d62ac0017
5 changed files with 90 additions and 12 deletions
+13 -11
View File
@@ -71,18 +71,20 @@ async def google_callback(request: Request):
db.commit()
db.refresh(integration)
# Persist token (single latest token demo)
expires_at = None
if token.get('expires_in'):
expires_at = int(time.time()) + int(token.get('expires_in'))
# Persist token (single latest token demo). Encrypt tokens at rest.
from .crypto import encrypt_text
oauth_token = models.OAuthToken(
integration_id=integration.id,
access_token=token.get('access_token'),
refresh_token=token.get('refresh_token'),
scope=token.get('scope'),
expires_at=expires_at
)
expires_at = None
if token.get('expires_in'):
expires_at = int(time.time()) + int(token.get('expires_in'))
oauth_token = models.OAuthToken(
integration_id=integration.id,
access_token=encrypt_text(token.get('access_token') or ''),
refresh_token=encrypt_text(token.get('refresh_token') or ''),
scope=token.get('scope'),
expires_at=expires_at
)
db.add(oauth_token)
db.commit()