U
    h                     @   s4   d dl T d dlmZ d dlZG dd dejjZdS )    )*)
BadRequestNc                   @   s0   e Zd ZdZejjdd Zejjdd ZdS )CmfAuthOpenIdViewz/openid-connectc                 C   sn  ddl m} dd l}tjd}|rtjdd}tjjddd t	|t	|dd	d
ddd t
d| d|  t  td tdt	tjdd}|stjjddd dttjdd
ddd t
dtj  t  td tdzt|}W nh tjk
rf   tjjddd d|d d dd
ddd t
d|  t  td tdY nX tjjddgdd|d gd}|tjd }||}	t
jjr tjj|	jdgd }
|
jr tjjddd |	jd!d"d
ddd t  td tdtt|j|d# }tjj |	|d$ tjjd%dd t	|	jdd&d'dd|	j|	jd(	 t
d)|	j d* |S )+Nr   )reject_responseerrorerror_description Zauth_failedCmfAuthzopenid-connect)r   r   typeZfailT   )operatecmf_model_nameparent
audit_dataresult_statuscurrent_transactionsecurity_levelzOIDC error: z; description: uQ   Ошибка авторизации, повторите попытку позжеstateZstate_missing)reasonargsz%OIDC callback: missing 'state'; args=Zstate_bad_jsoni   )r   Z	state_rawz(OIDC callback: bad JSON in state; state=r   zplugin.*idz==)fieldsfiltercodefail_permanent_block)loginr   zPermanent block)r   r   Znext_url)sessionZresponseZauth_successed)r   r
   ok)	r   r   r   r   r   r   r   parent_nameZparent_codeu%   ======OIDC: пользователь u*    успешно авторизовался)!Zcmf.appr   urllibZrequestr   getZmodelsZCmfAuditZaudit_eventstrgdebugZ
cmf_committimesleepr   dictZjsonloadsZJSONDecodeErrorZCmfAuthOpenIdPluginZ	get_tokenZget_sessionZglobal_settingsZauth_fail_permanent_blockr	   Z
user_loginr   Zmake_responseZredirectparseunquote_plusZset_session_token)selfr   r   r   Zerr_descr   Zstate_paramsZopenidZjwtr   ZauthZresp r+   /./cmf/modules/sso/views/cmf_auth_openid_view.pyr    	   s    






zCmfAuthOpenIdView.getc                 C   s   d S )Nr+   )r*   r+   r+   r,   logoutt   s    zCmfAuthOpenIdView.logoutN)	__name__
__module____qualname__Z__url__cmfviewsactionr    r-   r+   r+   r+   r,   r      s
   
jr   )Zcmf.includeZwerkzeug.exceptionsr   r$   r1   r2   ZBaseViewr   r+   r+   r+   r,   <module>   s   