from datetime import datetime, timedelta from jose import jwt from pytz import timezone from abstracts.action import BaseAction from actions.config.config import Config class CreateToken(BaseAction): def __init__(self): # Busca as configurações da aplicação self.config = Config.get("app.json") # Cria o timedelta com base na config self.access_token_expire = timedelta( minutes=self.config.jwt.expire.minute, hours=self.config.jwt.expire.hours, days=self.config.jwt.expire.days, ) def execute(self, tipo_token: str, data: str) -> str: sp = timezone("America/Sao_Paulo") agora = datetime.now(tz=sp) expira = agora + self.access_token_expire # Define os dados do token payload = {"type": tipo_token, "exp": expira, "iat": agora, "data": str(data)} # Retorna os dados codificados return jwt.encode( payload, self.config.jwt.token, algorithm=self.config.jwt.algorithm )