o
    bc
                     @   sr   d dl mZ d dlmZ d dlmZ ddlmZmZm	Z	 ddl
mZmZ e ZG dd deZG d	d
 d
eZdS )    )settings)Signal)HttpResponseRedirect   )FrameworkIntegration	RemoteApp
OAuthError)OAuth1SessionOAuth2Sessionc                   @   s2   e Zd ZeZeZdddZdd Ze	dd Z
dS )	DjangoIntegrationNc                 C   s   t j| j| j|||d d S )N)Zsendernametokenrefresh_tokenaccess_token)token_updatesend	__class__r   )selfr   r   r    r   m/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/integrations/django_client/integration.pyupdate_token   s   
zDjangoIntegration.update_tokenc                 C   s|   |r|j  S |jdkr/|j d}|r |j d}t||d|j d|j dd}|S |jd|jdd}|S )NGETerrorZerror_description)r   descriptioncodestate)r   r   )r   dictmethodgetr   POST)r   Zrequest_token_urlrequestr   r   paramsr   r   r   generate_access_token_params   s   



	

z.DjangoIntegration.generate_access_token_paramsc                 C   s   t tdd }|r||S d S )NZAUTHLIB_OAUTH_CLIENTS)getattrr   r   )Zoauthr   r!   configr   r   r   load_config-   s   
zDjangoIntegration.load_config)NN)__name__
__module____qualname__r	   Zoauth1_client_clsr
   Zoauth2_client_clsr   r"   staticmethodr%   r   r   r   r   r      s    
	r   c                   @   s(   e Zd Zd	ddZdd Zd
ddZdS )DjangoRemoteAppNc                 K   s4   | j |fi |}| j|fd|i| t|d S )a$  Create a HTTP Redirect for Authorization Endpoint.

        :param request: HTTP request instance from Django view.
        :param redirect_uri: Callback or redirect URI for authorization.
        :param kwargs: Extra parameters to include.
        :return: A HTTP redirect response.
        redirect_uriurl)Zcreate_authorization_urlZsave_authorize_datar   )r   r    r+   kwargsrvr   r   r   authorize_redirect5   s   z"DjangoRemoteApp.authorize_redirectc                 K   s$   |  |}|| | jdi |S )zFetch access token in one step.

        :param request: HTTP request instance from Django view.
        :return: A token dict.
        Nr   )Zretrieve_access_token_paramsupdateZfetch_access_token)r   r    r-   r!   r   r   r   authorize_access_tokenA   s   

z&DjangoRemoteApp.authorize_access_tokenx   c                 C   s   |  ||||S N)Z_parse_id_token)r   r    r   Zclaims_optionsZleewayr   r   r   parse_id_tokenK   s   zDjangoRemoteApp.parse_id_tokenr3   )Nr2   )r&   r'   r(   r/   r1   r4   r   r   r   r   r*   4   s    

r*   N)Zdjango.confr   Zdjango.dispatchr   Zdjango.httpr   Zbase_clientr   r   r   Zrequests_clientr	   r
   r   r   r*   r   r   r   r   <module>   s    )