| 1234567891011121314151617181920212223242526272829 |
- import uuid
- from datetime import datetime, timedelta, timezone
- import jwt
- from app.config import get_settings
- settings = get_settings()
- def create_access_token(user_id: str, username: str, roles: list[str]) -> str:
- expire = datetime.now(timezone.utc) + timedelta(minutes=settings.jwt_access_expire_minutes)
- payload = {
- "sub": user_id,
- "username": username,
- "roles": roles,
- "exp": expire,
- "iat": datetime.now(timezone.utc),
- "type": "access",
- }
- return jwt.encode(payload, settings.jwt_secret_key, algorithm=settings.jwt_algorithm)
- def create_refresh_token() -> str:
- return f"rt_{uuid.uuid4().hex}{uuid.uuid4().hex[:16]}"
- def decode_access_token(token: str) -> dict:
- return jwt.decode(token, settings.jwt_secret_key, algorithms=[settings.jwt_algorithm])
|