
    }i                        d dl mZ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mZmZmZ d dlmZmZmZmZmZ d dlmZ d d	lZ ed
dg      Zdedd	fdZej?                  de       ee	      fdededefd       Z ej?                  d       ee	       ee      fdededefd       Z!ej?                  de       ee	       ee      fdededefd       Z"y	)    )	APIRouterDependsHTTPExceptionstatusRequest)Session)get_db)User)Asim)LoginRequestTokenResponseRegisterRequestChangePasswordRequest)verify_passwordget_password_hashcreate_access_tokenget_current_userrequire_pengurus)limiterNz	/api/authAuthentication)prefixtagspasswordreturnc                     t        |       dk  rt        dd      t        j                  d|       st        dd      t        j                  d|       st        dd      y	)
uH   Validasi kekuatan password — min 8 karakter, 1 huruf kapital, 1 angka.     zPassword minimal 8 karakterstatus_codedetailz[A-Z]z*Password harus ada minimal 1 huruf kapitalz[0-9]z"Password harus ada minimal 1 angkaN)lenr   research)r   s    1/var/www/html/asim.com/backend/app/routes/auth.py_validate_password_strengthr%      sY    
8}q4QRR99Xx(4`aa99Xx(4XYY )    z/login)response_modelrequestbodydbc           	         ddl m} d }|j                  rM|j                  t              j                  t        j                  |j                  k(        j                         }|sM|j                  t              j                  t        j                  |j                  k(        j                         }|sM|j                  t              j                  t        j                  |j                  k(        j                         }|s	 t        |j                        }|j                  t              j                  t        j                  |k(        j                         }|rY|j                  rM|j                  t              j                  t        j                  |j                  k(        j                         }|r t        |j                   |j                         st#        t$        j&                  d      |j(                  st#        t$        j*                  d      |j                  |      j                  |j,                  dk(        j                         }|xr |j.                  dk(  }t1        t3        |j                        |j4                  d      }	|j6                  r|j6                  j                  nd }
|j6                  r|j6                  j                  nd }|j6                  r|j6                  j8                  nd }t;        |	|j4                  |j                  |
|||rd	
      S |j<                  
      S # t        $ r Y w xY w)Nr   )SystemSettingzUsername atau password salahr   zAkun tidak aktifdevelopment_modetruesubroleF)access_tokenr1   user_idasim_idno_asim	full_namemust_change_password)app.models.system_settingr,   usernamequeryr
   filterfirstemailphoneintr   r5   r3   id
ValueErrorr   r   r   r   HTTP_401_UNAUTHORIZED	is_activeHTTP_403_FORBIDDENkeyvaluer   strr1   asimr6   r   r7   )r(   r)   r*   r,   userno_asim_intrH   dev_modeis_devtokenr4   r5   r6   s                r$   loginrN      si   
 8D }}xx~$$T]]dmm%CDJJL xx~$$TZZ4==%@AGGI xx~$$TZZ4==%@AGGI 	dmm,K88D>(()DEKKMDxx~,,TWW-DEKKM t}}dmmD441
 	
 >>11%
 	
 xx&--m.?.?CU.UV\\^H2(..F2FDGGdii HIE"iidiillTG#'99dii$G'+yy		##dIYY&,U  372K2K /  		s   B3L8 8	MMz/change-passwordcurrent_userc                    |j                   | j                  k7  rt        t        j                  d      t        | j                  |j                        st        dd      t        | j                         t        | j                        |_        d|_        	 |j                          dd	iS # t        $ r |j                          t        dd      w xY w)
Nz%Tidak boleh ganti password orang lainr   r   zPassword lama salahF  z"Gagal menyimpan perubahan passwordmessagezPassword berhasil diubah)r@   r3   r   r   rD   r   old_passwordr   r%   new_passwordr   r7   commit	Exceptionrollback)r(   r*   rO   s      r$   change_passwordrX   T   s     '//)(A(AJqrr7//1F1FG4IJJ 4 45-g.B.BCL(-L%Z
		 122  Z
4XYYZs   B- -'Cz	/register_c                 x   | j                   r\|j                  t              j                  t        j                   | j                   k(        j	                         }|rt        dd      | j                  r\|j                  t              j                  t        j                  | j                  k(        j	                         }|rt        dd      t        | j                   | j                  t        | j                        | j                        }|j                  |       	 |j                          |j                  |       t        t!        |j"                        |j                  d      }t%        ||j                  |j"                  d	
      S # t        $ r |j                          t        dd      w xY w)Nr   zEmail sudah terdaftarr   zNo HP sudah terdaftar)r=   r>   r   r1   rQ   z Gagal mendaftarkan pengguna barur/   F)r2   r1   r3   r7   )r=   r:   r
   r;   r<   r   r>   r   r   r1   addrU   refreshrV   rW   r   rG   r@   r   )r(   r*   rY   existingrI   rM   s         r$   registerr^   i   sK   }}88D>((w}})DEKKMC8OPP}}88D>((w}})DEKKMC8OPPmmmm"7#3#34\\	D FF4LX
		


4  DGGdii HIEYY"	 	  X
4VWWXs   #!F 'F9)#fastapir   r   r   r   r   sqlalchemy.ormr   app.databaser	   app.models.userr
   app.models.asimr   app.schemas.authr   r   r   r   app.core.securityr   r   r   r   r   app.core.limiterr   r"   routerrG   r%   postrN   rX   r^    r&   r$   <module>rj      s   F F "      ` ` y y $ 		+-=,>	?Z# Z$ Z Xm4>Efo 97 9, 9G 9 59v   &/ !123"33 3 !3( [75<V_PWXhPi o 7   8r&   