
    4f@                         d dl Z d dlmZ d dlZd dlmZ d dl d dlm	Z	 d dl
mZmZ  G d dej                  j                  e	      Zy)	    Nabort)commit_all_ds)*)ResponseMixin)
send_emailnormalize_email_addressc                       e Zd ZdZdej
                   dZd e        dZe	j                  j                  d        Ze	j                  j                  d        Ze	j                  j                  d        Zd	 Zy
)
SignupViewz/auth/signupu,   Обратитесь в <a href="https://wwwu9   /support/">техническую поддержку</a>.u   Перейти в <a href="u   ">Ваш профиль</a>?c                 $    | j                  d      S )Nzsignup.html)render)selfs    %./modules/servicedesk/views/signup.pygetzSignupView.get   s    {{=))    c                    t         j                  j                  st        dd       ddlm} ddlm}  |t        j                  d         }t        j                  d   }t        j                  d	   }t        j                  d
   }t        j                  j                  d      }t        j                  j                  d      }t        j                  j                  |      s!t        j                  j                  |d      rt        dd       t        j                  j                  |||      }	|	st        d       t!        d       ||	_        |	j%                          	 t        j                  j'                  ||||       |	j(                  j+                          |	j-                  dd      }
dt.        j0                   }| j3                  d|
      g}	 t5        |||	j6                  j8                         y#  t        d        xY w# t:        $ r,}t<        j?                  d|       t!        dd       Y d }~yd }~ww xY w)Nu,   Регистрация недоступна!Tr   r   )r	   parseloginhashsaltnamephonecompany)r   )r   include_deleteduI   Такой пользователь уже зарегистрированznot authi  )r   r   company_namephone_numberinvite)endpointsdesk&   Ссылка для доступа к zsignup_send_link.html)	auth_linkuA   Не удалось отправить уведомление: %s  u   Не удалось отправить уведомление. Обратитесь в техническую поддержку.Signed up successfully) gglobal_settingsservicedesk_allow_auth_guests	cmf_alertmodules.auth.models.emailr	   urllibr   requestvaluesr   modelsCmfAuth	CmfPersonnew_from_login_hash_saltr   r   r   save#register_sdesk_user_without_projectdpcommitreset_pass_linkconfigHOSTNAME_FQDNrender_with_paramsr   emailvalue	Exceptionlogging	exception)r   r	   r   r   _hashr   r   r   r   authurlsubjectmsg_contentses                 r   postzSignupView.post   s     >>DDQE 'w(?@v&~~f%~~f%""7+..$$Y/>>E*f.>.>.B.B`d.B.eaimn~~66ueTJ*%#J
			@@W5 A R
 	""HD"A:6;O;O:PQ//0GSV/WX	\|Wdjj.>.>?
 (	*%  	\acde#  [  \  \'		\s$   ##G= !H =H	I"H>>Ic                 d   ddl m} t        t        j                  d         }t        j                  j                  dd      }t        |      dv rd}t        j                  d   }t        j                  j                  |      }t        j                  |d	   d
         }||dt        |      dz   |dt        |      dz   z   k(  r!t        j                  r|dt        |      dz   }	 t        j                  j                  |ddg      }|r|j                  j                   rt#        dj%                  ||             |j'                         }|j)                  d      }	|j+                  |	      }
|
j,                  }t        j.                   d| }	| j1                  ||j2                  j4                         nt#        dj%                  ||             t7        d       d| }	nt#        dj%                  ||             t        j                  ||      }|j'                         }|rd|_        |j)                  d      }	| j1                  ||j2                  j4                         |j+                  |	      }
|
j,                  }t7        d       d| }	dt        j:                   }| j=                  d|	      g}t?        |||j2                  j4                         tI                y # t@        $ r=}tB        jE                  d       | jG                  ddt        |             cY d}~S d}~ww xY w)!u   
        Приглашение по email. В эту функцию долбится CRM с уже подготовленным JWT-токеном.
        :return:
        r   r   r9   invite_must_change_passwordN)FalsefalseNone0Finvite_tokenpayloadiss   	pass_hash)r   fieldsu   INVITE. Отправляем существующему пользователю {} письмо с инвайтом в crm {} и высылаем ему письмо с паролемr   )r   z/servicedesk/auth/invite?u~   INVITE. Отправляем существующему пользователю {} письмо с инвайтом в crm {}Tabsolutez)servicedesk/auth/signin?next_url=https://uz   INVITE. Создаем пользователя {} для crm {} и высылаем ему письмо с паролем)r   r9      zservicedesk/auth/invite?r!   zinvite_by_email.html)
invite_urlu8   Не удалось зарегистрироватьсяr#   u:   Не удалось зарегистрироваться: r$   )%r*   r   r	   r+   r,   r   strr-   r.   check_tokenshlexquotelenr6   IS_BOX_VERSIONrO   is_nullprintformatreset_passwordr5   urlparsequeryAUTH_SERVER_URLsend_passwordr9   r:   auth_base_hrefpassword_expires_must_changer7   r8   r   r;   r<   r=   _errorr   )r   r   r9   rF   rK   jwtrM   r?   passwordr@   parse_qr`   rA   rB   rC   s                  r   invite_by_emailzSignupView.invite_by_email@   s    	!'w(?@&-nn&8&89VX\&]#*+/NN*/'~~n5nn((6kk#i./0 #ls3x{#c,3s8Q;&777F<Q<Qls3x{#C'	k>>%%E;:P%QD >>))TTZTZ[`beTfh  $224H...AC#nnS1G#MME#3344MeWUC&&x1A1AB  [  b  b  ch  jm  n  o ,T:;;dehdijC  S  Z  Z  [`  be  f  g~~E~?..0.89D5**H*=""8TZZ-=-=>..-'677OPUwW>v?S?S>TUG 334JWZ3[\L|Wdjj.>.>? 	'	  	kXY;;s&`adefag`h$ijj	ks   'G7K) )	L/22L*$L/*L/c                     t        d       d}| j                  d||      }dt        j                   }t	        |||       y)u   
        Некрасивый дубль models.CmfAuth.send_password(), потому что неясно как делать вызов View -> Model -> View
        TrQ   z&servicedesk/auth/signin?action=proceedzsend_password.html)rg   proceed_linku&   Пароль для доступа к N)rc   r8   r6   r7   r   )r   rg   r9   rk   rB   rA   s         r   rb   zSignupView.send_password   sO     )$788^_../Cheq.r:6;O;O:PQ<%0r   N)__name__
__module____qualname____url__r6   AUTH_SESSION_COOKIE_DOMAIN__support__rc   __profile__cmfviewsactionr   rD   ri   rb    r   r   r   r   
   s    G@AbAb@c dC CK/0@/AA]^KYY* * 	YY)( )(V 	YY=( =(~1r   r   )rW   flaskr   	cmf.viewsrs   cmf.data_providers.baser   cmf.includemodules.auth.views.responser   r)   r   r	   rt   BaseViewr   rv   r   r   <module>r}      s4       1  5 I}1##] }1r   