
    f                        d dl Z d dlZd dlmZ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 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!m"Z"m#Z#m$Z$  ej%        e&          Z' G d d          Z( e	ed           G d de(e                      Z)e)*                                Z+ G d de(e          Z,e,*                                Z- e	ed           G d de(e                      Z.e.*                                Z/ G d de(e          Z0e0*                                Z1 G d de(e          Z2e2*                                Z3dS )    N)HttpResponseHttpResponseRedirectJsonResponse)reverse)method_decorator)View)csrf_exempt)OneLogin_Saml2_AuthOneLogin_Saml2_Settings)get_adapter)get_next_redirect_url)complete_social_loginrender_authentication_error)SocialLogin)	AuthError)LoginSession   )build_saml_configdecode_relay_stateencode_relay_stateget_app_or_404prepare_django_requestc                        e Zd Zd Zd Zd ZdS )SAMLViewMixinc                     t          | j                  }t          | j        |j        j        |          }t          ||          }|S N)r   requestr   appsettingsr
   )selfproviderorganization_slugreqconfigauths         `/var/www/equiseq/venv/lib/python3.11/site-packages/allauth/socialaccount/providers/saml/views.py
build_authzSAMLViewMixin.build_auth#   sE    $T\22"L(,/1B
 
 #3//    c                 0    t          | j        |          }|S r   )r   r   r    r"   r   s      r&   get_appzSAMLViewMixin.get_app+   s    T\+<==
r(   c                 `    |                      |          }|                    | j                  S r   )r+   get_providerr   r*   s      r&   r-   zSAMLViewMixin.get_provider/   s*    ll,-----r(   N)__name__
__module____qualname__r'   r+   r-    r(   r&   r   r   "   sA            . . . . .r(   r   dispatch)namec                       e Zd Zd ZdS )ACSViewc                    |                      |          }|                     ||          }	 |                                 |                                }n# t          j        $ r dg}Y nw xY w|rqt                              dd                    |          d|	                                           t          ||j        ||	                                d          S |                                s!t          ||j        t          j                  S t          |j                            d                    }|                    ||          }d	D ]#}|                    |          }	|	r
|	|j        |<   $t)          |d
d          }
|                                |
j        d<   t/          dd|i          }t1          |          }|
                    |           |S )Ninvalid_responsez Error processing SAML response: z, z: )saml_errorssaml_last_error_reason)extra_context)error
RelayState)processnextsaml_acs_sessionsaml-acs-sessionloginsaml_finish_acsr"   )kwargs)r-   r'   process_response
get_errorsbinasciiErrorloggerr;   joinget_last_error_reasonr   idis_authenticatedr   	CANCELLEDr   POSTgetsociallogin_from_responsestater   	serializestorer   r   save)r    r   r"   r!   r%   errorsrelay_staterA   keyvalueacs_sessionurlresponses                r&   r2   zACSView.dispatch6   s   $$%677x):;;	'!!### __&&FF ~ 	* 	* 	*()FFF	*  	LLL99V$$$$d&@&@&B&B&BD   /#).2.H.H.J.J     $$&& 	.I,?    ))9)9,)G)GHH227DAA& 	) 	)COOC((E )#(C "7,>@RSS%*__%6%6'"'):;
 
 
 (,,"""s   A A+*A+Nr.   r/   r0   r2   r1   r(   r&   r5   r5   4   s#        * * * * *r(   r5   c                       e Zd Zd ZdS )FinishACSViewc                 T   |                      |          }t          |dd          }|j                            d          }|s/t                              d           t          ||j                  S |                                 t          j
        |          }t          ||          S )Nr?   r@   rA   z0Unable to finish login, SAML ACS session missing)r-   r   rS   rO   rH   r;   r   rK   deleter   deserializer   )r    r   r"   r!   rY   serialized_loginrA   s          r&   r2   zFinishACSView.dispatchg   s    $$%677"7,>@RSS&,0099 	ELLKLLL.wDDD'(899$We444r(   Nr\   r1   r(   r&   r^   r^   f   s#        	5 	5 	5 	5 	5r(   r^   c                       e Zd Zd ZdS )SLSViewc                    |                      |          }|                     ||          }j        j        }t	                    fd}|                    ||           }|s                              }t          |          S )Nc                  2                                     d S r   )logout)account_adapterr   s   r&   force_logoutz&SLSView.dispatch.<locals>.force_logout~   s    ""7+++++r(   )delete_session_cbkeep_local_session)r-   r'   userrL   get_account_adapterprocess_sloget_logout_redirect_urlr   )	r    r   r"   r!   r%   should_logoutri   redirect_torh   s	    `      @r&   r2   zSLSView.dispatchx   s    $$%677x):;;5-g66	, 	, 	, 	, 	, 	, &&*=?P ' 
 
  	K)AA'JJK#K000r(   Nr\   r1   r(   r&   rd   rd   v   s#        1 1 1 1 1r(   rd   c                       e Zd Zd ZdS )MetadataViewc                 \   |                      |          }t          | j        |j        j        |          }t          |d          }|                                }|                    |          }t          |          dk    rt          d|i          }d|_
        |S t          |d          S )NT)r   sp_validation_onlyr   rU   i  ztext/xml)contentcontent_type)r-   r   r   r   r   r   get_sp_metadatavalidate_metadatalenr   status_coder   )	r    r   r"   r!   r$   saml_settingsmetadatarU   resps	            r&   r2   zMetadataView.dispatch   s    $$%677"L(,/1B
 
 0
 
 
 !002200::v;;??6 233D"DKH:FFFFr(   Nr\   r1   r(   r&   rs   rs      s(        G G G G Gr(   rs   c                       e Zd Zd ZdS )	LoginViewc                     |                      |          }|                     ||          }| j        j                            d          }t          |          }t          ||          }|                    |          }t          |          S )Nr=   )r=   next_url)	return_to)	r-   r'   r   GETrO   r   r   rA   r   )	r    r   r"   r!   r%   r=   r   rV   redirects	            r&   r2   zLoginView.dispatch   s    $$%677x):;;,"&&y11(11(8LLL :::44#H---r(   Nr\   r1   r(   r&   r   r      s#        	. 	. 	. 	. 	.r(   r   )4rF   loggingdjango.httpr   r   r   django.urlsr   django.utils.decoratorsr   django.viewsr   django.views.decorators.csrfr	   onelogin.saml2.authr
   r   allauth.account.adapterr   rm   allauth.account.utilsr   allauth.socialaccount.helpersr   r   allauth.socialaccount.modelsr   .allauth.socialaccount.providers.base.constantsr   allauth.socialaccount.sessionsr   utilsr   r   r   r   r   	getLoggerr.   rH   r   r5   as_viewacsr^   
finish_acsrd   slsrs   r}   r   rA   r1   r(   r&   <module>r      s     H H H H H H H H H H       4 4 4 4 4 4       4 4 4 4 4 4 L L L L L L L L F F F F F F 7 7 7 7 7 7        5 4 4 4 4 4 D D D D D D 7 7 7 7 7 7              
	8	$	$. . . . . . . .$ +J///+ + + + +mT + + 0/+\ oo
5 
5 
5 
5 
5M4 
5 
5 
5 ""$$
 +J///1 1 1 1 1mT 1 1 0/1$ ooG G G G G=$ G G G( !!
. 
. 
. 
. 
.t 
. 
. 
. 	r(   