o
    gfD                     @   s  d 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
 ddlmZ ddlmZ ddlmZmZmZmZ dd	lmZmZ ed
edZededZeddZeedddd Zee dd Ze
dd Ze
e ed!ddZdd Zdd Zd!dd Z dS )"zViews

Notes:
    * Some views are marked to avoid csrf tocken check because they rely
      on third party providers that (if using POST) won't be sending csrf
      token back.
    )quote)HttpResponseRedirectHttpResponse)loginREDIRECT_FIELD_NAME)login_required)messages)csrf_exempt)sanitize_redirectsettingbackend_settingclean_partial_pipeline)dsa_viewdisconnect_viewSOCIAL_AUTH_LOGIN_REDIRECT_URLLOGIN_REDIRECT_URLLOGIN_ERROR_URL	LOGIN_URL SOCIAL_AUTH_PARTIAL_PIPELINE_KEYpartial_pipelineSOCIAL_AUTH_COMPLETE_URL_NAMEsocialauth_completec                 C   s
   t | |S )zStart authentication process)auth_process)requestbackend r   R/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/views.pyauth   s   
r   c                 O   s:   | j  rt| |g|R i |S t| |g|R i |S )zgAuthentication complete view, override this view if transaction
    management doesn't suit your needs.)useris_authenticatedassociate_completecomplete_process)r   r   argskwargsr   r   r   complete!   s   
r$   c                 O   sj   | j td}t| || jg|R i |}|s!t|dt}t
|S t|tr(|S |p0t|dp0t	}t
|S )Authentication complete process r   (SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL)sessiongetr   auth_completer   r   r   
isinstancer   DEFAULT_REDIRECTr   )r   r   r"   r#   redirect_valuer   urlr   r   r   r    ,   s   
r    Nc                 C   s2   | | j| | jtdpt|dpt}t|S )z6Disconnects given backend from current logged in user.r&   #SOCIAL_AUTH_DISCONNECT_REDIRECT_URL)
disconnectr   REQUESTr)   r   r   r,   r   )r   r   association_idr.   r   r   r   r0   ?   s   r0   c                 C   s   | j dkr| jn| j}tdg D ]}||v r|| | j|< qt|v r9|t }tddr2t|  |}|p5t| jt< t	|  |j
rFt| S t| ddS )z!Authenticate using social backendPOST$SOCIAL_AUTH_FIELDS_STORED_IN_SESSIONSOCIAL_AUTH_SANITIZE_REDIRECTSTztext/html;charset=UTF-8)content_type)methodr3   GETr   r(   r   r
   get_hostr,   r   uses_redirectr   auth_urlr   	auth_html)r   r   data
field_nameredirectr   r   r   r   K   s    
r   c                 O   s  | j tdp| jtd}t| |g|R i |}t|tr!|S |s,| j r,t	|S d}|rt
|ddrt
|dd}t| | |j}|rM|pIt| j t< tddrp| }	|	rpz| j |	 W n tyo   | j d Y nw |j| j d< t|d	}
|
r|r|
}n!|pt|d
pt}ntdd}t|dt}ntdd}t|dt}|rt| | |r||krt|}d|v r|dt|f 7 }t	|S |dt|f 7 }t	|S )r%   r&   N	is_activeTis_newFSOCIAL_AUTH_SESSION_EXPIRATIONsocial_auth_last_login_backend!SOCIAL_AUTH_NEW_USER_REDIRECT_URLr   !SOCIAL_AUTH_INACTIVE_USER_MESSAGESOCIAL_AUTH_INACTIVE_USER_URLLOGIN_ERROR_MESSAGEr   ?z&%s=%sz?%s=%s)r(   r)   r   r1   r*   r+   r   r   r   r   getattrr   social_userr,   r   expiration_datetime
set_expiryOverflowErrorproviderr   r   r   errorr   )r   r   r"   r#   r-   r   msgrA   rJ   
expirationnew_user_redirectr.   r   r   r   r!   f   sn   




r!   c           	      O   s   |r|  sd}| jtrF| jt}| }|r||d< |j|g|R d| i|\}}}d|v rF|d j|jjkrF|j	|d|i|S |j
||| d|S )z9Complete auth process. Return authenticated user or None.Nr   r   r   pipeline_index)r   r   )r   r(   r)   PIPELINE_KEYpopcopyfrom_session_dictnameAUTH_BACKENDcontinue_pipeliner*   )	r   r   r   r"   r#   r=   idxxargsxkwargsr   r   r   r*      s(   
r*   )N)!__doc__urllib2r   django.httpr   r   django.contrib.authr   r   django.contrib.auth.decoratorsr   django.contribr   django.views.decorators.csrfr	   social_auth.utilsr
   r   r   r   social_auth.decoratorsr   r   r,   r   rT   r   r$   r    r0   r   r!   r*   r   r   r   r   <module>   s8    

	
	H