o
    Lf$
                     @   s   d dl Z d dlZd dlZd dlZd dl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 d d
lmZmZ ddlmZ G dd deZe ZeeddG dd deZe ZdS )    N)HttpResponseRedirectrender)reverse)method_decorator)	urlencode)View)csrf_exempt)get_adapter)complete_social_loginrender_authentication_error   )TelegramProviderc                   @   s   e Zd Zdd ZdS )	LoginViewc                 C   sV   t  |tj}|tdd |j  }dt|d|jj	dd|d }t
|S )Ntelegram_callback?z https://oauth.telegram.org/auth?/write0)originbot_idrequest_accessembed	return_to)r
   get_providerr   idbuild_absolute_urir   GETr   app	client_idr   )selfrequestproviderr   url r$   o/var/www/html/humari/django-venv/lib/python3.10/site-packages/allauth/socialaccount/providers/telegram/views.pydispatch   s   	zLoginView.dispatchN)__name__
__module____qualname__r&   r$   r$   r$   r%   r      s    r   r&   )namec                   @   s   e Zd Zdd Zdd ZdS )CallbackViewc                 C   s
   t |dS )Nztelegram/callback.htmlr   )r    r!   r$   r$   r%   get0   s   
zCallbackView.getc                 C   s  |j d}ddt|d   }tt|| }t }||t	j
}|d}dtdd | D }|jj}	t|	  }
t|
| tj }t|d}| }||ksgt | |krpt||d	|id
S |||}|jd}|r||jd< t||S )NtgAuthResult=   hash
c                 S   s   g | ]
\}}d  ||qS )z{}={})format).0kvr$   r$   r%   
<listcomp>:   s    z%CallbackView.post.<locals>.<listcomp>	auth_dateresponse)r"   extra_contextprocess) POSTr,   lenjsonloadsbase64	b64decoder
   r   r   r   popjoinsorteditemsr   secrethashlibsha256encodedigesthmacnew	hexdigestintget_auth_date_validitytimer   sociallogin_from_responser   stater   )r    r!   resultpaddingdataadapterr"   r0   payloadtokentoken_sha256expected_hashr7   auth_date_validityloginr:   r$   r$   r%   post3   s2   



zCallbackView.postN)r'   r(   r)   r,   r\   r$   r$   r$   r%   r+   .   s    r+   )r?   rF   rJ   r=   rO   django.httpr   django.shortcutsr   django.urlsr   django.utils.decoratorsr   django.utils.httpr   django.viewsr   django.views.decorators.csrfr	   allauth.socialaccount.adapterr
   allauth.socialaccount.helpersr   r   r"   r   r   as_viewr[   r+   callbackr$   r$   r$   r%   <module>   s(    
