
    T#i                    p    S r SSKJr  SSKJr  SSKJr  \" SS9 " S S5      5       rSS	 jrSS
 jr	SS jr
g)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                  4    \ rS rSr% S\S'   S\S'   S\S'   Srg)	LoginPayload   strusuariosenha
str | None
csrf_token N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       IC:\Users\user\Desktop\Projetos_em_andamento\LojaOnline\auth_validation.pyr   r      s    LJr   r   c                X   U (       d  [        SSS S9$ [        [        U R                  S5      =(       d    S5      R                  5       [        U R                  S5      =(       d    S5      R                  5       U R                  S5      =(       d    U R                  S5      =(       d    S S9$ )N )r   r   r   r   r   r   csrf)r   r
   getstrip)datas    r   parse_login_jsonr      s~    BbTBBDHHY'-2.446$((7#)r*002HH\*Fdhhv.>F$ r   c                j    / nU (       d  UR                  S5        U(       d  UR                  S5        U$ )zDRetorna nomes de campos vazios (para resposta JSON + UX no cliente).r   r   )append)r   r   missings      r   collect_empty_login_fieldsr"      s*    Gy!wNr   c                <    U (       a  U(       d  gSSK Jn  U" X5      $ )NFr   )compare_digest)secretsr$   )session_tokenprovidedr$   s      r   validate_login_csrfr(   '   s    &-22r   N)r   zdict[str, Any] | Nonereturnr   )r   r
   r   r
   r)   z	list[str])r&   r   r'   r   r)   bool)__doc__
__future__r   dataclassesr   typingr   r   r   r"   r(   r   r   r   <module>r/      sB   
 # !  $  3r   