§
    Ì~ÂiN
  ã                   ó  — 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
 d dlmZ d dlmZ d dlmZmZ d dlmZmZ d d	lmZmZmZ d d
lmZ  eddg¬¦  «        Z G d„ de¦  «        Ze                     de¬¦  «         ee¦  «        fdedefd„¦   «         Ze                     dd¬¦  «         ee¦  «         ee¦  «        fdededefd„¦   «         Z e                     ded¬¦  «         ee¦  «        fdedefd„¦   «         Z!dS )é    )Ú	APIRouterÚDependsÚHTTPExceptionÚstatus)Ú	BaseModel)ÚAsyncSession)Úselect)Úget_db)ÚUser)ÚLoginRequestÚTokenResponse)Ú
UserCreateÚUserOut)Úverify_passwordÚhash_passwordÚcreate_access_token)Úget_current_userz/authÚauth)ÚprefixÚtagsc                   ó$   — e Zd ZU eed<   eed<   dS )ÚChangePasswordRequestÚcurrent_passwordÚnew_passwordN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__© ó    ú8/var/www/html/jarvis.com/web/backend/app/routers/auth.pyr   r      s*   € € € € € € ØÐÐÑØÐÐÑÐÐr!   r   z/login)Úresponse_modelÚbodyÚdbc              ƒ   óô  K  — |                      t          t          ¦  «                             t          j        | j        k    ¦  «        ¦  «        ƒ d {V —†}|                     ¦   «         }|rt          | j        |j        ¦  «        st          t          j        d¦  «        ‚|j        st          t          j        d¦  «        ‚t          t          |j        ¦  «        |j        dœ¦  «        }t%          |¬¦  «        S )NzInvalid username or passwordzAccount is inactive)ÚsubÚrole)Úaccess_token)Úexecuter	   r   ÚwhereÚusernameÚscalar_one_or_noner   ÚpasswordÚhashed_passwordr   r   ÚHTTP_401_UNAUTHORIZEDÚ	is_activeÚHTTP_403_FORBIDDENr   r   Úidr(   r   )r$   r%   ÚresultÚuserÚtokens        r"   Úloginr7      sÚ   è è € à—:’:�f¥T™lœl×0Ò0µ´À$Ä-Ò1OÑPÔPÑQÔQÐQÐQÐQÐQÐQÐQ€FØ×$Ò$Ñ&Ô&€Dàð Z• t¤}°dÔ6JÑKÔKð ZÝ�FÔ8Ð:XÑYÔYÐYØŒ>ð NÝ�FÔ5Ð7LÑMÔMÐMå­¨D¬G©¬¸d¼iÐ HÐ HÑIÔI€EÝ eÐ,Ñ,Ô,Ð,r!   z/change-passwordéÈ   )Ústatus_codeÚcurrent_userc              ƒ   ón  K  — t          | j        |j        ¦  «        st          dd¦  «        ‚t	          | j        ¦  «        dk     rt          dd¦  «        ‚t          | j        ¦  «        |_        	 |                     ¦   «         ƒ d {V —† n)# t          $ r | 	                    ¦   «         ƒ d {V —† ‚ w xY wddiS )Né�  zCurrent password is incorrect.é   z+New password must be at least 6 characters.ÚmessagezPassword changed successfully.)
r   r   r/   r   Úlenr   r   ÚcommitÚ	ExceptionÚrollback)r$   r:   r%   s      r"   Úchange_passwordrC   #   sà   è è € õ ˜4Ô0°,Ô2NÑOÔOð CÝ˜CÐ!AÑBÔBÐBÝ
ˆ4ÔÑÔ Ò!Ð!Ý˜CÐ!NÑOÔOÐOå#0°Ô1BÑ#CÔ#C€LÔ ðØ�iŠi‰kŒkÐÐÐÐÐÐÐÐøÝð ð ð Ø�kŠk‰mŒmÐÐÐÐÐÐÐØðøøøð Ð7Ð8Ð8s   Á/B
 Â
&B0z	/registeréÉ   )r#   r9   c              ƒ   óv  K  — |                      t          t          ¦  «                             t          j        | j        k    t          j        | j        k    z  ¦  «        ¦  «        ƒ d {V —†}|                     ¦   «         rt          dd¦  «        ‚t          | j        | j        t          | j	        ¦  «        | j
        ¬¦  «        }|                     |¦  «         	 |                     ¦   «         ƒ d {V —† |                     |¦  «        ƒ d {V —† n)# t          $ r |                     ¦   «         ƒ d {V —† ‚ w xY w|S )Nr<   z Username or email already exists)r,   Úemailr/   r(   )r*   r	   r   r+   r,   rF   r-   r   r   r.   r(   Úaddr@   ÚrefreshrA   rB   )r$   r%   r4   r5   s       r"   ÚregisterrI   7   s_  è è € à—:’:Ý�t‰Œ×Ò�DœM¨T¬]Ò:½t¼zÈTÌZÒ?WÑXÑYÔYñô ð ð ð ð ð ð €Fð × Ò Ñ"Ô"ð EÝ˜CÐ!CÑDÔDÐDåØ”ØŒjÝ% d¤mÑ4Ô4ØŒYð	ñ ô €Dð ‡F‚Fˆ4�L„L€LðØ�iŠi‰kŒkÐÐÐÐÐÐÐØ�jŠj˜ÑÔÐÐÐÐÐÐÐÐøÝð ð ð Ø�kŠk‰mŒmÐÐÐÐÐÐÐØðøøøð €Ks   Ã5D Ä&D6N)"Úfastapir   r   r   r   Úpydanticr   Úsqlalchemy.ext.asyncior   Ú
sqlalchemyr	   Úapp.databaser
   Úapp.models.userr   Úapp.schemas.authr   r   Úapp.schemas.userr   r   Úapp.services.authr   r   r   Úapp.depsr   Úrouterr   Úpostr7   ÚputrC   rI   r    r!   r"   ú<module>rW      s:  ðØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ %Ð %Ð %Ð %Ð %Ð %à	ˆ˜'¨¨Ð	1Ñ	1Ô	1€ðð ð ð ð ˜Iñ ô ð ð
 ‡‚ˆX m€Ñ4Ô4Ø7>°w¸v±´ð 
-ð 
-�lð 
-¨ð 
-ð 
-ð 
-ñ 5Ô4ð
-ð ‡‚Ð¨C€Ñ0Ô0ð !˜Ð!1Ñ2Ô2Ø�w˜v‘”ð9ð 9Ø
ð9àð9ð 	ð9ð 9ð 9ñ 1Ô0ð9ð& ‡‚ˆ[¨¸c€ÑBÔBØ8?¸À¹¼ð ð ˜ð ¨ð ð ð ñ CÔBðð ð r!   