
    Ii&
                         d Z ddlmZmZmZmZ ddlmZ  G d de      Z G d de      Z	 G d d	e      Z
d
 Zd Zd Zd Zy)u"   Módulo de validação de entrada.    )SchemafieldsvalidateValidationError)security_loggerc                       e Zd Z ej                  d ej                  dd       ej                  dd      g      Z ej                  d ej                  d	
       ej                  dd      g      Z	 ej                  dddd      Zy)UserRegisterSchemaT   2   minmaxz^[a-zA-Z0-9_]+$u9   Username deve conter apenas letras, números e underscoreerrorrequiredr      r   >^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$J   Senha deve conter pelo menos uma letra, um número e um caractere especial   E-mail é obrigatório.   E-mail inválido.r   invalidr   error_messagesN)__name__
__module____qualname__r   Strr   LengthRegexpusernamepasswordEmailemail     6/srv/www/ollama/chat-ollama/src/security/validators.pyr	   r	      s    vzz4A2&*2mn3 H vzz4AYi	k3 H
 FLL$D]j}7~Er(   r	   c                       e Zd Z ej                  dddd      Z ej                  d ej                  d       ej                  dd	
      g      Z
y)UserLoginSchemaTr   r   r   r   r   r   r   r   r   r   N)r   r   r   r   r%   r&   r    r   r!   r"   r$   r'   r(   r)   r+   r+      sU    FLL$D]j}7~Evzz4AYi	k3 Hr(   r+   c                       e Zd ZdZ ej
                  d ej                  dd       ej                  dd      g	      Z	 ej                  d
      Zy)ChatMessageSchemau-   Schema para validação de mensagens de chat.T   i  r   z^[^<>]*$u)   Mensagem não pode conter caracteres HTMLr   r   )r   N)r   r   r   __doc__r   r    r   r!   r"   messageIntagent_idr'   r(   r)   r-   r-      sO    7fjj$A4(+VW2 G vzz4(Hr(   r-   c                     	 t               }|j                  |       S # t        $ r'}t        j                  dt        |               d }~ww xY w)Nu    Validação de registro falhou: )r	   loadr   r   warningstrdataschemaes      r)   validate_user_register_datar;   "   sK    #%{{4   "B3q6( KL    	A"AAc                     	 t               }|j                  |       S # t        $ r'}t        j                  dt        |               d }~ww xY w)Nu   Validação de login falhou: )r+   r4   r   r   r5   r6   r7   s      r)   validate_user_login_datar>   *   sK     "{{4   "?Ax HIr<   c                     	 t               }|j                  |       S # t        $ r'}t        j                  dt        |               d}~ww xY w)zValida mensagem de chat.u    Validação de mensagem falhou: N)r-   r4   r   r   r5   r6   r7   s      r)   validate_chat_messager@   2   sK    "${{4   "B3q6( KLr<   c                     t        | t              s| S | j                  dd      j                  dd      } dj                  d | D              } | S )zSanitiza entrada de texto.<z&lt;>z&gt; c              3   >   K   | ]  }t        |      d k\  s|  yw)    N)ord).0chars     r)   	<genexpr>z!sanitize_input.<locals>.<genexpr>B   s     <DCIO4<s   )
isinstancer6   replacejoin)texts    r)   sanitize_inputrO   ;   sG    dC <<V$,,S&9D77<D<<DKr(   N)r/   marshmallowr   r   r   r   src.securityr   r	   r+   r-   r;   r>   r@   rO   r'   r(   r)   <module>rR      sK    ( A A (
@ 
@f ) )	r(   