
    fT                     `   d dl Z d dlZd dlmZ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 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mZ d dlmZ d dl m!Z! ddl"m#Z#m$Z$m%Z%m&Z&  ejN                  e(      Z) G d d      Z* e
ed       G d de*e             Z+e+jY                         Z- G d de*e      Z.e.jY                         Z/ e
ed       G d de*e             Z0e0jY                         Z1 G d de*e      Z2e2jY                         Z3 G d de*e      Z4e4jY                         Z5y)    N)HttpRequestHttpResponseHttpResponseRedirectJsonResponse)reverse)method_decorator)View)csrf_exempt)OneLogin_Saml2_Settings)OneLogin_Saml2_Error)get_adapter)httpkit)complete_social_loginrender_authentication_error)	AuthErrorAuthProcess)BaseLoginView)LoginSession   )
build_authbuild_saml_configdecode_relay_stateget_app_or_404c                       e Zd Zd Zd Zy)SAMLViewMixinc                 2    t        | j                  |      }|S N)r   requestselforganization_slugapps      e/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/saml/views.pyget_appzSAMLViewMixin.get_app+   s    T\\+<=
    c                 Z    | j                  |      }|j                  | 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   *   s    .r%   r   dispatch)namec                       e Zd Zd Zy)ACSViewc                     t        dd|i      }t        |      }t        |dd      }|j                  j	                  dt        j                  |      i       |j                  |       |S )Nsaml_finish_acsr!   )kwargssaml_acs_sessionsaml-acs-sessionr   )r   r   r   storeupdater   serialize_requestsave)r    r   r!   urlresponseacs_sessions         r#   r,   zACSView.dispatch6   sk    '):;
 (,"7,>@RS  )W-F-Fw-O!PQ"r%   Nr(   r)   r*   r,   r+   r%   r#   r/   r/   4   s    	r%   r/   c                       e Zd Zd Zy)FinishACSViewc                    | j                  |      }t        |dd      }d }|j                  j                  d      }|rt	        j
                  |t                     }|j                          |s!t        j                  d       t        ||      S t        ||      }d }g }		 |j                  d        |	s|j#                         }	|	rO|j%                         xs |}t        j                  d	d
j'                  |	      d|       t        |||	|d      S |j)                         st        ||t*        j,                        S |j/                  ||      }|j1                         }|r|j3                  ||      |_        n|j6                  j8                  j                  di       j                  dd      }|r!t        j                  d       t        ||      S t;        |j<                  j                  d            }t>        j@                  |j4                  d<   |r||j4                  d<   tC        ||      S # t        j                  $ r	 dg}	d}Y t        $ r}
dg}	t!        |
      }Y d }
~
d }
~
ww xY w)Nr3   r4   r   z0Unable to finish login, SAML ACS session missing)
request_idinvalid_responsezInvalid responseerrorz$Error processing SAML ACS response: , : )saml_errorssaml_last_error_reason)extra_context)rB   advancedreject_idp_initiated_ssoTzIdP initiated SSO rejected
RelayStateprocessnext)"r'   r   r5   getr   deserialize_requestr   deleteloggerrB   r   r   process_responsebinasciiErrorr   str
get_errorsget_last_error_reasonjoinis_authenticatedr   	CANCELLEDsociallogin_from_response get_last_response_in_response_tounstash_redirect_statestater"   settingsr   POSTr   LOGINr   )r    r   r!   providerr;   acs_requestacs_request_dataautherror_reasonerrorseloginstate_idrejectnext_urls                  r#   r,   zFinishACSView.dispatchF   sM   $$%67"7,>@RS&,,00;!556FVKLLKL.wAA+x0		" !!T!2 __&F557G<LLL99V$l4 /#).:  $$&.)<)<  227DA 88:"99'8LEK \\**..z2>BB*DF 9:27HEE)+*:*:*>*>|*LMH%0%6%6EKK	"&.F#$We44[ ~~ 	.()F-L# 	"YFq6L	"s    H4 4I0I0I++I0Nr<   r+   r%   r#   r>   r>   E   s    @5r%   r>   c                       e Zd Zd Zy)SLSViewc                    | j                  |      }t        | j                  |      }j                  j                  }t              fd}d }d }	 |j                  ||       }|j                         }
|
rT|j                         xs |}t        j                  ddj                  |
      d|       t        |d      }d|_        |S |sj!                        }t#        |      S # t        $ r}	t        |	      }Y d }	~	d }	~	ww xY w)	Nc                  (     j                         y 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: rC   rD   z
text/plain)content_typei  )r'   r   r   userrX   get_account_adapterprocess_slor   rT   rU   rV   rP   rB   rW   r   status_codeget_logout_redirect_urlr   )r    r   r!   ra   rd   should_logoutrr   redirect_tore   rg   rf   resprq   s    `          @r#   r,   zSLSView.dispatch   s   $$%67$,,155-g6	, 	"**".}CT + K
 "557G<LLL99V$l4  <HD"DK)AA'JK#K00 $ 	"q6L	"s   C. .	D7DDNr<   r+   r%   r#   rm   rm      s    1r%   rm   c                       e Zd Zd Zy)MetadataViewc                 8   | j                  |      }t        | j                  |j                  j                  |      }t        |d      }|j                         }|j                  |      }t        |      dkD  rt        d|i      }d|_
        |S t        |d      S )NT)r^   sp_validation_onlyr   rf   i  ztext/xml)contentru   )r'   r   r   r"   r^   r   get_sp_metadatavalidate_metadatalenr   ry   r   )	r    r   r!   ra   configsaml_settingsmetadatarf   r}   s	            r#   r,   zMetadataView.dispatch   s    $$%67"LL(,,//1B
 0
 !00200:v;?6 23D"DKH:FFr%   Nr<   r+   r%   r#   r   r      s    Gr%   r   c                       e Zd Zd Zy)	LoginViewc                 t    | j                  | j                  d         }|j                  | j                        S )Nr!   )r$   r2   r'   r   )r    r"   s     r#   r'   zLoginView.get_provider   s/    ll4;;':;<--r%   N)r(   r)   r*   r'   r+   r%   r#   r   r      s    .r%   r   )6rR   loggingdjango.httpr   r   r   r   django.urlsr   django.utils.decoratorsr   django.viewsr	   django.views.decorators.csrfr
   onelogin.saml2.authr   onelogin.saml2.errorsr   allauth.account.adapterr   rw   allauth.core.internalr   allauth.socialaccount.helpersr   r   .allauth.socialaccount.providers.base.constantsr   r   *allauth.socialaccount.providers.base.viewsr   allauth.socialaccount.sessionsr   utilsr   r   r   r   	getLoggerr(   rP   r   r/   as_viewacsr>   
finish_acsrm   slsr   r   r   rh   r+   r%   r#   <module>r      s.        4  4 7 6 F ) E 7  
		8	$. . +J/
mT 
 0
 ooA5M4 A5H ""$
 +J/1mT 1 01B ooG=$ G( !.} . 	r%   