o
    b^                     @   s   d dl Z d dlmZ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 d dlmZ d	d
lmZ ddlmZ e eZG dd deZG dd deZdS )    N)OAuth1RequestAuthorizationServer)TemporaryCredentialgenerate_token)
url_encode)cache)settings)HttpResponse   )exists_nonce_in_cache   )create_oauth_requestc                   @   sF   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dS )
BaseServerNc                 C   s^   || _ || _|d u rdd }|| _ttdi | _| jdd| _| jd}|r-|| _d S d S )Nc                   S   s   t dt ddS )N*   0   )oauth_tokenoauth_token_secretr    r   r   v/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/integrations/django_oauth1/authorization_server.pytoken_generator   s   z,BaseServer.__init__.<locals>.token_generatorZAUTHLIB_OAUTH1_PROVIDERZnonce_expires_inQ Zsignature_methods)	client_modeltoken_modelr   getattrr	   _configget_nonce_expires_inZSUPPORTED_SIGNATURE_METHODS)selfr   r   r   methodsr   r   r   __init__   s   
zBaseServer.__init__c                 C   s,   z	| j jj|dW S  | j jy   Y d S w )N)	client_id)r   objectsr   ZDoesNotExist)r   r!   r   r   r   get_client_by_id%   s
   zBaseServer.get_client_by_idc                 C   s   t ||| jS N)r   r   )r   noncerequestr   r   r   exists_nonce+   s   zBaseServer.exists_noncec                 C   s<   |j }|  }| j|d |d | | d}|  |S )Nr   r   )r   r   user_idr!   )
credentialr   r   Zget_user_idZget_client_idsave)r   r&   Ztemporary_credentialtokenitemr   r   r   create_token_credential.   s   z"BaseServer.create_token_credentialc                 C   s   |  |}| | |S r$   )create_oauth1_requestZvalidate_authorization_request)r   r&   reqr   r   r   check_authorization_request:   s   

z&BaseServer.check_authorization_requestc                 C   s
   t |tS r$   )r   r   )r   r&   r   r   r   r.   ?   s   
z BaseServer.create_oauth1_requestc                 C   s*   t t||d}|D ]\}}|||< q
|S )N)status)r
   r   )r   status_codepayloadheadersrespkvr   r   r   handle_responseB   s   
zBaseServer.handle_responser$   )
__name__
__module____qualname__r    r#   r'   r-   r0   r.   r8   r   r   r   r   r      s    
r   c                       s>   e Zd Zd fdd	Zdd Zdd Zdd	 Zd
d Z  ZS )CacheAuthorizationServerNc                    s8   t t| ||| | jdd| _| jdd| _d S )NZtemporary_credential_expires_inr   Ztemporary_credential_key_prefixztemporary_credential:)superr<   r    r   r   _temporary_expires_in _temporary_credential_key_prefix)r   r   r   r   	__class__r   r   r    J   s   

z!CacheAuthorizationServer.__init__c                 C   sT   | j }|  }|j}|j}||d  }||d< |r||d< tj||| jd t|S )Nr   r!   Zoauth_callbacktimeout)r?   r   r!   redirect_urir   setr>   r   )r   r&   
key_prefixr+   r!   rD   keyr   r   r   create_temporary_credentialR   s   z4CacheAuthorizationServer.create_temporary_credentialc                 C   s4   |j sd S | j}||j  }t|}|rt|S d S r$   )r+   r?   r   r   r   )r   r&   rF   rG   valuer   r   r   get_temporary_credential`   s   

z1CacheAuthorizationServer.get_temporary_credentialc                 C   s(   |j r| j}||j  }t| d S d S r$   )r+   r?   r   delete)r   r&   rF   rG   r   r   r   delete_temporary_credentialj   s
   
z4CacheAuthorizationServer.delete_temporary_credentialc                 C   sN   | j }td}|j}|j}||  }||d< |j|d< tj||| jd |S )N$   Zoauth_verifierr(   rB   )	r?   r   r)   userZget_oauth_tokenpkr   rE   r>   )r   r&   rF   Zverifierr)   rN   rG   r   r   r   create_authorization_verifierp   s   
z6CacheAuthorizationServer.create_authorization_verifierr$   )	r9   r:   r;   r    rH   rJ   rL   rP   __classcell__r   r   r@   r   r<   I   s    
r<   )loggingZauthlib.oauth1r   r   Z_AuthorizationServerr   Zauthlib.common.securityr   Zauthlib.common.urlsr   Zdjango.core.cacher   Zdjango.confr	   Zdjango.httpr
   r%   r   Zdjango_helpersr   	getLoggerr9   logr   r<   r   r   r   r   <module>   s    
7