+
    Vi/                        R t ^ RIHtHtHt ^ RIHt ^ RIHt ^ RI	t	^ RI
t
^ RIHtHt ^ RIHt ^ RIHt ]! RR	.R
7      tRtRt^tR R ltR R ltR R lt ! R R]4      t ! R R]4      t]P5                  R4      ]! ]4      3R R ll4       t]P9                  R4      ]! ]4      3R R ll4       t]P5                  R4      ]! ]4      3R R ll4       t]P9                  R4      ]! ]4      3R  R! ll4       t]PA                  R"4      ]! ]4      3R# R$ ll4       t!]PE                  R"4      ]! ]4      3R% R& ll4       t#R# )'z
Authentification MAESTRO
)	APIRouterDependsHTTPExceptionSession)	BaseModelN)datetime	timedelta)get_db)Utilisateurz	/api/authauth)prefixtagsmaestro_secret_key_2026HS256c                0    V ^8  d   QhR\         R\         /# )   mdpreturnstr)formats   "aC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO CLAUDE\MAESTRO\maestro-backend\app\routes\auth.py__annotate__r      s     4 4# 4# 4    c                 f    \         P                  ! V P                  4       4      P                  4       # )N)hashlibsha256encode	hexdigest)r   s   &r   hash_mdpr       s     >>#**,'1133r   c                H    V ^8  d   QhR\         R\        R\        R\        /# )r   utilisateur_idnomroler   )intr   )r   s   "r   r   r      s.     @ @ @# @S @S @r   c                     \         P                  ! 4       \        \        R 7      ,           pRV RVRVRV/p\        P
                  ! V\        \        R7      # ))hourssubr#   r$   exp)	algorithm)r   utcnowr	   TOKEN_EXPIRE_HOURSjwtr   
SECRET_KEY	ALGORITHM)r"   r#   r$   expirepayloads   &&&  r   creer_tokenr2      sI    __1C!DDF~sv	G ::gzY??r   c                0    V ^8  d   QhR\         R\        /# )r   tokenr   )r   dict)r   s   "r   r   r   $   s     3 3# 3$ 3r   c                      \         P                  ! V \        \        .R 7      pV#   \         P                   d    \        RR4      h\         P                   d    \        RR4      hi ; i))
algorithms  u   Token expirézToken invalide)r-   decoder.   r/   ExpiredSignatureErrorr   InvalidTokenError)r4   r1   s   & r   verifier_tokenr<   $   s^    3**UJI;G$$ 2C11   3C!1223s   #& 3A(A(c                   ,   a  ] tR t^.t o V 3R ltRtV tR# )LoginRequestc                2   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   # )r   emailmot_de_passer   )r   __classdict__s   "r   r   LoginRequest.__annotate__.   s     J  r    N)__name__
__module____qualname____firstlineno____annotate_func____static_attributes____classdictcell__rB   s   @r   r>   r>   .   s      r   r>   c                   0   a  ] tR t^3t o RtV 3R ltRtV tR# )UtilisateurCreateutilisateurc                J   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   # )r   r#   r@   rA   r$   r   )r   rB   s   "r   r   UtilisateurCreate.__annotate__3   s3     	H J    	 r   rD   N)rE   rF   rG   rH   r$   rI   rJ   rK   rL   s   @r   rN   rN   3   s      D	  r   rN   z/loginc                0    V ^8  d   QhR\         R\        /# r   datadb)r>   r   )r   s   "r   r   r   ;   s       ' r   c                    VP                  \        4      P                  \        P                  V P                  8H  \        P                  ^8H  4      P                  4       pV'       d%   VP                  \        V P                  4      8w  d   \        RR4      h\        VP                  VP                  VP                  4      pRVRRVP                  RVP                  RVP                  RVP                  //# )	   r8   zEmail ou mot de passe incorrectr4   rO   idr#   r@   r$   )queryr   filterr@   actiffirstrA   r    r   r2   rX   r#   r$   )rT   rU   userr4   s   &&  r   loginr^   :   s    88K ''TZZ'Q eg 	
 4$$1B1B(CCC!BCC4995E$''488TZZDII	
 r   z/mec                0    V ^8  d   QhR\         R\        /# )r   r4   rU   )r   r   )r   s   "r   r   r   Q   s     
 
# 
7 
r   c                 8   \        V 4      pVP                  \        4      P                  \        P                  VR ,          8H  4      P                  4       pV'       g   \        RR4      hRVP                  RVP                  RVP                  RVP                  /# )r(     Utilisateur introuvablerX   r#   r@   r$   )
r<   rY   r   rZ   rX   r\   r   r#   r@   r$   )r4   rU   r1   r]   s   &&  r   get_merc   P   sz    U#G88K '''%.(HIOOQDC!:;;dggtxx			 r   z/utilisateursc                0    V ^8  d   QhR\         R\        /# rS   )rN   r   )r   s   "r   r   r   _   s     T T- T7 Tr   c                    VP                  \        4      P                  \        P                  V P                  8H  4      P	                  4       pV'       d   \        R R4      h\        V P                  V P                  \        V P                  4      V P                  R7      pVP                  V4       VP                  4        VP                  V4       RVP                  RVP                  RVP                  RVP                  /# )i  u   Email déjà utilisé)r#   r@   rA   r$   rX   r#   r@   r$   )rY   r   rZ   r@   r\   r   r#   r    rA   r$   addcommitrefreshrX   )rT   rU   existingr]   s   &&  r   creer_utilisateurrj   ^   s    xx$++K,=,=,KLRRTHC!899HHjjd//0YY	D FF4LIIKJJt$''5$((GTZZSSr   c                $    V ^8  d   QhR\         /# )r   rU   r   )r   s   "r   r   r   q   s     Y Y7 Yr   c                    V P                  \        4      P                  \        P                  ^8H  4      P	                  4       pV Uu. uF5  pRVP
                  RVP                  RVP                  RVP                  /NK7  	  up# u upi )rW   rX   r#   r@   r$   )	rY   r   rZ   r[   allrX   r#   r@   r$   )rU   usersus   &  r   liste_utilisateursrp   p   sj    HH[!(():):a)?@DDFERWXRWQT144wHRWXXXs   ;Bz/utilisateurs/{user_id}c                <    V ^8  d   QhR\         R\        R\        /# )r   user_idrT   rU   )r%   rN   r   )r   s   "r   r   r   w   s"     
 
# 
-> 
G 
r   c                    VP                  \        4      P                  \        P                  V 8H  4      P	                  4       pV'       g   \        R R4      hVP                  Vn        VP                  Vn        VP                  '       d,   VP                  R8w  d   \        VP                  4      Vn        VP                  Vn
        VP                  4        RR/# )ra   rb   	UNCHANGEDokT)rY   r   rZ   rX   r\   r   r#   r@   rA   r    r$   rg   )rr   rT   rU   r]   s   &&& r   modifier_utilisateurrv   v   s    88K '''(ABHHJDC!:;;xxDHDJT..+=$T%6%67		DIIIK$<r   c                0    V ^8  d   QhR\         R\        /# )r   rr   rU   )r%   r   )r   s   "r   r   r      s      3 G r   c                     VP                  \        4      P                  \        P                  V 8H  4      P	                  4       pV'       g   \        R R4      h^ Vn        VP                  4        RR/# )ra   rb   ru   T)rY   r   rZ   rX   r\   r   r[   rg   )rr   rU   r]   s   && r   supprimer_utilisateurry      sX    88K '''(ABHHJDC!:;;DJIIK$<r   )$__doc__fastapir   r   r   sqlalchemy.ormr   pydanticr   r   r-   r   r	   app.databaser
   app.models.utilisateurr   routerr.   r/   r,   r    r2   r<   r>   rN   postr^   getrc   rj   rp   putrv   deletery   rD   r   r   <module>r      sL   6 5 "   
 (  .	+VH	5&
	 4@39 
	  X,3FO  * E%,V_ 
 
 _=DV_ T T" O%,V_ Y Y
 %&NUV\o 
 '
 ()6=fo  *r   