
    +&i                        d dl mZ d dlmZ d dlmZ d dlZd dlZd dlZd dl	m
Z
 d dlmZ  e       Z G d de      Zej                  d	      d
efd       Zej#                  d      d
efd       Zej                  d      d
efd       Zej                  d      d
efd       Zej-                  d      defd       Zy)    )	APIRouter)	BaseModel)MongoClientN)
MailHelper)users_collectionc                   6    e Zd ZU eed<   eed<   eed<   eed<   y)GoogleAuthPayloademail	firstNamelastName	avatarUrlN)__name__
__module____qualname__str__annotations__     ;/var/www/pod-logistic/pod-api/controller/auth_controller.pyr	   r	      s    JNMNr   r	   z/auth/googlepayloadc                   K   	 t        j                  d| j                  i      }|sft        t	        j
                               | j                  | j                  | j                  | j                  ddddd	}t        j                  |       |}dt        |j                  d            |j                  d      |j                  d	d      |j                  d
d      |j                  dd      |j                  dd      t        |j                  d            dddS # t        $ r}dt        |      dcY d }~S d }~ww xY ww)Nr
   r   google user)	userIdr
   r   r   r   balanceauth_providerpasswordroleT_idr   r   r   r   r   )idr
   r   r   r   r   hasPasswordu!   Đăng nhập Google thành công)successdatamessageFr#   r%   )r   find_oner
   r   uuiduuid4r   r   r   
insert_onegetbool	Exception)r   r   new_useres       r   google_loginr0      s    #5(('7==)AB djjl+ $..#,,$..!)
H ''1D $((5/*'*!XXk26 HHZ4!XXk2688Iq1#DHHZ$89 ;
 	
  5 SV445s5   D>DD D>	D;#D60D;1D>6D;;D>z/user/update-passwordc                    K   | j                  d      }| j                  d      }t        j                  d|idd|ii      }|j                  dkD  rdddS d	d
dS w)Nr
   newPassword$setr   r   Tu   Cập nhật thành côngr&   Fu   Không tìm thấy user)r+   r   
update_onemodified_count)r   r
   new_passwordresults       r   update_passwordr8   ;   sq     KK E;;}-L ((	%	*l+,F
 q ,GHH)BCCs   AAz/user/forgot-passwordc                   K   | j                  d      }t        j                  d|i      }|sdddS t        j                  t        j
                  z   dj                  fdt        d      D              }t        j                  d|idd	|ii       |j                  d
       d|j                  d       |dd}t        j                  ||      }|rdddS dddS w)Nr
   Fu,   Email không tồn tại trên hệ thống!r&   r   c              3   H   K   | ]  }t        j                          y w)N)secretschoice).0ialphabets     r   	<genexpr>z"forgot_password.<locals>.<genexpr>V   s     I1gnnX6Is   "   r3   r   r    r   ud   Vì lý do bảo mật, hãy đổi lại mật khẩu này ngay sau khi đăng nhập thành công.)usernamer   noteTu>   Mật khẩu mới đã được gửi vào Email của bạn!u1   Lỗi khi gửi email, vui lòng thử lại sau.)r+   r   r'   stringascii_lettersdigitsjoinranger4   r   send_new_password_email)r   r
   r   random_password
email_data	mail_sentr?   s         @r   forgot_passwordrN   K   s     KK E $$gu%56D -[\\ ##fmm3HggIaIIO 	%	*o./ xx,-Qtxx
/C.DE#vJ 225*EI,lmm -`aas   CCz/auth/loginc                   K   | j                  d      }| j                  d      }|dk(  r|dk(  rddddd	dd
dS t        j                  d|i      }|r|j                  d      |k(  rmdt        |d         |d   |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      dddS dddS w)Nr
   r   adminadmin123Tadmin_systemzadmin@factory.comu   Quản trịu   Viên)r!   r
   r   r   r   r#   r$   r    r   r   r   r   r   r   r   r   )r!   r
   r   r   r   r   r   r"   Fu-   Email hoặc mật khẩu không chính xác!r&   )r+   r   r'   r   )r   r
   r   r   s       r   loginrT   m   s     KK E{{:&H H
2$,+#	
 		
 $$gu%56D88J8+$u+&g!XXk26 HHZ4!XXk2688Iq10#	
 
 )XYYs   CCz/user/mer
   c                    	 t        j                  d| i      }|st        dddd      S dt        |j	                  d            |j	                  d      |j	                  d	d
      |j	                  dd
      |j	                  dd
      |j	                  dd
      |j	                  d      |j	                  dd      |j	                  dd      d	dS # t
        $ r#}t        ddt        |      d      cY d}~S d}~ww xY w)uH   Lấy thông tin chi tiết user theo đúng cấu trúc tài liệu 6.1r
   i  FzUser not foundr&   )status_codecontentTr    r   r   r   phoneaddressr   r   r   	createdAtz2026-01-15T08:00:00.000Z)	r!   r
   r   r   rX   rY   r   r   rZ   rS   i  N)r   r'   JSONResponser   r+   r-   )r
   r   r/   s      r   get_user_mer\      s    \(('5)9:CUWg9hii $((5/*'*!XXk26 HHZ4'2.88Ir2!XXk288Iq1!XXk3MN

 	
  \SVWXSY5Z[[\s#   (C B$C 	C<C71C<7C<)fastapir   pydanticr   pymongor   r(   r;   rE   controller.mail_helperr   MongoDBConnectionr   routerr	   postr0   putdictr8   rN   rT   r+   r   r\   r   r   r   <module>rf      s          - . 
	  ^$5 1 $5 $5L #$D4 D %D $%b4 b &bB ]%Z %Z %ZN J\s \ \r   