o
    Lf                     @   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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)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   Consumerr   session)requestproviderendpointserver_settingsr   storeclient r$   m/var/www/html/humari/django-venv/lib/python3.10/site-packages/allauth/socialaccount/providers/openid/views.py_openid_consumer   s
   
r&   c                       s`   e Zd ZdZeZeZ fddZdd Z	dd Z
dd	 Zd
d Zdd Zdd Zdd Z  ZS )OpenIDLoginViewzopenid/login.htmlc                    s&   |  || _t j|g|R i |S N)provider_classr   superdispatch)selfr   argskwargs	__class__r$   r%   r+   &   s   zOpenIDLoginView.dispatchc              
   C   sh   |   }| st|| jd|iS z| |W S  ttfy3 } zt|| j|dW  Y d }~S d }~ww )Nform)	exception)	get_formis_validr   template_nameperform_openid_authUnicodeDecodeErrorr   r   r   r,   r   r1   er$   r$   r%   r   *   s   zOpenIDLoginView.getc              
   C   sj   |   }| r,z| |W S  ttfy+ } z||g|jd< W Y d }~nd }~ww t|| jd|iS )Nopenidr1   )	r3   r4   r6   r7   r   error_class_errorsr   r5   r8   r$   r$   r%   post5   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GETr:   nextprocess)r?   r@   )initial)	r   methodr>   
form_classr   dictlistitemsPOSTr,   r$   r$   r%   r3   ?   s   "zOpenIDLoginView.get_formc                 C      t | j||S r(   r&   r   r,   r   r    r$   r$   r%   
get_clientL      zOpenIDLoginView.get_clientc                 C   s   |  d| jdS )NREALM/)get_settingsr   r   build_absolute_uri)r,   r   r$   r$   r%   	get_realmO   s   zOpenIDLoginView.get_realmc                 C   s   t tS r(   )r   callbackrH   r$   r$   r%   get_callback_urlT   s   z OpenIDLoginView.get_callback_urlc                 C   s&  |  s|S | j}| j}|jd }| ||}| |}||}trmt }t	D ]	}	|j
|	dd q(|| t }
tD ]}	|
t|	dd q<||jd}|dg }|D ]\}}	}|
t|	|d qY||
 t| d|jv r|jd r|jd |jd< ||||  }t|S )Nr:   T)
field_namerequired)rV   extra_attributesr?   )r4   r   r   cleaned_datarL   rR   beginr   r   r   requestFieldaddExtensionr
   r   addr	   r   r>   r   r   stash_statereturn_to_argsredirectURLrQ   rT   r   )r,   r1   r   r   r    r#   realmauth_requestsregnameaxr!   rW   _rV   redirect_urlr$   r$   r%   r6   W   s8   





z#OpenIDLoginView.perform_openid_auth)__name__
__module____qualname__r5   r   rC   r   r)   r+   r   r=   r3   rL   rR   rT   r6   __classcell__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r1|	||}t
||_| |S |jtjkr;tj}ntj}| |S )Nzopenid.op_endpoint )r)   r   r>   r   rL   get_openid_responsestatusr   SUCCESSsociallogin_from_responser   unstash_statestatecomplete_loginCANCELr   	CANCELLEDUNKNOWNrender_error)r,   r   r   r    r#   responseloginerrorr$   r$   r%   r      s   


zOpenIDCallbackView.getc                 C   s   t | j|S r(   )r   r   )r,   ry   r$   r$   r%   rs      s   z!OpenIDCallbackView.complete_loginc                 C   s   t | j| j|dS )N)rz   )r   r   r   )r,   rz   r$   r$   r%   rw      s   zOpenIDCallbackView.render_errorc                 C   rI   r(   rJ   rK   r$   r$   r%   rL      rM   zOpenIDCallbackView.get_clientc                 C   s8   | tt| jj t| jj  | j| jjS r(   )	completerD   rE   r   r>   rF   rG   rQ   path)r,   r#   r$   r$   r%   rm      s   "z&OpenIDCallbackView.get_openid_responseN)rg   rh   ri   r   r)   r   r=   rs   rw   rL   rm   r$   r$   r$   r%   rk   ~   s    rk   N)+django.httpr   django.shortcutsr   django.urlsr   django.viewsr   django.views.decorators.csrfr   openid.consumerr   openid.consumer.discoverr   openid.extensions.axr	   r
   openid.extensions.sregr   "allauth.socialaccount.app_settingsr   allauth.socialaccount.helpersr   r   allauth.socialaccount.modelsr   baser   formsr   r   r   utilsr   r   r   r   r&   r'   as_viewry   rk   rS   r$   r$   r$   r%   <module>   s*    Z&