U
    ԒFj                     @  s   d Z ddlmZ ddlmZ ddlmZ eddG dd dZd	dd
ddZdddddddddddZ	ddddddZ
dS )u~   
Validação de entrada do login (campos obrigatórios, CSRF).
Mantém regras fora das rotas para facilitar testes e leitura.
    )annotations)	dataclass)AnyT)frozenc                   @  s>   e Zd ZU ded< ded< ded< dZded< dZded< d	S )
LoginPayloadstrusuariosenha
str | None
csrf_tokenmetodo codigoN)__name__
__module____qualname____annotations__r   r    r   r   +/var/www/html/LojaOnline/auth_validation.pyr      s
   
r   zdict[str, Any] | None)datareturnc              	   C  s   | st ddd dS t| dp d  }|dkr8d}t t| dpHd t| dp\d | dpx| dpxd |t| d	pd d
S )Nr   )r   r	   r   r   r	   )r	   whatsappr   r   csrfr   )r   r	   r   r   r   )r   r   getstriplower)r   r   r   r   r   parse_login_json   s    r   r	   r   )r   r   r   z	list[str])r   r	   r   r   r   c                C  s>   g }| s| d |dkr,|s(| d |S |s:| d |S )zDRetorna nomes de campos vazios (para resposta JSON + UX no cliente).r   r   r   r	   )append)r   r	   r   r   missingr   r   r   collect_empty_login_fields$   s    


r   r
   bool)session_tokenprovidedr   c                 C  s"   | r|sdS ddl m} || |S )NFr   )compare_digest)secretsr#   )r!   r"   r#   r   r   r   validate_login_csrf8   s    r%   N)__doc__
__future__r   dataclassesr   typingr   r   r   r   r%   r   r   r   r   <module>   s   