Ë
    KµCjr  ã                   ó–   — d Z ddlZddlmZmZmZm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  
Authentication request/response schemas for the SaaS customer login flow.

Separate from app/schemas/request.py and response.py, which cover the
crop analysis API surface â€” auth has its own validation concerns
(password strength, email format) that don't belong mixed in there.
é    N)Ú	BaseModelÚEmailStrÚFieldÚfield_validatorc                   ó°   — e Zd ZU eed<    eddd¬«      Zeed<    edd¬	«      Zedz  ed
<    edd¬	«      Z	edz  ed<    e
d«      ededefd„«       «       Zy)ÚUserRegisterRequestÚemail.é   é€   )Ú
min_lengthÚ
max_lengthÚpasswordNéÿ   )r   Ú	full_nameÚorganizationÚvÚreturnc                 óŠ   — t        j                  d|«      st        d«      ‚t        j                  d|«      st        d«      ‚|S )Nz[A-Za-z]z)Password must contain at least one letterz[0-9]z)Password must contain at least one number)ÚreÚsearchÚ
ValueError)Úclsr   s     ú=C:\Crop_Prediction\Backend\crop-ai-system\app\schemas\auth.pyÚvalidate_password_strengthz.UserRegisterRequest.validate_password_strength   s=   € ô �y‰y˜ aÔ(ÜÐHÓIÐIÜ�y‰y˜ 1Ô%ÜÐHÓIÐIØˆó    )Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r   Ústrr   r   r   Úclassmethodr   © r   r   r   r      sq   … ØƒOÙ˜#¨!¸Ô<€HˆcÓ<Ù! $°3Ô7€Iˆs�T‰zÓ7Ù$ T°cÔ:€L�#˜‘*Ó:á�ZÓ Øð¨3ð °3ò ó ó !ñr   r   c                   ó"   — e Zd ZU eed<   eed<   y)ÚUserLoginRequestr	   r   N)r   r   r   r   r   r    r"   r   r   r$   r$      s   … ØƒOØ„Mr   r$   c                   ó:   — e Zd ZU eed<   eed<   dZeed<   eed<   y)ÚTokenResponseÚaccess_tokenÚrefresh_tokenÚbearerÚ
token_typeÚexpires_in_minutesN)r   r   r   r    r   r*   Úintr"   r   r   r&   r&   #   s   … ØÓØÓØ€J�ÓØÔr   r&   c                   ó   — e Zd ZU eed<   y)ÚRefreshTokenRequestr(   N)r   r   r   r    r   r"   r   r   r.   r.   *   s   … ØÔr   r.   c                   óV   — e Zd ZU eed<   eed<   edz  ed<   edz  ed<   eed<   eed<   y)ÚUserProfileResponseÚidr	   Nr   r   Úis_verifiedÚ
created_at)r   r   r   r    r   Úboolr"   r   r   r0   r0   .   s+   … ØƒGØƒJØ�T‰zÓØ˜‘*ÓØÓØ„Or   r0   )Ú__doc__r   Úpydanticr   r   r   r   r   r$   r&   r.   r0   r"   r   r   ú<module>r7      sQ   ðñó 
ç @Ó @ô˜)ô ô �yô ô
�Iô ô˜)ô ô˜)õ r   