ó
    ¤#eeè  ã                   ó‚   • S SK r S SKrS SKrS SKrS SKrS SKJrJrJr  S r	S r
S rS rS rS rS	 rS
 rS rS rS rg)é    N)ÚrequestÚredirectÚabortc                 ó‚   • [         R                  " S5      n[        R                  " SU R	                  5       US5      nX4$ )Né   Úsha256é † )ÚosÚurandomÚhashlibÚpbkdf2_hmacÚencode)ÚpasswordÚsaltÚpw_hashs      Ú/var/www/vevn/security.pyÚhash_passwordr      s4   € Ü�:Š:�b‹>€DÜ×!Ò! (¨H¯O©OÓ,=¸tÀVÓL€GØˆ=Ðó    c           
      óÆ   • [         R                  " [        R                  U5      [        R
                  " SUR                  5       [        R                  U 5      S5      5      $ )Nr   r	   )ÚhmacÚcompare_digestÚbytesÚfromhexr   r   r   )r   r   r   s      r   Úcheck_passwordr      sE   € Ü×ÒÜ�‰�gÓÜ×Ò˜H h§o¡oÓ&7¼¿¹ÀtÓ9LÈfÓUóð r   c                  ój   • [         R                  " [        R                  R	                  SS5      5      $ )NÚdbz
users.json)ÚutilsÚsafejsonloadr
   ÚpathÚjoin© r   r   Ú	get_usersr"      s"   € Ü×ÒœbŸg™gŸl™l¨4°Ó>Ó?Ð?r   c                 ó.   • U =(       a    U [        5       ;   $ )N©r"   )Úusernames    r   Úis_userr&      s   € Ø×/˜¤I£KÑ/Ð/r   c                 óL   • [        5       nU =(       a    X;   =(       a    X   S   $ )NÚadminr$   ©r%   Úuserss     r   Úis_adminr+      s#   € Ü‹K€EØ×F˜Ñ)×F¨e©o¸gÑ.FÐFr   c                 óŠ   • U (       a  U(       d  g[        5       nU=(       a"    X;   =(       a    [        X    S   X    S   U5      $ )NFr   Úhash)r"   r   )r%   r   r*   s      r   Úvalid_credentialsr.      s?   € Þž8Øä‹K€EØ×u�XÑ&×u¬>¸%¹/È&Ñ:QÐSXÑSbÐciÑSjÐltÓ+uÐur   c                 ó@   • [        5       nU (       a  X;   a  X   S   $ / $ )NÚsurveysr$   r)   s     r   Úuser_surveysr1   %   s"   € Ü‹K€EÞ)1°hÓ6Gˆ5‰?˜9Ñ%ÐOÈRÐOr   c                 óp   • [        5       nSX    ;   a#  XU    S   ;   a  U (       a  X;   a
  X    S   U   $ 0 $ 0 $ )NÚfiltersr$   )r%   Úsurveyr*   s      r   Úuser_filtersr5   )   sE   € Ü‹K€EØ�E‘OÓ#¨¸±/À)Ñ2LÓ(LÞ5=À(ÓBSˆu‰˜yÑ)¨&Ñ1Ð[ÐY[Ð[àˆ	r   c                 óü   • [         R                  " [        R                  R	                  [        R                  R	                  SS5      S5      5      nU[        U 5      ;   =(       d    X;   =(       d    [        U 5      $ )Nr   r0   zpublic.json)r   r   r
   r   r    r1   r+   )r%   r4   Úpublics      r   Ú
has_surveyr8   0   sR   € Ü×Ò¤§¡§¡¬R¯W©W¯\©\¸$À	Ó-JÈMÓ ZÓ[€FØ”\ (Ó+Ñ+×U¨vÑ/?×UÄ8ÈHÓCUÐUr   c                 ó   ^ • U 4S jnU$ )ÚTODOc                  óô   >• [         R                  R                  S5      nUR                  S5      nU(       a  [        U5      (       a  T" S0 U D6$ [	        SR                  [         R                  5      5        g )Núbeaker.sessionr%   z/login&previous={}r!   )r   ÚenvironÚgetr&   r   ÚformatÚurl©ÚkwargsÚsessionr%   Úfns      €r   Úcheck_credentialsÚ'require_user.<locals>.check_credentials8   sW   ø€ Ü—/‘/×%Ñ%Ð&6Ó7ˆØ—;‘;˜zÓ*ˆÞœ ×)Ñ)Ù‘<˜‘<ÐäÐ)×0Ñ0´·±Ó=Õ>r   r!   )rD   rE   s   ` r   Úrequire_userrG   6   s   ø€ õ?ð Ðr   c                 ó   ^ • U 4S jnU$ )r:   c                  óº   >• [         R                  R                  S5      nUR                  S5      nU(       a  [        U5      (       a  T" S0 U D6$ [	        S5        g )Nr<   r%   i“  r!   )r   r=   r>   r+   r   rA   s      €r   Úcheck_adminÚ"require_admin.<locals>.check_adminC   sF   ø€ Ü—/‘/×%Ñ%Ð&6Ó7ˆØ—;‘;˜zÓ*ˆÞœ ×*Ñ*Ù‘<˜‘<Ðä�#�Jr   r!   )rD   rJ   s   ` r   Úrequire_adminrL   A   s   ø€ õð Ðr   )r
   Újsonr   r   r   Úbottler   r   r   r   r   r"   r&   r+   r.   r1   r5   r8   rG   rL   r!   r   r   Ú<module>rO      sP   ðç %× %Ó %ß +Ñ +òò
ò@ò0òGòvòPòòVò	ó	r   