o
    h                     @   sP  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 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+e	eddG dd deZ,e,- Z.e	eddG dd deZ/ee/- Z0dS )    )REDIRECT_FIELD_NAME)HttpResponseRedirect)render)reverse)method_decorator)View)csrf_exempt)consumer)DiscoveryFailure)AttrInfoFetchRequest)SRegRequest)login_not_required)QUERY_EMAIL)complete_social_loginrender_authentication_error)SocialLogin)OpenIDProvider   )	AuthError   )	LoginForm)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'   c/var/www/html/pos/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/openid/views.py_openid_consumer   s
   
r)   dispatch)namec                       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"   superr*   )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"   r0   r!   r5   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openidr5   )	r7   r8   r:   r;   r
   error_class_errorsr   r9   r<   r'   r'   r(   post9   s   zOpenIDLoginView.postc                 C   sh   | j jdkrd| j jvr| j| j jt| j jdddS | tt| j j t| j j	  S )NGETr>   process)nextrC   )initial)
r!   methodrB   
form_classr   r   dictlistitemsPOSTr0   r'   r'   r(   r7   C   s   "zOpenIDLoginView.get_formc                 C      t | j||S r-   r)   r!   r0   r"   r#   r'   r'   r(   
get_clientP      zOpenIDLoginView.get_clientc                 C   s   |  d| jdS )NREALM/)get_settingsr   r!   build_absolute_uri)r0   r"   r'   r'   r(   	get_realmS   s   zOpenIDLoginView.get_realmc                 C   s   t tS r-   )r   callbackrL   r'   r'   r(   get_callback_urlX   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)rZ   extra_attributesrD   )r8   r!   r"   cleaned_datarP   rV   beginr   r   r   requestFieldaddExtensionr   r   addr   r   rB   r   r   stash_statereturn_to_argsredirectURLrU   rX   r   )r0   r5   r!   r"   r#   r&   realmauth_requestsregr+   axr$   r[   _rZ   redirect_urlr'   r'   r(   r:   [   s8   





z#OpenIDLoginView.perform_openid_auth)__name__
__module____qualname__r9   r   rG   r   r.   r*   r   rA   r7   rP   rV   rX   r:   __classcell__r'   r'   r3   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"   rB   r   rP   get_openid_responsestatusr	   SUCCESSsociallogin_from_responser   unstash_statestatecomplete_loginCANCELr   	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(   rv      s   z!OpenIDCallbackView.complete_loginc                 C   s   t | j| j|dS )N)r}   )r   r!   r"   )r0   r}   r'   r'   r(   rz      s   zOpenIDCallbackView.render_errorc                 C   rM   r-   rN   rO   r'   r'   r(   rP      rQ   zOpenIDCallbackView.get_clientc                 C   s8   | tt| jj t| jj  | j| jjS r-   )	completerH   rI   r!   rB   rJ   rK   rU   path)r0   r&   r'   r'   r(   rp      s   "z&OpenIDCallbackView.get_openid_responseN)rj   rk   rl   r   r.   r   rA   rv   rz   rP   rp   r'   r'   r'   r(   rn      s    rn   N)1django.contrib.authr   django.httpr   django.shortcutsr   django.urlsr   django.utils.decoratorsr   django.viewsr   django.views.decorators.csrfr   openid.consumerr	   openid.consumer.discoverr
   openid.extensions.axr   r   openid.extensions.sregr   #allauth.account.internal.decoratorsr   "allauth.socialaccount.app_settingsr   allauth.socialaccount.helpersr   r   allauth.socialaccount.modelsr   /allauth.socialaccount.providers.openid.providerr   baser   formsr   utilsr   r   r   r   r)   r,   as_viewr|   rn   rW   r'   r'   r'   r(   <module>   s4    
Z
&