https://www.formazionedigitale.eu/wp-content/plugins/masterstudy-l…/authorization/ajax.js?ver=3.7.52
1"use strict"; 2 3function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } 4function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 5function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } 6(function ($) { 7 $(document).ready(function () { 8 $('.masterstudy-authorization').each(function () { 9 var formContainer = $(this); 10 var initialRecoveryToken = authorization_data.session_limit_recovery || ''; 11 var sessionNotice = formContainer.find('.masterstudy-authorization__session-notice').first(); 12 var sessionNoticeComponent = createSessionNoticeComponent(formContainer, sessionNotice, initialRecoveryToken); 13 formContainer.data('session-notice-component', sessionNoticeComponent); 14 if (sessionNoticeComponent && authorization_data.session_limit_active === '1') { 15 sessionNoticeComponent.render('', 'warning', !isEmpty(initialRecoveryToken)); 16 } 17 formContainer.find('[data-id="masterstudy-authorization-restore-button"]').click(function (e) { 18 e.preventDefault(); 19 restore(formContainer); 20 }); 21 formContainer.find('.masterstudy-authorization__form-input').keypress(function (e) { 22 if (e.which === 13) { 23 if ($(this).closest('#masterstudy-authorization-form-login').length > 0) { 24 formContainer.find('[data-id="masterstudy-authorization-login-button"]').trigger('click'); 25 } else if ($(this).closest('#masterstudy-authorization-form-register').length > 0) { 26 formContainer.find('[data-id="masterstudy-authorization-register-button"]').trigger('click'); 27 } 28 } 29 }); 30 formContainer.find('.masterstudy-authorization__form-input').on('input', function () { 31 clearFieldError($(this), formContainer); 32 }); 33 var $strengthContainer = $('.masterstudy-authorization__strength-password'); 34 var $separators = $strengthContainer.find('.masterstudy-authorization__strength-password__separator'); 35 if ($strengthContainer.find('.masterstudy-authorization__strength-password__label').length === 0) { 36 $strengthContainer.append('<div class="masterstudy-authorization__strength-password__label"></div>'); 37 } 38 var $label = $strengthContainer.find('.masterstudy-authorization__strength-password__label'); 39 $('input[name="register_user_password"]').on('input', function () { 40 var password = $(this).val(); 41 var strength = getPasswordStrength(password); 42 var strengthText = ''; 43 $strengthContainer.removeClass("bad normal good hard"); 44 switch (strength) { 45 case 1: 46 $strengthContainer.addClass("bad"); 47 strengthText = masterstudy_authorization_data.bad || "Bad"; 48 break; 49 case 2: 50 $strengthContainer.addClass("normal"); 51 strengthText = masterstudy_authorization_data.normal || "Normal"; 52 break; 53 case 3: 54 $strengthContainer.addClass("good"); 55 strengthText = masterstudy_authorization_data.good || "Good"; 56 break; 57 case 4: 58 $strengthContainer.addClass("hard"); 59 strengthText = masterstudy_authorization_data.hard || "Hard"; 60 break; 61 } 62 $label.text(strengthText); 63 $separators.removeClass('active'); 64 $separators.each(function (index) { 65 if (index < strength) { 66 $(this).addClass('active'); 67 } 68 }); 69 }); 70 formContainer.find('[data-id="masterstudy-authorization-login-button"]').click(function (e) { 71 e.preventDefault(); 72 resetErrors(formContainer); 73 var login_data = { 74 'user_login': formContainer.find('input[name="user_login"]').val(), 75 'user_password': formContainer.find('input[name="user_password"]').val(), 76 'remember': formContainer.find('#masterstudy-authorization-remember').prop('checked') 77 }; 78 if (authorization_data.recaptcha_site_key && typeof grecaptcha !== 'undefined') { 79 grecaptcha.ready(function () { 80 grecaptcha.execute(authorization_data.recaptcha_site_key, { 81 action: 'login' 82 }).then(function (token) { 83 login_data['recaptcha'] = token; 84 login(login_data, authorization_data.only_for_instructor, formContainer); 85 }); 86 }); 87 } else { 88 login(login_data, authorization_data.only_for_instructor, formContainer); 89 } 90 }); 91 formContainer.find('[data-id="masterstudy-authorization-register-button"]').click(function (e) { 92 e.preventDefault(); 93 resetErrors(formContainer); 94 if (Object.keys(authorization_data.default_fields).length > 0) { 95 for (var fieldName in authorization_data.default_fields) { 96 if (authorization_data.default_fields.hasOwnProperty(fieldName)) { 97 authorization_data.default_fields[fieldName].value = formContainer.find("[name=\"".concat(fieldName, "\"]")).val(); 98 } 99 } 100 } 101 if (authorization_data.additional_fields.length > 0) { 102 processFields(authorization_data.additional_fields, formContainer); 103 } 104 if (authorization_data.instructor_fields.length > 0) { 105 processFields(authorization_data.instructor_fields, formContainer); 106 } 107 var register_data = { 108 'register_user_login': formContainer.find('input[name="register_user_login"]').val(), 109 'register_user_email': formContainer.find('input[name="register_user_email"]').val(), 110 'register_user_password': formContainer.find('input[name="register_user_password"]').val(), 111 'register_user_password_re': formContainer.find('input[name="register_user_password_re"]').val(), 112 'profile_default_fields_for_register': authorization_data.default_fields, 113 'become_instructor': authorization_data.only_for_instructor ? true : formContainer.find('#masterstudy-authorization-instructor').length > 0 ? formContainer.find('#masterstudy-authorization-instructor').prop('checked') : false, 114 'additional': authorization_data.additional_fields, 115 'privacy_policy': formContainer.find('#masterstudy-authorization-gdbr').length > 0 ? formContainer.find('#masterstudy-authorization-gdbr').prop('checked') : true, 116 'redirect_page': authorization_data.only_for_instructor ? authorization_data.user_account_page : window.location.href 117 }; 118 register_data['additional_instructors'] = register_data['become_instructor'] ? authorization_data.instructor_fields : []; 119 register_data['degree'] = formContainer.find('input[name="degree"]').length > 0 && register_data['become_instructor'] ? formContainer.find('input[name="degree"]').val() : ''; 120 register_data['expertize'] = formContainer.find('input[name="expertize"]').length > 0 && register_data['become_instructor'] ? formContainer.find('input[name="expertize"]').val() : ''; 121 if (authorization_data.recaptcha_site_key && typeof grecaptcha !== 'undefined') { 122 grecaptcha.ready(function () { 123 grecaptcha.execute(authorization_data.recaptcha_site_key, { 124 action: 'register' 125 }).then(function (token) { 126 register_data['recaptcha'] = token; 127 register(register_data, authorization_data.only_for_instructor, formContainer); 128 }); 129 }); 130 } else { 131 register(register_data, authorization_data.only_for_instructor, formContainer); 132 } 133 }); 134 formContainer.find('[data-id="masterstudy-authorization-instructor-confirm"]').click(function (e) { 135 e.preventDefault(); 136 resetErrors(formContainer); 137 var request_data = { 138 'fields_type': 'default', 139 'fields': { 140 'degree': formContainer.find('input[name="degree"]').length ? formContainer.find('input[name="degree"]').val() : '', 141 'expertize': formContainer.find('input[name="expertize"]').length ? formContainer.find('input[name="expertize"]').val() : '' 142 } 143 }; 144 if (authorization_data.instructor_fields.length > 0) { 145 processFields(authorization_data.instructor_fields, formContainer); 146 request_data['fields'] = authorization_data.instructor_fields; 147 request_data['fields_type'] = 'custom'; 148 } 149 instructor_request(request_data, formContainer); 150 }); 151 }); 152 }); 153 function createSessionNoticeComponent(formContainer, sessionNotice, initialRecoveryToken) { 154 if (!window.masterstudySessionNotice || !sessionNotice.length) { 155 return null; 156 } 157 return window.masterstudySessionNotice.create({ 158 notice: sessionNotice, 159 initialRecoveryToken: initialRecoveryToken, 160 getRequestData: function getRequestData(api) { 161 return { 162 'user_login': formContainer.find('input[name="user_login"]').val(), 163 'user_password': formContainer.find('input[name="user_password"]').val(), 164 'recovery_token': api.getRecoveryToken() 165 }; 166 } 167 }); 168 } 169 function getPasswordStrength(password) { 170 if (!password) return 0; 171 var length = password.length; 172 var hasLower = /[a-z]/.test(password); 173 var hasUpper = /[A-Z]/.test(password); 174 var hasNumber = /[0-9]/.test(password); 175 if (length >= 8 && length <= 11 && hasLower && hasUpper && hasNumber) { 176 return 2; 177 } 178 if (length >= 12 && length <= 15 && hasLower && hasUpper && hasNumber) { 179 return 3; 180 } 181 if (length >= 16 && hasLower && hasUpper && hasNumber) { 182 return 4; 183 } 184 return 1; 185 }
186 function processFields(fields, formContainer) { 187 if (fields.length > 0) { 188 var _iterator = _createForOfIteratorHelper(fields), 189 _step; 190 try { 191 var _loop = function _loop() { 192 var field = _step.value; 193 if (field.type === 'checkbox') { 194 var checkedValues = []; 195 formContainer.find("[name=\"".concat(field.slug, "\"]")).each(function () { 196 if ($(this).next().hasClass('masterstudy-form-builder__checkbox-wrapper_checked')) { 197 checkedValues.push($(this).val()); 198 } 199 }); 200 field.value = checkedValues.join(','); 201 } else if (field.type === 'radio') { 202 formContainer.find("[name=\"".concat(field.slug, "\"]")).each(function () { 203 if ($(this).next().hasClass('masterstudy-form-builder__radio-wrapper_checked')) { 204 field.value = $(this).val(); 205 } 206 }); 207 } else if (field.type === 'file') { 208 field.value = field.value ? field.value : ''; 209 } else { 210 field.value = formContainer.find("[name=\"".concat(field.slug, "\"]")).val(); 211 } 212 }; 213 for (_iterator.s(); !(_step = _iterator.n()).done;) { 214 _loop(); 215 } 216 } catch (err) { 217 _iterator.e(err); 218 } finally { 219 _iterator.f(); 220 } 221 } 222 } 223 function login(login_data, redirect, formContainer) { 224 var url = authorization_data.ajax_url + '?action=stm_lms_login&nonce=' + authorization_data.login_nonce; 225 formContainer.find('[data-id="masterstudy-authorization-login-button"]').addClass('masterstudy-button_loading'); 226 fetch(url, { 227 method: 'POST', 228 headers: { 229 'Content-Type': 'application/json' 230 }, 231 body: JSON.stringify(login_data) 232 }).then(function (response) { 233 if (response.ok) { 234 return response.json(); 235 } 236 throw new Error('not ok'); 237 }).then(function (data) { 238 formContainer.find('[data-id="masterstudy-authorization-login-button"]').removeClass('masterstudy-button_loading'); 239 if (data.session_limit) { 240 var sessionNoticeComponent = formContainer.data('session-notice-component'); 241 if (sessionNoticeComponent) { 242 sessionNoticeComponent.setRecoveryToken(data.recovery_token || sessionNoticeComponent.getRecoveryToken()).render('', 'warning', true); 243 } 244 return; 245 } 246 if (data.status === 'error') { 247 data.errors.forEach(function (error) { 248 var inputField = formContainer.find("input[name=\"".concat(error.field, "\"]")); 249 var html = "<span data-error-id=\"".concat(error.id, "\" class=\"masterstudy-authorization__form-field-error\">").concat(error.text, "</span>"); 250 if (inputField.length > 0) { 251 inputField.parent().addClass('masterstudy-authorization__form-field_has-error'); 252 if (inputField.parent().find("span[data-error-id=\"".concat(error.id, "\"]")).length === 0) { 253 inputField.after(html); 254 } 255 } 256 }); 257 return; 258 } 259 if (data.status === 'success') { 260 redirect ? window.location = data.user_page : location.reload(); 261 } 262 })["catch"](function () { 263 formContainer.find('[data-id="masterstudy-authorization-login-button"]').removeClass('masterstudy-button_loading'); 264 }); 265 } 266 function register(register_data, redirect, formContainer) { 267 var url = authorization_data.ajax_url + '?action=stm_lms_register&nonce=' + authorization_data.register_nonce; 268 formContainer.find('[data-id="masterstudy-authorization-register-button"]').addClass('masterstudy-button_loading'); 269 fetch(url, { 270 method: 'POST', 271 headers: { 272 'Content-Type': 'application/json' 273 }, 274 body: JSON.stringify(register_data) 275 }).then(function (response) { 276 if (response.ok) { 277 return response.json(); 278 } 279 throw new Error('not ok'); 280 }).then(function (data) { 281 formContainer.find('[data-id="masterstudy-authorization-register-button"]').removeClass('masterstudy-button_loading'); 282 if (data.status === 'error') { 283 error_handling(data.errors, formContainer); 284 return; 285 } 286 if (data.status === 'success') { 287 if (authorization_data.email_confirmation) { 288 open_confirmation_form(false, formContainer); 289 return; 290 } 291 if (authorization_data.only_for_instructor && authorization_data.instructor_premoderation) { 292 open_confirmation_form(true, formContainer); 293 return; 294 } 295 redirect ? window.location = data.user_page : location.reload(); 296 } 297 })["catch"](function () { 298 formContainer.find('[data-id="masterstudy-authorization-register-button"]').removeClass('masterstudy-button_loading'); 299 }); 300 } 301 function instructor_request(request_data, formContainer) { 302 $.ajax({ 303 url: authorization_data.ajax_url + '?action=stm_lms_become_instructor' + '&nonce=' + authorization_data.instructor_nonce, 304 method: 'POST', 305 data: request_data, 306 beforeSend: function beforeSend() { 307 formContainer.find('[data-id="masterstudy-authorization-instructor-confirm"]').addClass('masterstudy-button_loading'); 308 }, 309 success: function success(data) { 310 formContainer.find('[data-id="masterstudy-authorization-instructor-confirm"]').removeClass('masterstudy-button_loading'); 311 if (data.status === 'error') { 312 error_handling(data.errors, formContainer); 313 return; 314 } 315 if (data.status === 'success') { 316 if (authorization_data.only_for_instructor && authorization_data.instructor_premoderation) { 317 open_confirmation_form(true, formContainer); 318 return; 319 } 320 window.location = authorization_data.user_account_page; 321 } 322 } 323 }); 324 } 325 function resetErrors(formContainer) { 326 formContainer.find('.masterstudy-authorization__form-field').removeClass('masterstudy-authorization__form-field_has-error'); 327 formContainer.find('.masterstudy-authorization__form-field-error').remove(); 328 } 329 function clearFieldError(inputField, formContainer) { 330 var field = inputField.closest('.masterstudy-authorization__form-field'); 331 if (!field.length) { 332 return; 333 } 334 field.removeClass('masterstudy-authorization__form-field_has-error'); 335 field.find('.masterstudy-authorization__form-field-error').remove(); 336 formContainer.find(".masterstudy-authorization__form-field-error_".concat(inputField.attr('name'))).remove(); 337 } 338 function isEmpty(value) { 339 return typeof value === 'undefined' || value === null || value === ''; 340 } 341 function error_handling(errors, formContainer) {
342 errors.forEach(function (error) { 343 var inputField = formContainer.find("[name=\"".concat(error.field, "\"]")), 344 html = "<span data-error-id=\"".concat(error.id, "\" class=\"masterstudy-authorization__form-field-error\">").concat(error.text, "</span>"); 345 if (inputField.length > 0) { 346 if (error.field === 'privacy_policy' || error.field === 'recaptcha') { 347 if (formContainer.find("span[data-error-id=\"".concat(error.id, "\"]")).length === 0) { 348 var errorElement = $(html); 349 errorElement.addClass("masterstudy-authorization__form-field-error_main masterstudy-authorization__form-field-error_".concat(error.field)); 350 formContainer.find('.masterstudy-authorization__actions').before(errorElement); 351 } 352 } else { 353 if (inputField.parent().hasClass('masterstudy-form-builder__checkbox')) { 354 var container = inputField.closest('.masterstudy-form-builder__checkbox-group'); 355 var block = container.find('.masterstudy-form-builder__checkbox-description'); 356 $(container).parent().addClass('masterstudy-authorization__form-field_has-error'); 357 if (container.find("span[data-error-id=\"".concat(error.id, "\"]")).length === 0) { 358 block.length > 0 ? $(html).insertBefore(block) : inputField.closest('.masterstudy-form-builder__checkbox-group').append(html); 359 } 360 } else if (inputField.closest('.masterstudy-form-builder__radio-group').length > 0) { 361 var radioGroup = inputField.closest('.masterstudy-form-builder__radio-group'); 362 if (radioGroup.find("span[data-error-id=\"".concat(error.id, "\"]")).length === 0) { 363 var descriptionBlock = radioGroup.find('.masterstudy-form-builder__radio-description'); 364 if (descriptionBlock.length > 0) { 365 descriptionBlock.before(html); 366 } else { 367 radioGroup.append(html); 368 } 369 } 370 } else if (inputField.parent().parent().hasClass('masterstudy-form-builder-file-upload')) { 371 var _container = inputField.closest('.masterstudy-form-builder-file-upload'); 372 $(_container).parent().addClass('masterstudy-authorization__form-field_has-error'); 373 if ($(_container).find("span[data-error-id=\"".concat(error.id, "\"]")).length === 0) { 374 $(_container).find('.masterstudy-form-builder-file-upload__field').after(html); 375 } 376 } else { 377 inputField.parent().addClass('masterstudy-authorization__form-field_has-error'); 378 if (inputField.parent().find("span[data-error-id=\"".concat(error.id, "\"]")).length === 0) { 379 inputField.after(html); 380 } 381 } 382 } 383 } 384 }); 385 var modalWrapper = formContainer.closest('.masterstudy-authorization-modal__container'), 386 firstErrorField = formContainer.find('.masterstudy-authorization__form-field_has-error').first(); 387 if (firstErrorField.length > 0) { 388 var topOffset = firstErrorField.offset().top; 389 if (modalWrapper.length > 0) { 390 topOffset -= modalWrapper.offset().top; 391 var scrollTo = modalWrapper.scrollTop() + topOffset - 10; 392 modalWrapper.animate({ 393 scrollTop: scrollTo 394 }, 500); 395 } else { 396 if (!isElementVisible(firstErrorField[0])) { 397 $('html, body').animate({ 398 scrollTop: topOffset - 10 399 }, 500); 400 } 401 } 402 } 403 } 404 function isElementVisible(element) { 405 var rect = element.getBoundingClientRect(); 406 return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth); 407 } 408 function restore(formContainer) { 409 var url = authorization_data.ajax_url + '?action=stm_lms_lost_password&nonce=' + authorization_data.restore_nonce, 410 user_mail = formContainer.find('input[name="restore_user_login"]').val(), 411 restore_data = JSON.stringify({ 412 'restore_user_login': user_mail 413 }); 414 resetErrors(formContainer); 415 formContainer.find('[data-id="masterstudy-authorization-restore-button"]').addClass('masterstudy-button_loading'); 416 fetch(url, { 417 method: 'POST', 418 headers: { 419 'Content-Type': 'application/json' 420 }, 421 body: restore_data 422 }).then(function (response) { 423 if (response.ok) { 424 return response.json(); 425 } 426 throw new Error('not ok'); 427 }).then(function (data) { 428 formContainer.find('[data-id="masterstudy-authorization-restore-button"]').removeClass('masterstudy-button_loading'); 429 if (data.status === 'error') {
430 data.errors.forEach(function (error) { 431 var inputField = formContainer.find("input[name=\"".concat(error.field, "\"]")); 432 var html = "<span data-error-id=\"".concat(error.id, "\" class=\"masterstudy-authorization__form-field-error\">").concat(error.text, "</span>"); 433 if (inputField.length > 0) { 434 inputField.parent().addClass('masterstudy-authorization__form-field_has-error'); 435 if (inputField.parent().find("span[data-error-id=\"".concat(error.id, "\"]")).length === 0) { 436 inputField.after(html); 437 } 438 } 439 }); 440 return; 441 } 442 if (data.status === 'success') { 443 formContainer.find('.masterstudy-authorization__send-mail-content-subtitle').text(function (index, oldText) { 444 return oldText + user_mail; 445 }); 446 formContainer.find('.masterstudy-authorization__restore').removeClass('masterstudy-authorization__restore_show'); 447 formContainer.find('#masterstudy-authorization-restore-pass').addClass('masterstudy-authorization__send-mail_show'); 448 formContainer.find('.masterstudy-authorization__switch').addClass('masterstudy-authorization__switch_hide'); 449 } 450 })["catch"](function () { 451 formContainer.find('[data-id="masterstudy-authorization-restore-button"]').removeClass('masterstudy-button_loading'); 452 }); 453 } 454 function open_confirmation_form(for_instructor, formContainer) { 455 formContainer.find('.masterstudy-authorization__wrapper').addClass('masterstudy-authorization__wrapper_hide'); 456 formContainer.find('.masterstudy-authorization__switch').addClass('masterstudy-authorization__switch_hide'); 457 if (for_instructor) { 458 formContainer.find('.masterstudy-authorization__instructor-confirm').addClass('masterstudy-authorization__instructor-confirm_show'); 459 } else { 460 formContainer.find('#masterstudy-authorization-confirm-email').addClass('masterstudy-authorization__send-mail_show'); 461 } 462 } 463})(jQuery);
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.