a
    ‹Qx_¦  ã                   @   s   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 d d
lmZ d dlm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#m$Z$m%Z%m&Z& dd„ Z'G dd„ deƒZ(e( )¡ Z*G dd„ deƒZ+e	e+ )¡ ƒZ,dS )é    )ÚHttpResponseRedirect)Úrender)Úreverse)ÚView)Úcsrf_exempt)Úconsumer)ÚDiscoveryFailure)ÚAttrInfoÚFetchRequest)ÚSRegRequest)Ú	providers)ÚQUERY_EMAIL)Úcomplete_social_loginÚrender_authentication_error)ÚSocialLoginé   )Ú	AuthErroré   )Ú	LoginForm)ÚOpenIDProvider)ÚAXAttributesÚDBOpenIDStoreÚJSONSafeSessionÚ
SRegFieldsc                 C   s:   |  |¡}| dd¡}|rd ntƒ }t t| jƒ|¡}|S )NÚ	statelessF)Úget_server_settingsÚgetr   r   ZConsumerr   Zsession)ÚrequestÚproviderÚendpointÚserver_settingsr   ÚstoreÚclient© r#   úd/var/www/html/Ranjet/env/lib/python3.9/site-packages/allauth/socialaccount/providers/openid/views.pyÚ_openid_consumer   s
    
r%   c                   @   sP   e Zd ZdZeZeZdd„ Zdd„ Z	dd„ Z
dd	„ Zd
d„ Zdd„ Zdd„ ZdS )ÚOpenIDLoginViewzopenid/login.htmlc              
   C   sn   |   ¡ }| ¡ s"t|| jd|iƒS z|  |¡W S  ttfyh } zt|| jj	|dW  Y d }~S d }~0 0 d S )NÚform)Ú	exception)
Úget_formÚis_validr   Útemplate_nameÚperform_openid_authÚUnicodeDecodeErrorr   r   r   Úid©Úselfr   r'   Úer#   r#   r$   r   '   s    zOpenIDLoginView.getc              
   C   sj   |   ¡ }| ¡ rXz|  |¡W S  ttfyV } z| |g¡|jd< W Y d }~n
d }~0 0 t|| jd|iƒS )NÚopenidr'   )	r)   r*   r,   r-   r   Zerror_classZ_errorsr   r+   r/   r#   r#   r$   Úpost2   s    (zOpenIDLoginView.postc                 C   sh   | j jdkr>d| j jvr>| j| j j d¡| j j d¡dœdS |  tt| j j ¡ ƒt| j j ¡ ƒ ƒ¡S )NÚGETr2   ÚnextÚprocess)r5   r6   )Úinitial)	r   Úmethodr4   Ú
form_classr   ÚdictÚlistÚitemsÚPOST©r0   r#   r#   r$   r)   <   s    þÿ"ÿzOpenIDLoginView.get_formc                 C   s   t | j||ƒS ©N©r%   r   ©r0   r   r   r#   r#   r$   Ú
get_clientI   s    zOpenIDLoginView.get_clientc                 C   s   |  ¡  d| j d¡¡S )NZREALMú/)Zget_settingsr   r   Úbuild_absolute_uri)r0   r   r#   r#   r$   Ú	get_realmL   s    ÿzOpenIDLoginView.get_realmc                 C   s   t tƒS r?   )r   Úcallbackr>   r#   r#   r$   Úget_callback_urlQ   s    z OpenIDLoginView.get_callback_urlc                 C   s6  |  ¡ s|S | j}|  |¡}|jd }|  ||¡}|  |¡}| |¡}trætƒ }t	D ]}	|j
|	dd qT| |¡ tƒ }
tD ]}	|
 t|	dd¡ q|t|ƒ}| |j d¡¡}| dg ¡}|D ]\}}	}|
 t|	|d¡ q¾| |
¡ t |¡ d|jv r|jd r|jd |jd< | || |  ¡ ¡¡}t|ƒS )Nr2   T)Ú
field_nameÚrequired)rI   Úextra_attributesr5   )r*   r   r   Zcleaned_datarB   rE   Úbeginr   r   r   ZrequestFieldZaddExtensionr
   r   Úaddr	   r   r   r4   r   r   Zstash_stateZreturn_to_argsZredirectURLrD   rG   r   )r0   r'   r   r   r   r"   ÚrealmZauth_requestZsregÚnameZaxr    rJ   Ú_rI   Zredirect_urlr#   r#   r$   r,   T   s:    






ÿz#OpenIDLoginView.perform_openid_authN)Ú__name__Ú
__module__Ú__qualname__r+   r   r9   r   r   r   r3   r)   rB   rE   rG   r,   r#   r#   r#   r$   r&   "   s   
r&   c                   @   s<   e Zd ZeZdd„ ZeZdd„ Zdd„ Zdd„ Z	d	d
„ Z
dS )ÚOpenIDCallbackViewc                 C   s’   |   |¡}|j dd¡}|  ||¡}|  |¡}|jtjkrjtj	 
| j j|¡ ||¡}t |¡|_|  |¡S |jtjkr~tj}ntj}|  |¡S d S )Nzopenid.op_endpointÚ )r   r4   r   rB   Úget_openid_responseÚstatusr   ÚSUCCESSr   ÚregistryZby_idr.   Zsociallogin_from_responser   Zunstash_stateÚstateÚcomplete_loginZCANCELr   Z	CANCELLEDÚUNKNOWNÚrender_error)r0   r   r   r   r"   ÚresponseÚloginÚerrorr#   r#   r$   r      s     

ÿþ
zOpenIDCallbackView.getc                 C   s   t | j|ƒS r?   )r   r   )r0   r^   r#   r#   r$   rZ   ”   s    z!OpenIDCallbackView.complete_loginc                 C   s   t | j| jj|dS )N)r_   )r   r   r   r.   )r0   r_   r#   r#   r$   r\   —   s    zOpenIDCallbackView.render_errorc                 C   s   t | j||ƒS r?   r@   rA   r#   r#   r$   rB   š   s    zOpenIDCallbackView.get_clientc                 C   s8   |  tt| jj ¡ ƒt| jj ¡ ƒ ƒ| j | jj¡¡S r?   )	Zcompleter:   r;   r   r4   r<   r=   rD   Úpath)r0   r"   r#   r#   r$   rU      s    "þz&OpenIDCallbackView.get_openid_responseN)rP   rQ   rR   r   r   r   r3   rZ   r\   rB   rU   r#   r#   r#   r$   rS   |   s   rS   N)-Zdjango.httpr   Zdjango.shortcutsr   Zdjango.urlsr   Zdjango.viewsr   Zdjango.views.decorators.csrfr   Zopenid.consumerr   Zopenid.consumer.discoverr   Zopenid.extensions.axr	   r
   Zopenid.extensions.sregr   Zallauth.socialaccountr   Z"allauth.socialaccount.app_settingsr   Zallauth.socialaccount.helpersr   r   Zallauth.socialaccount.modelsr   Úbaser   Zformsr   r   r   Úutilsr   r   r   r   r%   r&   Zas_viewr^   rS   rF   r#   r#   r#   r$   Ú<module>   s*   W(