o
    Lf                     @   s   d dl 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 d dlmZmZ e eZG d	d
 d
eZG dd deZG dd deeZG dd deZdS )    N)reverse)get_adapter)complete_social_loginrender_authentication_error)SocialLoginSocialToken)
AuthAction	AuthError)OAuthLoginMixin)OAuthClient
OAuthErrorc                   @   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   l/var/www/html/humari/django-venv/lib/python3.10/site-packages/allauth/socialaccount/providers/oauth/views.py__init__   s   
zOAuthAdapter.__init__c                 C   s   t )z0
        Returns a SocialLogin instance
        )NotImplementedError)r   r   appr   r   r   complete_login   s   zOAuthAdapter.complete_loginc                 C   s(   t | j}|j| j| jd}|| jS )N)provider)r   r   get_appprovider_idget_provider)r   adapterr   r   r   r   r   #   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   r   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   sX   | j  }|j}d||}i }|r||d< t||j|j| j j| j j	|||d}|S )N scope)
parametersr   )
r   r   r   join	get_scoper   	client_idsecretrequest_token_urlaccess_token_url)r   r   callback_urlr   r   r(   r)   clientr   r   r   _get_client4   s"   

zOAuthView._get_clientN)r   r   r   classmethodr&   r2   r   r   r   r   r   )   s    
	r   c                   @      e Zd Zdd ZdS )OAuthLoginViewc              
   O   s   t | jjd }t| |jdtj}| j	 }|
||p#| jj}|||}| ||}	z|	||W S  tyW }
 ztjddd t|||
dW  Y d }
~
S d }
~
ww )N	_callbackactionzOAuth authentication errorT)exc_info	exception)r   r   r   r   stash_stateGETgetr   AUTHENTICATEr   get_auth_urlauthorize_urlget_auth_paramsr2   get_redirectr   loggererrorr   )r   r   r!   r"   r0   r7   r   auth_urlauth_paramsr1   er   r   r   loginI   s   

zOAuthLoginView.loginN)r   r   r   rH   r   r   r   r   r5   H       r5   c                   @   r4   )OAuthCallbackViewc              
   C   s   | j  }t| j jd }| ||}| s.d|jv r tj}ntj	}t
||||| ddS |j}z*| }t||d |ddd}| j j||||d	}	||	_t||	_t||	W S  tyt }
 zt
|||
d
W  Y d}
~
S d}
~
ww )z
        View to handle final steps of OAuth based authentication where the user
        gets redirected back to from the service provider
        r6   denied)oauth_clientcallback_view)rD   extra_contextoauth_tokenoauth_token_secret )r   tokentoken_secret)responser9   N)r   r   r   r   r2   is_validr<   r	   	CANCELLEDUNKNOWNr   r   get_access_tokenr   r=   r   rR   r   unstash_statestater   r   )r   r   r   login_done_urlr1   rD   r   access_tokenrR   rH   rG   r   r   r   r    Y   sB   

	
zOAuthCallbackView.dispatchN)r   r   r   r    r   r   r   r   rJ   X   rI   rJ   )loggingdjango.urlsr   allauth.socialaccount.adapterr   allauth.socialaccount.helpersr   r   allauth.socialaccount.modelsr   r   .allauth.socialaccount.providers.base.constantsr   r	   +allauth.socialaccount.providers.base.mixinsr
   ,allauth.socialaccount.providers.oauth.clientr   r   	getLoggerr   rC   objectr   r   r5   rJ   r   r   r   r   <module>   s    
