| 1234567891011121314151617181920212223 |
- import json
- import redis
- from pydantic import BaseModel
- import random
- class RedisRecoveryData(BaseModel):
- user_id: int
- RECOVERY_REDIS_KEY = "pin_recovery:{pin_code}"
- def generate_recovery_key(user_id) -> str:
- pin_code = str(random.randint(100000, 999999))
- redis_client = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
- redis_client.set(RECOVERY_REDIS_KEY.format(pin_code=pin_code), json.dumps({"user_id": user_id}))
- redis_client.expire(RECOVERY_REDIS_KEY.format(pin_code=pin_code), 1800) # Expire in 30 minutes
- return RECOVERY_REDIS_KEY.format(pin_code=pin_code)
- def get_recovery_data(pin_code: str) -> RedisRecoveryData:
- redis_client = redis.Redis(host='localhost', port=6379, db=0)
- data = redis_client.get(RECOVERY_REDIS_KEY.format(pin_code=pin_code))
- json_data = json.loads(str(data)) if data else None
- if json_data:
- return RedisRecoveryData(**json_data)
- return RedisRecoveryData(user_id=-1)
|