Coverage for src/cstlcore/security/jwt.py: 92%
13 statements
« prev ^ index » next coverage.py v7.9.1, created at 2026-02-19 12:46 +0000
« prev ^ index » next coverage.py v7.9.1, created at 2026-02-19 12:46 +0000
1from datetime import datetime, timedelta, timezone
3import jwt
5from cstlcore.settings import settings
8def create_access_token(
9 data: dict[str, object], expires_delta: timedelta | None = None
10):
11 to_encode = data.copy()
12 if expires_delta:
13 expire = datetime.now(timezone.utc) + expires_delta
14 else:
15 expire = datetime.now(timezone.utc) + timedelta(minutes=15)
16 to_encode.update({"exp": expire})
17 encoded_jwt = jwt.encode(
18 to_encode, settings.jwt.secret_key, algorithm=settings.jwt.algorithm
19 )
20 return encoded_jwt
23def decode_access_token(token: str):
24 return jwt.decode(
25 token, settings.jwt.secret_key, algorithms=[settings.jwt.algorithm]
26 )