import jwt, os
from dotenv import load_dotenv
from datetime import datetime, timedelta
load_dotenv()

SECRET_KEY = os.getenv("SECRET_KEY")
RESET_EXP_MINUTES = 5               # token valid for 5 mins

# ---------------------------------------------
# create reset token for reset/forgot password 
# ---------------------------------------------
def create_reset_token(agent_id: int):
    print(">>>>>>>>>>>>>",agent_id)
    
    payload = {
        "agent_id": agent_id,
        "exp": datetime.utcnow() + timedelta(minutes=RESET_EXP_MINUTES),
        "type": "password_reset"
    }
    print(">>>>>>payload",payload)
    
    token = jwt.encode(payload, SECRET_KEY, algorithm="HS256")
    print(">>>>>>token",token)
    
    return token

# ---------------------------------------------
# verify reset token for reset/forgot password
# ---------------------------------------------
def verify_reset_token(token: str):
    try:

        data = jwt.decode(token, SECRET_KEY, algorithms=["HS256"])
        if data.get("type") != "password_reset":
            return None
        return data["agent_id"]
    
    except jwt.ExpiredSignatureError:
        return None
    
    except jwt.InvalidTokenError:
        return None
