
    )Jf                        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 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'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          Z0e0.                                Z1 e	ed           G d de,e                      Z2e2.                                Z3 G d de,e          Z4e4.                                Z5 G d de,e          Z6e6.                                Z7dS )     N)HttpResponseHttpResponseRedirectJsonResponse)reverse)method_decorator)View)csrf_exempt)OneLogin_Saml2_AuthOneLogin_Saml2_Settings)OneLogin_Saml2_Error)get_adapter)get_next_redirect_url)complete_social_loginrender_authentication_error)SocialLogin)	AuthError)respond_to_login_on_get)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         m/home/alex/cs2snipeproduction/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_provider1   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                    |                      |          }|                     ||          }d }g }	 |                                 n;# t          j        $ r dg}d}Y n%t
          $ r}t          |          }Y d }~nd }~ww xY w|s|                                }|r^|                                p|}t          
                    dd                    |          d|           t          ||||d          S |                                st          ||t          j                  S t!          |j                            d	                    }|                    ||          }	d
D ]#}
|                    |
          }|r
||	j        |
<   $t+          |dd          }|	                                |j        d<   t1          dd|i          }t3          |          }|                    |           |S )Ninvalid_responsezInvalid responsez$Error processing SAML ACS response: , : )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binasciiErrorr   str
get_errorsget_last_error_reasonloggerr?   joinr   is_authenticatedr   	CANCELLEDr   POSTgetsociallogin_from_responsestater   	serializestorer   r   save)r"   r   r$   r#   r'   error_reasonerrorserelay_staterE   keyvalueacs_sessionurlresponses                  r(   r4   zACSView.dispatch8   sS   $$%677x):;;	"!!####~ 	. 	. 	.()F-LLL# 	" 	" 	"q66LLLLLL	" 	'__&&F 	5577G<LLLL99V$$$$ll4   /#).:     $$&& 	.)<    ))9)9,)G)GHH227DAA& 	) 	)COOC((E )#(C "7,>@RSS%*__%6%6'"'):;
 
 
 (,,"""s   A A>	A>%A99A>Nr0   r1   r2   r4   r3   r*   r(   r7   r7   6   s#        0 0 0 0 0r*   r7   c                       e Zd Zd ZdS )FinishACSViewc                 J   |                      |          }t          |dd          }|j                            d          }|s*t                              d           t          ||          S |                                 t          j	        |          }t          ||          S )NrC   rD   rE   z0Unable to finish login, SAML ACS session missing)r/   r   rW   rS   rN   r?   r   deleter   deserializer   )r"   r   r$   r#   r_   serialized_loginrE   s          r(   r4   zFinishACSView.dispatcho   s    $$%677"7,>@RSS&,0099 	BLLKLLL.wAAA'(899$We444r*   Nrb   r3   r*   r(   rd   rd   n   s#        	5 	5 	5 	5 	5r*   rd   c                       e Zd Zd ZdS )SLSViewc                 d   |                      |          }|                     ||          }j        j        }t	                    fd}d }d }	 |                    ||           }n&# t          $ r}	t          |	          }Y d }	~	nd }	~	ww xY w|                                }
|
rc|	                                p|}t                              dd                    |
          d|           t          |d          }d|_        |S |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_sessionz$Error processing SAML SLS response: r:   r;   z
text/plain)content_typei  )r/   r)   userrP   get_account_adapterprocess_slor   rK   rL   rM   rN   r?   rO   r   status_codeget_logout_redirect_urlr   )r"   r   r$   r#   r'   should_logoutro   redirect_torY   r[   rZ   resprn   s    `          @r(   r4   zSLSView.dispatch   sz   $$%677x):;;5-g66	, 	, 	, 	, 	, 	, 	"**".}CT +  KK $ 	" 	" 	"q66LLLLLL	""" 	5577G<LLLL99V$$$$ll4    <HHHD"DK 	K)AA'JJK#K000s   A- -
B7BBNrb   r3   r*   r(   rj   rj   ~   s#        1 1 1 1 1r*   rj   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   rZ   i  ztext/xml)contentrr   )r/   r   r   r    r!   r   get_sp_metadatavalidate_metadatalenr   rv   r   )	r"   r   r$   r#   r&   saml_settingsmetadatarZ   rz   s	            r(   r4   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*   Nrb   r3   r*   r(   r|   r|      s(        G G G G Gr*   r|   c                       e Zd Zd ZdS )	LoginViewc                 H   |                      |          }t          ||          }|r|S |                     ||          }| j        j                            d          }t          |          }t          ||          }|                    |          }	t          |	          S )NrA   )rA   next_url)	return_to)
r/   r   r)   r   GETrS   r   r   rE   r   )
r"   r   r$   r#   rz   r'   rA   r   r\   redirects
             r(   r4   zLoginView.dispatch   s    $$%677&w99 	Kx):;;,"&&y11(11(8LLL :::44#H---r*   Nrb   r3   r*   r(   r   r      s#        . . . . .r*   r   )8rI   loggingdjango.httpr   r   r   django.urlsr   django.utils.decoratorsr   django.viewsr   django.views.decorators.csrfr	   onelogin.saml2.authr
   r   onelogin.saml2.errorsr   allauth.account.adapterr   rt   allauth.account.utilsr   allauth.socialaccount.helpersr   r   allauth.socialaccount.modelsr   .allauth.socialaccount.providers.base.constantsr   *allauth.socialaccount.providers.base.utilsr   allauth.socialaccount.sessionsr   utilsr   r   r   r   r   	getLoggerr0   rN   r   r7   as_viewacsrd   
finish_acsrj   slsr|   r   r   rE   r3   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 6 6 6 6 6 6 F F F F F F 7 7 7 7 7 7        5 4 4 4 4 4 D D D D D D N N N N N N 7 7 7 7 7 7              
	8	$	$. . . . . . . .$ +J///1 1 1 1 1mT 1 1 0/1h oo
5 
5 
5 
5 
5M4 
5 
5 
5 ""$$
 +J///1 1 1 1 1mT 1 1 0/1B ooG G G G G=$ G G G( !!. . . . .t . . .  	r*   