PageSourceSearch

https://didacticum.ru/templates/alumni/js/login_do.js?t=1790761326

js didacticum.ru collected 2026-09-30 09:42:41 UTC 12,471 bytes, 282 lines download raw bytes

1/**
2 * Js файл авторизации на сайт
3 */
4let currentUser;
5
6document.addEventListener('DOMContentLoaded', () => {
7
8    let maskPhoneLogin;
9    let phone, inp_dom;
10    const radio = document.getElementsByName('choose_radio');
11    const inputLogin = document.getElementById('login_do');
12
13    for (let i = 0, len = radio.length; i < len; i++) {
14        radio[i].addEventListener('change', function() { // какая radiobutton нажата
15            /* Вход по номеру телефона */
16            if (this.id === 'radio_phone')
17            {
18                inputLogin.name = 'phone';
19                inputLogin.placeholder = 'Телефон';
20                document.getElementById('login_password').style.display = 'none';
21                //document.getElementById('login_button_code').style.display = 'block';
22                document.getElementById('login_button').style.display = 'none';
23
24                let maskOptionsPhoneLogin = {
25                  mask:   [{
26                    mask: '0(000)000-00-00',
27                    startsWith: '8'
28                  },
29                    {
30                      mask: '+7(000)000-00-00',
31                      startsWith: '79'
32                    },
33                    {
34                      mask: '+7(000)000-00-00',
35                      startsWith: '9'
36                    }],
37                  dispatch: (appended, dynamicMasked) => {
38                    const number = (dynamicMasked.value + appended).replace(/\D/g,'');
39
40                    return dynamicMasked.compiledMasks.find(m => number.indexOf(m.startsWith) === 0);
41                  }
42                };
43                maskPhoneLogin = IMask(inputLogin, maskOptionsPhoneLogin); // создание маски для поля телефон
44
45                /* Значение меняется при изменении в поле Телефон */
46                maskPhoneLogin.on('accept', () => {
47                    inputLogin.classList.remove('border-success', 'border-warning');
48                    $("#login_help span").text('');
49                    document.getElementById('login_button_code').disabled = true;
50                });
51              let scheck=0;
52              let testcl=0;
53              const checkRes=(code)=>{
54                //scheck=0;
55                fetch('/udata/data/check_phone_call/'+code+'//2.json?d='+Date.now()).then(r=>r.json()).then(r=>{
56                  if(r.check_status==401 ){
57////phone confirmed
58                    console.log('phone confirmed');
59                    $("#login_button_code").text('Телефон подтвержден');
60
61                    sendCode(true);
62                    //setPref(3);
63
64                  }else{
65                    scheck+=1;
66
67                    if(scheck<120){ //60
68                      console.log(scheck);
69                      setTimeout(checkRes(code),25000)
70                    }else{
71                      $("#login_button_code").text('Телефон не подтвержден или истекло время ожидания');
72
73                     // setPref(9);
74
75                    }
76                  }
77
78                }).catch(e=>console.log(e))
79
80              }
81                /* Выполняется при целиком введенном номере телефона */
82                maskPhoneLogin.on("complete", function () {
83                    phone = maskPhoneLogin.value.replace(/ |\(|\)|\-/g, "").replace(/^8/,'7');
84                    if (document.getElementById('inp_dom')) {
85                        inp_dom = document.getElementById('inp_dom').value;
86                    }
87                    else inp_dom = false;
88
89                    fetch('/usel/sel/51/' + phone + '.json?scope=phone').then(response => response.json()).then(items => {
90                        if (items.total > 0) {
91                            inputLogin.classList.add('border-success');
92                          document.getElementById('login_button_code').style.display = 'block';
93
94                          fetch('/udata/data/check_phone_call/'+phone.replace('+7','')+'//1.json?d='+Date.now()).then(r=>r.json()).then(r=>{
95                          console.log(r,'sы');
96                            r.status=='OK' && checkRes(r.check_i
96d);
97
98                          }).catch(e=>console.log(e))
99
100
101
102                          $("#login_help span").html('Для подтверждения Вашего телефона, пожалуйста, сделайте звонок по номеру:<br/>\n' +
103                            '<a href="tel:+74995555555"><strong>8 499 555 55 55</strong></a><br/>\n' +
104                            'Звонок бесплатный по всей стране!<br/>\n' +
105                            'Подтверждение номера произойдет автоматически.');
106                        }
107                        else {
108                            fetch('/udata/users/findUserByPhone/' + phone + '/' + inp_dom + '.json').then(response => response.json()).then(items => {console.log(items);
109                                if(items.login){
110                                    currentUser = items;
111                                    inputLogin.classList.add('border-success');
112                                  document.getElementById('login_button_code').style.display = 'block';
113/*'Придет SMS с 4-значным кодом.'
114
115
116
117
118                                  */
119                                    $("#login_help span").html('Для подтверждения Вашего телефона, пожалуйста, сделайте звонок по Ð
119½Ð¾Ð¼ÐµÑ€Ñƒ:<br/>\n' +
120                                      '<a href="tel:+74995555555"><strong>8 499 555 55 55</strong></a><br/>\n' +
121                                      'Звонок бесплатный по всей стране!<br/>\n' +
122                                      'Подтверждение номера произойдет автоматически.');
123                                }
124                                else {
125                                    inputLogin.classList.add('border-warning');
126                                    $("#login_help span").text('Номер телефона не найден в базе. Измените или зарегистрируйтесь.');
127                                }
128                            });
129                        }
130                    });
131                });
132            }
133            /* вход по логину и паролю */
134            else {
135                if (typeof maskPhoneLogin !== 'undefined' && typeof maskPhoneLogin.el !== 'undefined') {
136                    maskPhoneLogin.destroy();
137                }
138                inputLogin.name = 'login';
139                inputLogin.placeholder = 'Email';
140                inputLogin.value = '';
141                document.getElementById('login_password').style.display = 'block';
142                document.getElementById('login_button').style.display = 'block';
143                document.getElementById('login_button_code').style.display = 'none';
144
145                inputLogin.classList.remove('border-success', 'border-warning');
146                $("#login_help span").text('');
147                document.getElementById('login_button_code').classList.add('disabled');
148            }
149        });
150    }
151
152    const code=(1000+Math.floor(Math.random()*8999)).toString();
153    /* При нажатие на кнопку "Получить код", авторизация по телефону */
154    $("#login_button_code").click(function(e){
155        e.preventDefault();
156
157        document.getElementById('login_button_code').disabled = true;
158        document.getElementById('login_code').style.display = 'block';
159        inputLogin.readOnly = true;
160
161        /* Выполняем запрос (происходит звонок на заданный номер телефона) */
162        $.ajax({
163            url: "/udata/users/registration_phone/.json?d="+Date.now(),
164            type: "POST",
165            data: {phone: phone,code:code},
166            dataType: "JSON",
167            success: function (data) { // Возвращается ассоциативный массив
168                console.log(data);
169              //  code = data.code;
170            }
171        });
172    });
173
174   let $form = $('#login_form1');
175   if($form) {
176     document.getElementById('login_form1').onsubmit = (e) => {
177       e.preventDefault();
178
179       if (document.getElementById('inp_dom')) {
180         inp_dom = document.getElementById('inp_dom').value;
181       } else inp_dom = false;
182
183       $('#login_button').attr('disabled', 'disabled');
184       let url;
185       if (!inp_dom) {
186         url = '/users/login_do/?from_page=/users/my_auth/.json';
187       } else {
188         url = '/users/my_login_do/.json';
189       }
190
191       $.ajax({
192         type: 'POST',
193         dataType: 'json',
194         url: url,
195         data: $form.serialize(),
196
197         success: function (items) {
198           console.log(items);
199           let loginSuccess = items.data.hasOwnProperty('user_id');
200           if (loginSuccess) {
201             if (inp_dom) {
202               window.parent.postMessage(items.data, 'https://' + inp_dom);
203             } else if (sessionStorage.getItem('pageEventId') !== null) {
204            document.location.replace('/users/settings/?meropid=' + sessionStorage.getItem('pageEventId'));
205             } else {
206               document.location.reload();
207             }
208           }
209           let loginFailed = items.data.hasOwnProperty('error');
210           if (loginFailed) {
211             $('#login_button').attr('disabled', null);
212             showErrorMessage($form, "Вы ввели неверный логин или пароль. Проверьте раскладку клавиатуры, не нажата ли клавиша «Caps Lock» и попробуйте ввести логин и пароль еще раз.");
213           }
214         },
215         error: function (data) {
216           console.log(data);
217         }
218       });
219     };
220   }
221       /*   При вводе правильного кода появляется модальное окно */
222
223
224      const sendCode = (t=false) => {
225        if (document.getElementById('login_code').value === code || t) {
226            let formData = new FormData(document.getElementById('login_form1'));
227
228            if (!inp_dom) formData.append('from_page', '/users/my_auth/.json');
229
230            fetch('/users/my_login_do/.json', {
231                method: 'POST',
232                body: formData,
233            }).then(response => response.json()).then(items => {
234                console.log(items);
235                if (document.location.pathname === '/users/forget/'){
236                    document.location.replace('/');
237                }
238                if (inp_dom) {
239                    window.parent.postMessage(items.data, 'https://' + inp_dom);
240                }
241                else {
242                    document.location.reload();
243                }
244            });
245        }
246    };
247  document.getElementById('login_code').oninput = sendCode;
248  document.getElementById('login_code').onchange = sendCode;
249  document.getElementById('login_code').onpaste = sendCode;
250
251
252    window.addEventListener("message", (event) => {
253        if(event.origin.match(/didact|educa|hospital|preschoo/) && event.data.refdom) {
254            setTimeout(() => {
255                document.getElementById('radio_phone').click();
256            }, "500")
257        }
258    });
259
260    /* Показывает уточку */
261    jQuery(function ($){
262        $(document).ajaxStop(function(){
263            $("#ajax_loader").hide();
264        });
265        $(document).ajaxStart(function(){
266            $("#ajax_loader").show();
267        });
268    });
269
270    $('.btnlogin').click(function(){
271        $('#registrate').modal('hide');
272        $('#login').modal('show');
273    });
274});
275
276function showErrorMessage($form, message) {
277    $('.field_error_message', $form).remove();
278    $('<div>', {
279        'class': 'field_error_message mt-5',
280        html: message
281    }).appendTo($form);
282}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.