
    Y8jm                    :   S r SSKJr  SSKrSSKrSSKrSSKJrJ	r	J
r
JrJrJr  SSKJrJrJr  SSKJr  SSKJrJrJr  SSKJrJrJr  \" S	\5      rSS
 jr\R?                  SS/S9S 5       r \R?                  SS/S9S 5       r!\R?                  SS/S9S 5       r"g)uM   
Rotas de autenticação (login) — blueprint separado do monólito app.py.
    )annotationsN)	Blueprintjsonifyrender_templaterequestsessionurl_for)collect_empty_login_fieldsparse_login_jsonvalidate_login_csrf)conectar)AUTH_CREDENTIALS_INVALID_MSGUsuarioAuthRownormalize_funcao)hash_passwordpassword_is_bcryptverify_passwordauthc                 D    [         R                  " S5      n U [        S'   U $ )N    
login_csrf)secretstoken_urlsafer   tokens    NC:\Users\user\Desktop\Projetos_em_andamento\_Mexendo\LojaOnline\auth_routes.py_issue_login_csrfr      s!    !!"%E!GLL    z/loginGET)methodsc                 *    [        SS[        S5      S9$ )uU   Splash e redirecionamento para o formulário em /login/form (token CSRF emitido lá).zsplash.htmli  zauth.login_form)delay_msredirect_url)r   r	    r   r   
login_pager%      s      ./ r   z/login/formc                 *    [        5       n [        SU S9$ )u+   Página de login com token CSRF na sessão.z
login.html)
csrf_token)r   r   r   s    r   
login_formr(   )   s     E<E::r   POSTc                 0	   [        [        R                  " SS95      n [        U R                  U R
                  5      nU(       a  [        SSSUS.5      S4$ [        [        R                  " S5      U R                  5      (       d  [        SS	S
S.5      S4$ SnSn [        5       nUR                  SS9nSn UR                  SU R                  45        UR                  5       n[&        R(                  " U5      nUSL=(       a     [+        UR
                  U R
                  5      nU(       dC  [        S[,        S.5      S4U(       a  UR/                  5         U(       a  UR/                  5         $ $ Uc   eUR                  [        S'   UR0                  [        S'   [3        UR4                  5      [        S'   [        R6                  " SS5        UR
                  (       a\  [9        UR
                  5      (       dB  [;        U R
                  5      nUR                  SXR                  45        UR=                  5         UR0                  n	Sn
Sn [        5       n
U
R                  SS9nUR                  SU	45        UR                  5       nU(       a  UR/                  5         U
(       a  U
R/                  5         U(       d?  [        SSSU	S.5      U(       a  UR/                  5         U(       a  UR/                  5         $ $ [        SSU	S.5      U(       a  UR/                  5         U(       a  UR/                  5         $ $ ! [        R                   R"                   aJ  n[%        USS5      S:w  a  e UR                  SU R                  45        UR                  5       n SnAGNSnAff = f! U(       a  UR/                  5         U
(       a  U
R/                  5         f f = f! [        R                   R"                   aj  n[?        SU5        [@        RB                  " 5         [        SS S.5      S!4s SnAU(       a  UR/                  5         U(       a  UR/                  5         $ $ SnAff = f! U(       a  UR/                  5         U(       a  UR/                  5         f f = f)"uU   Autenticação: mensagens genéricas para credenciais inválidas (anti-enumeração).T)silentFcampos_obrigatoriosu   Preencha usuário e senha.)sucessocodigoerrocampos_invalidosi  r   csrf_invalidouE   Sessão de segurança expirada. Atualize a página e tente novamente.)r-   r.   r/   i  N)
dictionaryzRSELECT usuario, senha, id_cliente, funcao FROM usuarios WHERE usuario = %s LIMIT 1errnoi  zJSELECT usuario, senha, id_cliente FROM usuarios WHERE usuario = %s LIMIT 1)r-   r/   i  usuario_logado
id_clientefuncaoz1UPDATE usuarios SET senha = %s WHERE usuario = %sz5SELECT 1 FROM dadosloja WHERE id_cliente = %s LIMIT 1z/dados-lojazComplete os dados da loja)r-   redirecionarmensagemr5   zLogin realizado com sucesso)r-   r8   r5   z[DB ERROR LOGIN]u?   Não foi possível validar o login no momento. Tente novamente.i  )"r   r   get_jsonr
   usuariosenhar   r   r   getr'   r   cursorexecutefetchonemysql	connectorErrorgetattrr   from_db_rowr   r   closer5   r   r6   popr   r   commitprint	traceback	print_exc)payloadvaziosconnr=   rowcol_errusersenha_ok	novo_hashr5   conn2cursor2dadosloja_existedb_errs                 r   loginrW   0   s    w//t<=G'GF$38(.	 

 
	
 w{{<8':L:LMM$-c 	
 		
 DF^z-	$NNd" //#C ))#.t#R

GMM(RE3OPQH LLNJJL C $(LL ! $,T[[9L$' ::0<<%gmm4INNCLL) KKM__
	JElldl3GOOG  '//1#$1 ;",	< LLNJJL 1 9(
, LLNJJL e $$ 	$w.$6NN\" //#C	$X  ( ??   
 &)$] 
 	
 LLNJJL !
 LLNJJL s   O 8-L: %AO 0CO <N% AO <O :N"?NO N""O %1OO Q!70Q'Q!(Q$ Q!!Q$ $1R)returnstr)#__doc__
__future__r   r   rI   mysql.connectorr@   flaskr   r   r   r   r   r	   auth_validationr
   r   r   databaser   modelsr   r   r   services.passwordsr   r   r   __name__auth_bpr   router%   r(   rW   r$   r   r   <module>re      s    #    P P 
  Q Q Q Q
FH
% 	x%) * 	}ug.; /; 	x&*~ +~r   