
    Nyi		                         S SK JrJr  S SKrS SKrS SKrS SKrS SKJr  SSK	J
r
  SSKJr  \" S/SS	9r1 S
krS\SS4S jrS\S\S-  4S jrS\4S jrS\4S jrS\4S jrS\4S jrg)    )RequestHTTPExceptionN)CryptContext   )
SECRET_KEY)get_user_by_idbcryptauto)schemes
deprecated>   PUTPOSTPATCHDELETErequestreturnc                 p   U R                   R                  5         [        R                  " S5      U R                   S'   [        R                  " S5      U R                   S'   [	        [
        R
                  " 5       5      U R                   S'   [	        [
        R
                  " 5       5      U R                   S'   g )N    sidcsrf
created_at)sessionclearsecretstoken_urlsafeinttime)r   s    (/home/mario/Escritorio/furbo/app/deps.pyrotate_sessionr      sv    OO$2226GOOE%33B7GOOF$'		$4GOOL!$'		$4GOOL!    tokenc                     U R                   R                  S5      nU(       a>  U(       a7  [        R                  " [	        U5      [	        U=(       d    S5      5      (       d
  [        SSS9eg )Nr      u   CSRF token inválidostatus_codedetail)r   gethmaccompare_digeststrr   )r   r!   sesss      r   require_csrfr-      sO    ??v&DuD$7$7D	3u{PRCS$T$T4JKK %Ur    c                 z    U R                   [        ;   a'  U R                  R                  S5      n[	        X5        g g )NzX-CSRF-Token)methodUNSAFE_METHODSheadersr(   r-   )r   r!   s     r   _enforce_csrf_if_unsafer2      s/    ~~'##N3W$ (r    c                 p    U R                   R                  S5      nU(       d  g [        [        U5      5      $ )Nuser_id)r   r(   r   r   )r   r4   s     r   current_userr5   $   s+    oo!!),G#g,''r    c                 2   [        U 5      nU(       d
  [        SSS9e[        U 5        [        U[        R
                  5      (       a  US   O[        UR                  SS5      5      =(       d    Sn[        U5      R                  5       S:w  a
  [        SSS9eU$ )	N  No autenticador%   roler#   adminr$   zSolo administradores	r5   r   r2   
isinstancesqlite3Rowr+   r(   lowerr   mer9   s      r   require_adminrB   *   s|    	g	B4DEEG$$R55BvJ3rvvfb?Q;RYWYD
4yG#4JKKIr    c                 2   [        U 5      nU(       d
  [        SSS9e[        U 5        [        U[        R
                  5      (       a  US   O[        UR                  SS5      5      =(       d    Sn[        U5      R                  5       S;  a
  [        SSS9eU$ )	Nr7   r8   r%   r9   r#   )docenter:   r$   zSolo docentes o adminr;   r@   s      r   require_docente_or_adminrE   4   s}    	g	B4DEEG$$R55BvJ3rvvfb?Q;RYWYD
4y 444KLLIr    )fastapir   r   r   r   r)   r=   passlib.contextr   databaser   crudr   pwd_contextr0   r   r+   r-   r2   r5   rB   rE    r    r   <module>rL      s    *     (     H:&A35G 5 5L' L#* L
%W %
(' (7 g r    