
    hs                        S SK r S SKrS SKrS SKJrJr  S SKJrJrJrJ	r	J
r
  S SKJr  S SKJr  S SKJrJrJrJr  S SKJr  S SKJrJrJrJr  S S	KJr  \" 5         \" 5       r\" S
S9r0 r\RA                  S\S/S9\" \RB                  5      4S\S\RD                  4S jj5       r#\RA                  S\S/S9\" \RB                  5      4S\S\	S\RD                  4S jj5       r$\RA                  SS/S9S\%4S j5       r&\RA                  SS/S9\" \RB                  5      4S\%S\RD                  4S jj5       r'\RQ                  SS/S9\" \RB                  5      \" \5      4S\RD                  S\4S jj5       r)g)    N)datetime	timedelta)	APIRouterDependsHTTPExceptionBackgroundTasksstatus)JSONResponse)database)User	UserLoginUserResponseGoogleToken)get_current_userdetails)
login_usergoogle_connect_userprocess_user_loginverify_phone_otp_service)load_dotenvi7  minutes/Auth)response_modeltagsuserdbc                    #    [        S5        [        X5      I S h  vN n[        US   US   S.S9nUR                  SSUS    3S	S
S
SS	SS9  U$  N47f)Nzcoming auth login222222222messager   r   r   contentAuthorizationBearer tokenT  r   Nonekeyvaluehttponlymax_ageexpirespathsecuresamesite)printr   r
   
set_cookie)r   r   resultresponses       GC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\routers\saas\login.pyloginr6      sw     	
&'d''Fy0A6RX>$Z[Hw()  	 O (s   AA5Az/googlegoogle_tokenbackground_tasksc                    #    [        XU5      I S h  vN n[        US   US   S.S9nUR                  SSUS    3SS	S	S
SSS9  U$  N47f)Nr   r   r    r!   r#   r$   r%   Tr&   r   r'   r(   )r   r
   r2   )r7   r8   r   r3   r4   s        r5   google_connectr:   %   sq     &|rJJFy0A6RX>$Z[Hw()  	 O Ks   A	A5A	z/phone/send-otp)r   payloadc                    #    U R                  S5      nU(       d
  [        SSS9e[        R                  " SS5      nU[        R
                  " 5       [        SS9-   S	.[        U'   [        S
U SU 35        SS0$ 7f)Nphonei  zPhone number is required.status_codedetaili i?B    r   )otpr-   zSending OTP z
 to phone r   zOTP sent successfully.)	getr   randomrandintr   utcnowr   	otp_storer1   )r;   r=   rB   s      r5   send_phone_otprH   5   sx     KK E4OPP
..
(C"x/@9UVCW/WXIe 
LZw
/0/00s   A8A:z/phone/verifyc                 B   #    [        X[        5      I S h  vN nU$  N7f)N)r   rG   )r;   r   r3   s      r5   verify_phone_otprJ   B   s!      ,GCCFM Ds   z/checkcurrent_userc                 P   #    U(       a  SS0$ [        [        R                  SS9e7f)NauthenticatedTUnauthorizedr>   )r   r	   HTTP_401_UNAUTHORIZED)r   rK   s     r5   
auth_checkrP   I   s(      &&
F$@$@
XXs   $&)*jsonosrD   r   r   fastapir   r   r   r   r	   fastapi.responsesr
   app.dbr   app.v1.models.saas.usersmodelr   r   r   r   app.v1.dependencies.authr   app.v1.services.saas.loginr   r   r   r   dotenvr   routerACCESS_TOKEN_EXPIRESrG   postget_mongo_dbMongoDBr6   r:   dictrH   rJ   rC   rP        r5   <module>rb      s    	  ( N N *  T T < t t  	 /  	SVH58?@U@U8V i X%5%5  6  Y|6(Cnuv~  wL  wL  oM { o [c[k[k  D fX.
1$ 
1 /
1 _F8,AHI^I^A_ D h.>.>  - HF8$,3H4I4I,J*12I*JY)) Y#'Y %Yra   