feat: Implement Aliyun TTS backend integration and API key management

This commit is contained in:
2026-02-03 15:44:25 +08:00
parent 5a5c93f075
commit abe0dc131b
19 changed files with 716 additions and 118 deletions

View File

@@ -2,6 +2,9 @@ from datetime import datetime, timedelta
from typing import Optional
from jose import JWTError, jwt
from passlib.context import CryptContext
from cryptography.fernet import Fernet
import base64
import hashlib
from config import settings
@@ -33,3 +36,24 @@ def decode_access_token(token: str) -> Optional[str]:
return username
except JWTError:
return None
def _get_fernet_key() -> bytes:
key = hashlib.sha256(settings.SECRET_KEY.encode()).digest()
return base64.urlsafe_b64encode(key)
def encrypt_api_key(api_key: str) -> str:
if not api_key:
return ""
fernet = Fernet(_get_fernet_key())
encrypted = fernet.encrypt(api_key.encode())
return encrypted.decode()
def decrypt_api_key(encrypted_key: str) -> Optional[str]:
if not encrypted_key:
return None
try:
fernet = Fernet(_get_fernet_key())
decrypted = fernet.decrypt(encrypted_key.encode())
return decrypted.decode()
except Exception:
return None