diff options
Diffstat (limited to 'jb/api')
| -rw-r--r-- | jb/api/magic_token.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/jb/api/magic_token.py b/jb/api/magic_token.py index 5f78996..7b6c1aa 100644 --- a/jb/api/magic_token.py +++ b/jb/api/magic_token.py @@ -3,7 +3,7 @@ import secrets from fastapi import HTTPException, status -from jb.decorators import REDIS +from jb.decorators import get_redis from jb.models.auth import AmtAccountLink MAGIC_TOKEN_PREFIX = "auth:magic:" @@ -25,7 +25,8 @@ def create_magic_token(user_email: str) -> str: raise ValueError("user_email must not be empty") token = secrets.token_urlsafe(32) - REDIS.set( + redis_client = get_redis() + redis_client.set( redis_token_key(token), user_email, ex=MAGIC_TOKEN_TTL, @@ -34,7 +35,8 @@ def create_magic_token(user_email: str) -> str: def consume_magic_token(token: str) -> str: - user_email = REDIS.getdel(redis_token_key(token)) + redis_client = get_redis() + user_email = redis_client.getdel(redis_token_key(token)) if user_email is None: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, @@ -45,12 +47,13 @@ def consume_magic_token(token: str) -> str: def create_amt_account_link_token(email: str, amt_worker_id: str) -> str: """Bind an email and AMT worker ID to an opaque, short-lived token.""" + redis_client = get_redis() data = AmtAccountLink( email=email, amt_worker_id=amt_worker_id, ) token = secrets.token_urlsafe(32) - REDIS.set( + redis_client.set( redis_token_key(token, AMT_ACCOUNT_LINK_TOKEN_PREFIX), data.model_dump_json(), ex=MAGIC_TOKEN_TTL, @@ -60,7 +63,10 @@ def create_amt_account_link_token(email: str, amt_worker_id: str) -> str: def consume_amt_account_link_token(token: str) -> AmtAccountLink: """Atomically consume and validate an AMT account-link token.""" - raw_data = REDIS.getdel(redis_token_key(token, AMT_ACCOUNT_LINK_TOKEN_PREFIX)) + redis_client = get_redis() + raw_data = redis_client.getdel( + redis_token_key(token, AMT_ACCOUNT_LINK_TOKEN_PREFIX) + ) if raw_data is None: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, |
