a
    ΝGd                     @   sP   d dl mZ d dlmZmZ G dd deZG dd deZG dd deZd	S )
    )domain_matches)AuthBaseHTTPBasicAuthc                       s.   e Zd ZdZd fdd	Z fddZ  ZS )BasicAuthenticationFNc                    s   || _ tt| || d S N)domainsuperr   __init__)selfusernamepasswordr   	__class__ H/var/www/html/django/DPS/env/lib/python3.9/site-packages/coreapi/auth.pyr	      s    zBasicAuthentication.__init__c                    s    t || js|S tt| |S r   )r   r   r   r   __call__r
   requestr   r   r   r      s    zBasicAuthentication.__call__)N)__name__
__module____qualname__allow_cookiesr	   r   __classcell__r   r   r   r   r      s   r   c                   @   s&   e Zd ZdZdZdddZdd ZdS )	TokenAuthenticationFZBearerNc                 C   s   || _ || _|dur|| _dS )z
        * Use an unauthenticated client, and make a request to obtain a token.
        * Create an authenticated client using eg. `TokenAuthentication(token="<token>")`
        N)tokenr   scheme)r
   r   r   r   r   r   r   r	      s    zTokenAuthentication.__init__c                 C   s*   t || js|S d| j| jf |jd< |S )Nz%s %sAuthorization)r   r   r   r   headersr   r   r   r   r   !   s    zTokenAuthentication.__call__)NN)r   r   r   r   r   r	   r   r   r   r   r   r      s   

r   c                   @   s2   e Zd ZdZdZdZdddZdd Zd	d
 ZdS )SessionAuthenticationzy
    Enables session based login.

    * Make an initial request to obtain a CSRF token.
    * Make a login request.
    T)GETHEADOPTIONSTRACENc                 C   s   || _ || _d | _|| _d S r   )csrf_cookie_namecsrf_header_name
csrf_tokenr   )r
   r#   r$   r   r   r   r   r	   3   s    zSessionAuthentication.__init__c                 K   s   | j |jv r|j| j  | _d S r   )r#   cookiesr%   )r
   responsekwargsr   r   r   store_csrf_token9   s    z&SessionAuthentication.store_csrf_tokenc                 C   sV   t || js|S | jr:| jd ur:|j| jvr:| j|j| j< | jd urR|d| j	 |S )Nr'   )
r   r   r%   r$   methodsafe_methodsr   r#   register_hookr)   r   r   r   r   r   =   s    
zSessionAuthentication.__call__)NNN)	r   r   r   __doc__r   r+   r	   r)   r   r   r   r   r   r   )   s   
r   N)Zcoreapi.utilsr   Zrequests.authr   r   r   r   r   r   r   r   r   <module>   s   