
    Z'i	                         d dl Z d dlmZ d dlmZ d dlmZ d dlmZ	 d dl
mZ d dlmZ  G d d	e      Z G d
 de      Z G d de	      Zy)    N)HttpResponse)auth)translation)FetchFromCacheMiddleware)MiddlewareMixin)configc                       e Zd ZdZd Zd Zy)BasicAuthMiddlewareHTTP_AUTHORIZATIONc                 8    t        dd      }d|d<   d|_        |S )Nzv<html><title>Auth required</title><body>
                                <h1>Authorization Required</h1></body></html>z	text/html)content_typezBasic realm="OPDS"zWWW-Authenticatei  )r   status_code)selfresponses     %/opt/sopds/opds_catalog/middleware.pyunauthedzBasicAuthMiddleware.unauthed   s.     !Q_jl';#$"    c                 :   t         j                  sy 	 |j                  | j                     }|j                  dd      \  }}d|j                         k7  r| j                         S t        j                  |j                               j                  d      }|j                  dd      \  }}t        j                  ||      }|r*|j                  r||_        t        j                   ||       y | j                         S # t        $ r | j                         cY S w xY w)N    basiczutf-8:)usernamepassword)r   
SOPDS_AUTHMETAheaderKeyErrorr   splitlowerbase64	b64decodestripdecoder   authenticate	is_activeuserlogin)r   requestauthentication	auth_meth	auth_datar   r   r'   s           r   process_requestz#BasicAuthMiddleware.process_request   s      	#$\\$++6N "0!5!5c!!<Iioo''==?"$$Y__%67>>wG	&__S3(  (XFDNNGLJJw%}}  	#==?"	#s   C> >DDN)__name__
__module____qualname__r   r   r-    r   r   r
   r
      s    !Fr   r
   c                       e Zd Zd Zy)SOPDSLocaleMiddlewarec                     t         j                  |_        t        j                  |j                         |j                  |_        y N)r   SOPDS_LANGUAGELANGr   activateLANGUAGE_CODE)r   r)   s     r   r-   z%SOPDSLocaleMiddleware.process_request7   s-    !00GL  .$+LLG!r   N)r.   r/   r0   r-   r1   r   r   r3   r3   5   s    1r   r3   c                        e Zd Z fdZ xZS )r   c                 X    |j                   j                  sy t        t        |   |      S r5   )r'   is_authenticatedsuperr   r-   )r   r)   	__class__s     r   r-   z(FetchFromCacheMiddleware.process_request>   s&    ||,,14HQQr   )r.   r/   r0   r-   __classcell__)r>   s   @r   r   r   <   s    R Rr   r   )r!   django.httpr   django.contribr   django.utilsr   django.middleware.cacher   DjangoFetchFromCacheMiddlewaredjango.utils.deprecationr   	constancer   objectr
   r3   r1   r   r   <module>rH      sB     $  $ ^ 4 '& 'T1O 1R= Rr   