§
    jæýiä	  ã                   ó’  — d dl Z d dlmZ d dlmZmZmZ d dlmZmZ d dl	m
Z
 d dlmZmZ d dlmZmZmZmZ d dlmZ d d	lmZ d d
lmZmZmZ  e¦   «           e j        d¦  «        Z e j        d¦  «        Z eddg¬¦  «        Z G d„ de
¦  «        Z G d„ de
¦  «        Z  G d„ de
¦  «        Z!dede"de"fd„Z#de"de"de"defd„Z$e %                    dej&        ¬¦  «        ded e fd!„¦   «         Z'e %                    d"e!¬#¦  «        ded$ee e¦   «         f         fd%„¦   «         Z(e )                    d&e¬#¦  «        d'efd(„¦   «         Z*dS ))é    N)Úload_dotenv)ÚdatetimeÚtimezoneÚ	timedelta)Ú	AnnotatedÚOptional)Ú	BaseModel)ÚjwtÚJWTError)Ú	APIRouterÚHTTPExceptionÚstatusÚDepends)ÚOAuth2PasswordRequestForm)ÚUser)Údb_dependencyÚuser_dependencyÚbcrypt_contextÚAUTH_SECRET_KEYÚAUTH_ALGORITHMz/authÚauth)ÚprefixÚtagsc                   ó:   — e Zd ZU eed<   eed<   ee         ed<   dS )ÚUserResponseÚidÚusernameÚnameN)Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__Ústrr   © ó    ú8/var/www/sinfronteras/webapp/backend/api/routers/auth.pyr   r      s4   € € € € € € Ø
€F€F�FØ€L€L�LØ	�#ŒÐÐÑÐÐr&   r   c                   ó.   — e Zd ZU eed<   eed<   eed<   dS )ÚRegisterUserRequestr   r   ÚpasswordN©r   r    r!   r$   r#   r%   r&   r'   r)   r)      s+   € € € € € € Ø€L€L�LØ	€H€H�HØ€L€L�L€L€Lr&   r)   c                   ó$   — e Zd ZU eed<   eed<   dS )ÚAccessTokenÚaccess_tokenÚ
token_typeNr+   r%   r&   r'   r-   r-   "   s%   € € € € € € ØÐÐÑØ€N€N�N€N€Nr&   r-   Údbr   r*   c                 óà   — |                       t          ¦  «                             t          j        |k    ¦  «                             ¦   «         }|sdS t          j        ||j        ¦  «        sdS |S )NF)Úqueryr   Úfilterr   Úfirstr   ÚverifyÚhashed_password)r0   r   r*   Úusers       r'   Úauthenticate_userr8   '   sa   € Ø—’�‘”×%Ò%¥d¤m°xÒ&?Ñ@Ô@×FÒFÑHÔH€DØð ØˆuÝÔ  ¨4Ô+?Ñ@Ô@ð ØˆuØ€Kr&   r   r   Úexpires_deltac                 óÂ   — | ||dœ}t          j        t          j        ¬¦  «        |z   }|                     d|i¦  «         t          j        |t          t          ¬¦  «        S )N©r   r   r   )ÚtzÚexp)ÚkeyÚ	algorithm)	r   Únowr   ÚutcÚupdater
   Úencoder   r   )r   r   r   r9   rC   Úexpiress         r'   Úcreate_access_tokenrE   /   sW   € Ø (°4Ð8Ð8€FÝŒl�hœlÐ+Ñ+Ô+¨mÑ;€GØ
‡M‚M�5˜�/Ñ"Ô"Ð"ÝŒ:�f¥/½^ÐLÑLÔLÐLr&   z	/register)Ústatus_codeÚregister_user_requestc           	   ƒ   ó¾   K  — |                       t          |j        |j        t	          j        |j        ¦  «        ¬¦  «        ¦  «         |                      ¦   «          d S )N)r   r   r6   )Úaddr   r   r   r   Úhashr*   Úcommit)r0   rG   s     r'   Úregister_userrL   5   s^   è è € à‡F‚F�4Ø(Ô1Ø$Ô)Ý(Ô-Ð.CÔ.LÑMÔMðñ ô ñ ô ð ð
 ‡I‚I�K„K€K€K€Kr&   z/token)Úresponse_modelÚ	form_datac              ƒ   óÞ   K  — t          | |j        |j        ¬¦  «        }|st          t          j        d¬¦  «        ‚t          |j        |j        |j        t          d¬¦  «        ¬¦  «        ddœS )	N)r0   r   r*   zCould not validate user)rF   Údetailé   )Úminutes)r   r   r   r9   Úbearer)r.   r/   )
r8   r   r*   r   r   ÚHTTP_401_UNAUTHORIZEDrE   r   r   r   )r0   rN   r7   s      r'   Úlogin_for_access_tokenrU   >   s”   è è € å! R°)Ô2DÈyÔOaÐbÑbÔb€DØð hÝ­Ô(DÐMfÐgÑgÔgÐgå+¨t¬wÀÄÐUYÔU^Õnwð  ACð  oDñ  oDô  oDð  Eñ  Eô  EØðð ð r&   z/mer7   c              ƒ   óR   K  — | d         | d         |                       dd ¦  «        dœS )Nr   r   r   r;   )Úget)r7   s    r'   Úget_user_merX   H   s.   è è € à�d”¨¨ZÔ(8ÀÇÂÈ&ÐRVÑAWÔAWÐXÐXÐXr&   )+ÚosÚdotenvr   r   r   r   Útypingr   r   Úpydanticr	   Újoser
   r   Úfastapir   r   r   r   Úfastapi.securityr   Ú
api.modelsr   Úapi.depsr   r   r   Úgetenvr   r   Úrouterr   r)   r-   r$   r8   rE   ÚpostÚHTTP_201_CREATEDrL   rU   rW   rX   r%   r&   r'   ú<module>rf      sö  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø Ð Ð Ð Ð Ð Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cð €�„€Ø�"”)Ð-Ñ.Ô.€Ø�”Ð+Ñ,Ô,€ð 
ˆØØˆ8ð
ñ 
ô 
€ðð ð ð ð �9ñ ô ð ð
ð ð ð ð ˜)ñ ô ð ð
ð ð ð ð �)ñ ô ð ð
˜ð °ð ¸sð ð ð ð ðM˜3ð M¨ð M°3ð MÀið Mð Mð Mð Mð ‡‚ˆ[ fÔ&=€Ñ>Ô>ð˜=ð Ð@Sð ð ð ñ ?Ô>ðð ‡‚ˆX k€Ñ2Ô2ð Mð ¸YÐG`ÐbiÐbiÑbkÔbkÐGkÔ=lð ð ð ñ 3Ô2ðð ‡‚ˆE ,€Ñ/Ô/ðY˜?ð Yð Yð Yñ 0Ô/ðYð Yð Yr&   