a
    Qx_                     @   s   d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZ d dlmZ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G dd deZdS )    )absolute_import)reverse)	providers)complete_social_loginrender_authentication_error)SocialLoginSocialToken)OAuthClient
OAuthError   )
AuthAction	AuthErrorc                   @   s$   e Zd Zdd Zdd Zdd ZdS )OAuthAdapterc                 C   s
   || _ d S N)request)selfr    r   c/var/www/html/Ranjet/env/lib/python3.9/site-packages/allauth/socialaccount/providers/oauth/views.py__init__   s    zOAuthAdapter.__init__c                 C   s   t dS )z0
        Returns a SocialLogin instance
        N)NotImplementedError)r   r   appr   r   r   complete_login   s    zOAuthAdapter.complete_loginc                 C   s   t j| j| jS r   )r   registryZby_idprovider_idr   )r   r   r   r   get_provider   s    zOAuthAdapter.get_providerN)__name__
__module____qualname__r   r   r   r   r   r   r   r      s   r   c                   @   s    e Zd Zedd Zdd ZdS )	OAuthViewc                    s    fdd}|S )Nc                    s.    }| |_  | |_|j| g|R i |S r   )r   adapterdispatch)r   argskwargsr   r   clsr   r   view$   s    
z$OAuthView.adapter_view.<locals>.viewr   )r$   r   r%   r   r#   r   adapter_view"   s    zOAuthView.adapter_viewc              
   C   s\   | j  }||}d||}i }|r4||d< t||j|j| j j| j j	|||d}|S )N scope)
parametersprovider)
r   r   get_appjoinZ	get_scoper	   Z	client_idZsecretZrequest_token_urlZaccess_token_url)r   r   callback_urlr*   r   r(   r)   clientr   r   r   _get_client,   s"    


zOAuthView._get_clientN)r   r   r   classmethodr&   r/   r   r   r   r   r   !   s   
	r   c                   @   s   e Zd Zdd ZdS )OAuthLoginViewc           	   
   C   s   t | jjd }t| |jdtj}| j	 }|
||pF| jj}|||}| ||}z|||W S  ty } zt|| jj|dW  Y d }~S d }~0 0 d S )N	_callbackaction	exception)r   r   r   r   Zstash_stateGETgetr   ZAUTHENTICATEr   Zget_auth_urlZauthorize_urlZget_auth_paramsr/   Zget_redirectr
   r   )	r   r   r-   r3   r*   Zauth_urlZauth_paramsr.   er   r   r   r    A   s    


zOAuthLoginView.dispatchNr   r   r   r    r   r   r   r   r1   @   s   r1   c                   @   s   e Zd Zdd ZdS )OAuthCallbackViewc              
   C   s   t | jjd }| ||}| sZd|jv r6tj}ntj}t	|d}t
|| jj||dS | j |}zT| }t||d |ddd}| jj||||d	}	||	_t||	_t||	W S  t y }
 zt
|| jj|
d
W  Y d}
~
S d}
~
0 0 dS )z
        View to handle final steps of OAuth based authentication where the user
        gets redirected back to from the service provider
        r2   Zdenied)Zoauth_client)errorextra_contextZoauth_tokenZoauth_token_secret )r   tokenZtoken_secret)responser4   N)r   r   r   r/   Zis_validr6   r   Z	CANCELLEDUNKNOWNdictr   r   r+   Zget_access_tokenr   r7   r   r>   r   Zunstash_statestater   r
   )r   r   Zlogin_done_urlr.   r;   r<   r   Zaccess_tokenr>   Zloginr8   r   r   r   r    R   s>    



zOAuthCallbackView.dispatchNr9   r   r   r   r   r:   Q   s   r:   N)
__future__r   Zdjango.urlsr   Zallauth.socialaccountr   Zallauth.socialaccount.helpersr   r   Zallauth.socialaccount.modelsr   r   Z,allauth.socialaccount.providers.oauth.clientr	   r
   baser   r   objectr   r   r1   r:   r   r   r   r   <module>   s   