
    SIg@                         d dl Z d dlmZ d dlZd dlmZ d dlT d dlm	Z	 d dl
mZmZ  G d dej        j        e	          ZdS )	    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d
S )
SignupViewz/auth/signupu,   Обратитесь в <a href="https://wwwu9   /support/">техническую поддержку</a>.u   Перейти в <a href="u   ">Ваш профиль</a>?c                 ,    |                      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	        
                    d          }t          j	        
                    d          }t          j        
                    |          s!t          j        
                    |d          rt          dd           t          j                            |||          }	|	st          d           t!          d           ||	_        |	                                 	 t          j                            ||||           n#  t          d            xY w|	j                                         |	                    dd          }
dt.          j         }|                     d|
          g}	 t5          |||	j        j                   nB# t:          $ r5}t<                              d|           t!          dd           Y d }~nd }~ww xY wdS )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    > 	RDDQQQQEEEEEE      ''w(?@@v&~f%~f%""7++.$$Y//>E** 	of.>.B.B`d.B.e.e 	oaimnnnn~66ueTJJ 	*%%%#JJJ
			@@W5 A R R R R	*%%%""HD"AAQ6;OQQ//0GSV/WWX	\|Wdj.>???? 	\ 	\ 	\acdeee#  [  \  \  \  \  \  \  \  \	\ ('s$   -#F F#>H 
I$+IIc                    ddl m} t          t          j        d                   }t          j                            dd          }t          |          dv rd}t          j        d         }t          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                            |ddg          }|r|j        j        rt#          d                    ||                     |                                }|                    d          }	|                    |	          }
|
j        }t          j         d| }	|                     ||j        j                   nt#          d                    ||                     t7          d           d| }	nt#          d                    ||                     t                              ||          }|                                }|rd|_        |                    d          }	|                     ||j        j                   |                    |	          }
|
j        }t7          d           d| }	dt          j         }|                     d|	          g}t?          |||j        j                   nW# t@          $ rJ}tB          "                    d           | #                    ddt          |                     cY d}~S d}~ww xY wtI                       d S )!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(?@@&-n&8&89VX\&]&]#*++/NNN*/'~n5n((66k#i./00 #ls3xx{l#c,3s88Q;,&7777F<Q7ls3xx{l#C'	k>%%E;:P%QQD X >) kTTZTZ[`beTfTfh h h  $2244H...AAC#nnS11G#ME#3UUeUUC&&x1ABBBB  [  b  b  ch  jm  n  n  o  o  o ,T:::jjehjjCC  S  Z  Z  [`  be  f  f  g  g  g~~E~??..00. :89D5**H*==""8TZ-=>>>..--'666WWPUWWUv?SUUG 334JWZ3[[\L|Wdj.>???? 	k 	k 	kXYYY;;s$iadefagag$i$ijjjjjjjj	k 	''s   
H
L 
M)?M$M)$M)c                     t          d           d}|                     d||          }dt          j         }t	          |||           dS )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   sa     )$777___../Cheq.rrQ6;OQQ<%0000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CAb C C CK^0@0@^^^KY* * * 	Y)( )( )(V 	Y=( =( =(~1 1 1 1 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}      s               1 1 1 1 1 1     5 5 5 5 5 5 I I I I I I I I}1 }1 }1 }1 }1#] }1 }1 }1 }1 }1r   