
    DCi                        d Z ddlmZmZ ddlmZ ddlZ G d de      Z G d de      Z G d	 d
e      Z	 G d de      Z
 G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)u+   
Schémas pour l'authentification avec OTP
    )	BaseModel	validator)OptionalNc                   8    e Zd ZU dZeed<    ed      d        Zy)PhoneLoginRequestu0   Requête pour vérifier l'existence d'un numérophonec                 H    t        j                  d|      st        d      |S )u*   Valide le format du numéro de téléphone^\+228\d{8}$;   Le numéro doit être au format international: +228XXXXXXXXrematch
ValueErrorclsvs     8/home/www/lebenam.kofcorporation.com/app/schemas/auth.pyvalidate_phonez PhoneLoginRequest.validate_phone   s#     xx+Z[[    N__name__
__module____qualname____doc__str__annotations__r   r    r   r   r   r      s!    :Jw r   r   c                   D    e Zd ZU dZeed<   eed<   eed<   dZee   ed<   y)PhoneLoginResponseu$   Réponse de vérification du numérouser_existsr   messageFotp_sentN)	r   r   r   r   boolr   r   r"   r   r   r   r   r   r      s#    .JL$Hhtn$r   r   c                   ^    e Zd ZU dZeed<   eed<    ed      d        Z ed      d        Zy)OTPVerifyRequestu#   Requête pour vérifier un code OTPr   otp_codec                 H    t        j                  d|      st        d      |S Nr
   r   r   r   s     r   r   zOTPVerifyRequest.validate_phone    !    xx+Z[[r   c                 X    |j                         rt        |      dk7  rt        d      |S N   z$Le code OTP doit contenir 6 chiffresisdigitlenr   r   s     r   validate_otpzOTPVerifyRequest.validate_otp&   &    yy{c!fkCDDr   N)	r   r   r   r   r   r   r   r   r0   r   r   r   r%   r%      s?    -JMw 
 z r   r%   c                   0    e Zd ZU dZeed<   eed<   eed<   y)OTPVerifyResponseu   Réponse de vérification OTPverifiedr!   r   N)r   r   r   r   r#   r   r   r   r   r   r3   r3   ,   s    'NLJr   r3   c                       e Zd ZU dZeed<   eed<   eed<   dZee   ed<   eed<   eed<    ed      d	        Z	 ed      d
        Z
 ed      d        Zy)UserRegisterRequestu7   Requête pour créer un compte après vérification OTPr   
first_name	last_nameNemailpasswordr&   c                 H    t        j                  d|      st        d      |S r(   r   r   s     r   r   z"UserRegisterRequest.validate_phone;   r)   r   c                 8    t        |      dk  rt        d      |S Nr,   u4   Le mot de passe doit contenir au moins 6 caractèresr/   r   r   s     r   validate_passwordz%UserRegisterRequest.validate_passwordA       q6A:STTr   c                 (    |rd|vrt        d      |S )N@zEmail invalide)r   r   s     r   validate_emailz"UserRegisterRequest.validate_emailG   s    A-..r   )r   r   r   r   r   r   r9   r   r   r   r?   rC   r   r   r   r6   r6   2   su    AJONE8C=MMw 
 z 
 w r   r6   c                   B    e Zd ZU dZeed<   eed<    ed      d        Zy)UserLoginRequestu,   Requête pour se connecter avec mot de passer   r:   c                 H    t        j                  d|      st        d      |S r(   r   r   s     r   r   zUserLoginRequest.validate_phoneR   r)   r   Nr   r   r   r   rE   rE   M   s&    6JMw r   rE   c                   4    e Zd ZU dZeed<   dZeed<   eed<   y)AuthResponseu*   Réponse d'authentification avec token JWTaccess_tokenbearer
token_typeuserN)r   r   r   r   r   r   rK   dictr   r   r   rH   rH   X   s    4J
Jr   rH   c                   8    e Zd ZU dZeed<    ed      d        Zy)ResendOTPRequestu"   Requête pour renvoyer un code OTPr   c                 H    t        j                  d|      st        d      |S r(   r   r   s     r   r   zResendOTPRequest.validate_phoneb   r)   r   Nr   r   r   r   rO   rO   ^   s!    ,Jw r   rO   c                   8    e Zd ZU dZeed<    ed      d        Zy)PasswordResetRequestu<   Requête pour demander une réinitialisation de mot de passer   c                 H    t        j                  d|      st        d      |S r(   r   r   s     r   r   z#PasswordResetRequest.validate_phonel   r)   r   Nr   r   r   r   rR   rR   h   s!    FJw r   rR   c                       e Zd ZU dZeed<   eed<   eed<    ed      d        Z ed      d        Z ed      d        Z	y)	PasswordResetConfirmu5   Requête pour confirmer la réinitialisation avec OTPr   r&   new_passwordc                 H    t        j                  d|      st        d      |S r(   r   r   s     r   r   z#PasswordResetConfirm.validate_phonex   r)   r   c                 X    |j                         rt        |      dk7  rt        d      |S r+   r-   r   s     r   r0   z!PasswordResetConfirm.validate_otp~   r1   r   c                 8    t        |      dk  rt        d      |S r=   r>   r   s     r   r?   z&PasswordResetConfirm.validate_password   r@   r   N)
r   r   r   r   r   r   r   r   r0   r?   r   r   r   rU   rU   r   s^    ?JMw 
 z 
 ~ r   rU   )r   pydanticr   r   typingr   r   r   r   r%   r3   r6   rE   rH   rO   rR   rU   r   r   r   <module>r\      s    *  	
	 
% %y "	 ) 6	y 	9 y 9 9 r   