File: /var/www/html/wptoho/wp-content/plugins/defender-security/assets/js/webauthn.js
function _createForOfIteratorHelper(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=_unsupportedIterableToArray(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}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 i,d=!0,s=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return d=e.done,e},e:function(e){s=!0,i=e},f:function(){try{d||null==t.return||t.return()}finally{if(s)throw i}}}}function _unsupportedIterableToArray(e,n){if(e){if("string"==typeof e)return _arrayLikeToArray(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(e,n):void 0}}function _arrayLikeToArray(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=Array(n);t<n;t++)a[t]=e[t];return a}!function(e){var n=!1,t=e(".defender-biometric-wrap"),a=t.find(".register-authenticator-box"),r=t.find("button"),i=t.find("#authenticator-identifier"),d=t.find("input[name='authenticator-type']"),s=t.find(".process-desc"),o=t.find(".process-auth-desc"),l=t.find(".records"),c=t.find(".no-record");function f(){var n=e(".auth-methods-table #row-webauthn");n.find(".wpdef-ui-toggle").is(":checked")&&void 0!==webauthn.user_handle_match_failed.show_notice&&!0===webauthn.user_handle_match_failed.show_notice&&1===n.find(".user-handle-mismatch").length?n.find(".user-handle-mismatch").show():n.find(".user-handle-mismatch").hide()}function u(e,n){var t="";return!0===(arguments.length>2&&void 0!==arguments[2]&&arguments[2])?t='<span class="loading"></span>':"success"===e?t='<span class="dashicons dashicons-yes-alt"></span>':"error"===e&&(t='<span class="dashicons dashicons-warning"></span>'),'<div class="notice notice-'+e+'"><p>'+t+'<span class="message">'+n+"</span>"+(arguments.length>3&&void 0!==arguments[3]&&arguments[3]?'<button type="button" class="notice-dismiss"></button>':"")+"</p></div>"}function h(e){var n=void 0!==webauthn.user_handle_match_failed.authenticators&&Array.isArray(webauthn.user_handle_match_failed.authenticators)&&webauthn.user_handle_match_failed.authenticators.includes(wpdefBase64Url2Base64(atob(e.key)));return'<tr data-key="'+e.key+'" data-label="'+e.label+'"><td><span class="wpdef-field-label">'+e.label+'</span><input type="text" class="wpdef-field-rename-identifier regular-text" value="'+e.label+'" style="display:none;"/><div class="field-error" style="display:none;">'+wp.i18n.__("Add an authenticator identifier.","defender-security")+'</div><button type="button" class="toggle-row-content"></button></td><td><span class="col-name">'+wp.i18n.__("Type","defender-security")+"</span>"+("platform"===e.auth_type?wp.i18n.__("Platform","defender-security"):wp.i18n.__("Roaming","defender-security"))+'</td><td><span class="col-name">'+wp.i18n.__("Date Registered","defender-security")+"</span>"+e.added+'</td><td><span class="rename-control"><span class="wpdef-rename-btn">'+wp.i18n.__("Rename","defender-security")+'</span><span class="button button-primary wpdef-rename-update-btn" style="display:none;"><span class="label-btn">'+wp.i18n.__("Save","defender-security")+'</span><span class="loading" style="display:none;"></span></span><span class="wpdef-tbl-sep sep-rename" style="display:none;">|</span><span class="wpdef-rename-cancel-btn" style="display:none;">'+wp.i18n.__("Cancel","defender-security")+'</span></span><span class="wpdef-tbl-sep sep-delete">|</span><span class="wpdef-delete-btn">'+wp.i18n.__("Delete","defender-security")+'</span></td></tr><tr class="wpdef-user-handle-notice '+(n?"active":"")+'"><td colspan="4"><div class="wpdef-notice warning"><p><span class="dashicons dashicons-warning"></span><span class="wpdef-notice-message">'+webauthn.i18n.auth_user_handle_mismatch_notice+"</span></p></div></td></tr>"}function p(){n=!0,r.attr("disabled","disabled"),i.attr("disabled","disabled"),d.attr("disabled","disabled")}function w(){n=!1,r.removeAttr("disabled"),i.removeAttr("disabled").val(""),d.removeAttr("disabled","disabled")}function b(){t.find("#defender-biometric-tbl .wpdef-rename-update-btn").hide(),t.find("#defender-biometric-tbl .wpdef-rename-cancel-btn").hide(),t.find(".sep-rename").hide(),t.find("#defender-biometric-tbl .loading").hide(),t.find("#defender-biometric-tbl .wpdef-field-rename-identifier").hide().removeClass("required"),t.find("#defender-biometric-tbl .field-error").hide(),t.find("#defender-biometric-tbl .wpdef-rename-btn").show(),t.find("#defender-biometric-tbl .wpdef-field-label").show(),t.find(".sep-delete").show(),t.find(".wpdef-delete-btn").show()}!function(e){if(Array.isArray(e)){var n="";e.forEach(function(e,t){n+=h(e)}),""!==n?(c.hide(),l.show().html(n)):(c.show(),l.hide())}}(webauthn.registered_auths),f(),e("body").on("click",".defender-biometric-wrap .notice-dismiss",function(n){n.preventDefault(),e(this).closest(".notice").remove()}),e("body").on("click",".defender-biometric-wrap .wpdef-new-btn",function(e){e.preventDefault(),a.show(),b()}),e("body").on("click",".register-authenticator-box #wpdef-register-authenticator-close-btn",function(e){e.preventDefault(),!0!==n&&(a.hide(),a.find("input.required").removeClass("required"),a.find(".field-error").hide(),s.html(""))}),e("body").on("click",".register-authenticator-box #wpdef-register-authenticator-btn",function(t){if(t.preventDefault(),!0!==n){var r=d.filter(":checked").val(),o=e.trim(i.val());if(a.find("input.required").removeClass("required"),a.find(".field-error").hide(),!r||!o)return r||(d.addClass("required"),d.closest("tr").find(".field-error").show()),void(o||(i.addClass("required"),i.siblings(".field-error").show()));p(),s.html(u("info",webauthn.i18n.registration_start,!0)),e.ajax({url:webauthn.admin_url,type:"GET",data:{action:"defender_webauthn_create_challenge",type:r,_def_nonce:webauthn.nonce},success:function(n){if(!1===n.success||void 0===n.data.challenge)return s.html(u("error",webauthn.i18n.authenticator_reg_failed,!1,!0)),void w();var t=n.data,a=Uint8Array.from(window.atob(wpdefBase64Url2Base64(t.challenge)),function(e){return e.charCodeAt(0)}),i=Uint8Array.from(window.atob(wpdefBase64Url2Base64(t.user.id)),function(e){return e.charCodeAt(0)}),d={challenge:a,rp:{id:t.rp.id,name:t.rp.name},user:{id:i,name:t.user.name,displayName:t.user.displayName},pubKeyCredParams:t.pubKeyCredParams,authenticatorSelection:t.authenticatorSelection,timeout:t.timeout};t.excludeCredentials&&(d.excludeCredentials=t.excludeCredentials.map(function(e){return e.id=Uint8Array.from(window.atob(wpdefBase64Url2Base64(e.id)),function(e){return e.charCodeAt(0)}),e}));var f=t.clientID;delete t.clientID,navigator.credentials.create({publicKey:d}).then(function(e){return{id:e.id,type:e.type,rawId:wpdefArrayToBase64String(new Uint8Array(e.rawId)),response:{clientDataJSON:wpdefArrayToBase64String(new Uint8Array(e.response.clientDataJSON)),attestationObject:wpdefArrayToBase64String(new Uint8Array(e.response.attestationObject))}}}).then(JSON.stringify).then(function(n){e.ajax({url:webauthn.admin_url,type:"POST",data:{action:"defender_webauthn_verify_challenge",data:window.btoa(n),name:o,usernameless:"false",client_id:f,type:r,_def_nonce:webauthn.nonce},success:function(e){!0===e.success?(c.hide(),l.show().append(h(e.data)),s.html(u("success",webauthn.i18n.authenticator_reg_success,!1,!0))):s.html(u("error",webauthn.i18n.authenticator_reg_failed,!1,!0)),w()},error:function(){s.html(u("error",webauthn.i18n.authenticator_reg_failed,!1,!0)),w()}})}).catch(function(e){var n=webauthn.i18n.authenticator_reg_failed;void 0!==e.message&&-1!==e.message.indexOf("already registered")&&(n=webauthn.i18n.multiple_reg_attempt),s.html(u("error",n,!1,!0)),w()})},error:function(){s.html(u("error",webauthn.i18n.authenticator_reg_failed,!1,!0)),w()}})}}),e("body").on("click","#defender-biometric-tbl .wpdef-delete-btn",function(t){if(!0!==n){var a=e(t.currentTarget),r=a.closest("tr"),i=a.html(),d=r.attr("data-key");!0===confirm(webauthn.i18n.remove_auth)&&(p(),a.html('<span class="loading"></span>'),e.ajax({url:webauthn.admin_url,type:"POST",data:{action:"defender_webauthn_remove_authenticator",key:d,_def_nonce:webauthn.nonce},success:function(e){!0===e.success?(r.next(".wpdef-user-handle-notice").remove(),r.remove(),0===l.find("tr").length&&(l.hide(),c.show())):(a.html(i),alert(e.data)),w()}}))}}),e("body").on("click","#defender-biometric-tbl .wpdef-rename-btn",function(t){if(!0!==n){var a=e(t.currentTarget),r=a.closest("tr"),i=r.attr("data-label");b(),a.hide().siblings(".wpdef-rename-update-btn,.wpdef-rename-cancel-btn").show(),r.find(".wpdef-field-label").hide(),r.find(".sep-delete").hide(),r.find(".wpdef-delete-btn").hide(),r.find(".wpdef-field-rename-identifier").val(i).show().focus(),r.find(".sep-rename").show()}}),e("body").on("click","#defender-biometric-tbl .wpdef-rename-cancel-btn",function(t){if(!0!==n){var a=e(t.currentTarget),r=a.closest("tr"),i=r.attr("data-label");a.hide().siblings(".wpdef-rename-update-btn").hide(),r.find(".sep-rename").hide(),r.find(".wpdef-field-rename-identifier").hide().val(i),r.find(".field-error").hide(),a.siblings(".wpdef-rename-btn").show(),r.find(".wpdef-field-label").show(),r.find(".sep-delete").show(),r.find(".wpdef-delete-btn").show()}}),e("body").on("click","#defender-biometric-tbl .wpdef-rename-update-btn",function(t){if(!0!==n){var a=e(t.currentTarget),r=a.closest("tr"),i=r.find(".wpdef-field-rename-identifier"),d=r.attr("data-key"),s=e.trim(i.val());if(!s)return i.addClass("required"),void i.siblings(".field-error").show();i.removeClass("required"),i.siblings(".field-error").hide(),p(),a.find(".label-btn").html(wp.i18n.__("Saving","defender-security")),r.find(".loading").show(),e.ajax({url:webauthn.admin_url,type:"POST",data:{action:"defender_webauthn_rename_authenticator",key:d,label:s,_def_nonce:webauthn.nonce},success:function(e){!0===e.success?(r.attr("data-label",s),i.siblings(".wpdef-field-label").html(s)):alert(e.data),w(),a.hide().find(".label-btn").html(wp.i18n.__("Save","defender-security")),a.find(".loading").hide(),a.siblings(".wpdef-rename-cancel-btn").hide(),a.siblings(".sep-rename").hide(),i.hide(),i.siblings(".wpdef-field-label").show(),a.siblings(".wpdef-rename-btn").show(),r.find(".wpdef-delete-btn").show(),r.find(".sep-delete").show()}})}}),e("body").on("click",".defender-biometric-wrap .wpdef-verify-btn",function(a){a.preventDefault(),!0!==n&&(p(),o.html(u("info",webauthn.i18n.authentication_start,!0)),e.ajax({url:webauthn.admin_url,type:"POST",data:{action:"defender_webauthn_get_option",username:webauthn.username,_def_nonce:webauthn.nonce},success:function(n){if(!1===n.success||void 0===n.data.challenge){var a="";return a="undefined"!==n.data.message&&"undefined"!==n.data.code&&0<n.data.code?n.data.message:webauthn.i18n.authenticator_verification_failed,o.html(u("error",a,!1,!0)),void w()}var r=n.data;if(r.challenge=Uint8Array.from(window.atob(wpdefBase64Url2Base64(r.challenge)),function(e){return e.charCodeAt(0)}),r.allowCredentials){var i,d=_createForOfIteratorHelper(r.allowCredentials);try{for(d.s();!(i=d.n()).done;){var s=i.value;s.id=Uint8Array.from(window.atob(wpdefBase64Url2Base64(s.id)),function(e){return e.charCodeAt(0)})}}catch(e){d.e(e)}finally{d.f()}}var l=r.clientID;delete r.clientID,navigator.credentials.get({publicKey:r}).then(function(e){return{id:e.id,type:e.type,rawId:wpdefArrayToBase64String(new Uint8Array(e.rawId)),response:{authenticatorData:wpdefArrayToBase64String(new Uint8Array(e.response.authenticatorData)),clientDataJSON:wpdefArrayToBase64String(new Uint8Array(e.response.clientDataJSON)),signature:wpdefArrayToBase64String(new Uint8Array(e.response.signature)),userHandle:e.response.userHandle?wpdefArrayToBase64String(new Uint8Array(e.response.userHandle)):null}}}).then(JSON.stringify).then(function(n){e.ajax({url:webauthn.admin_url,type:"POST",data:{action:"defender_webauthn_verify_response",data:window.btoa(n),client_id:l,username:webauthn.username,_def_nonce:webauthn.nonce},success:function(e){var n="";!0===e.success?n=u("success",webauthn.i18n.authenticator_verification_success,!1,!0):void 0!==e.data.message&&"Invalid user handle"===e.data.message?(notice_message=wp.i18n.sprintf(webauthn.i18n.authenticator_verification_failed_user_handle_mismatch,e.data.label),n=u("error",notice_message,!1,!0),t.find("#defender-biometric-tbl .records [data-key="+e.data.key+"]").next(".wpdef-user-handle-notice").show()):n=u("error",webauthn.i18n.authenticator_verification_failed,!1,!0),o.html(n),w()},error:function(){o.html(u("error",webauthn.i18n.authenticator_verification_failed,!1,!0)),w()}})}).catch(function(e){o.html(u("error",webauthn.i18n.authenticator_verification_failed,!1,!0)),w()})},error:function(){o.html(u("error",webauthn.i18n.authenticator_verification_failed,!1,!0)),w()}}))}),e("body").on("click","#defender-biometric-tbl .toggle-row-content",function(n){e(n.currentTarget).closest("tr").toggleClass("expanded")}),e("body").on("click",".auth-methods-table #row-webauthn .user-handle-mismatch.is-dismissible",function(n){e(n.currentTarget).remove(),e.ajax({url:webauthn.admin_url,type:"POST",data:{action:"defender_webauthn_disable_user_handle_match_failed_notice",_def_nonce:webauthn.nonce},success:function(e){return!0}})}),e("body").on("click",".auth-methods-table #row-webauthn .wpdef-ui-toggle",f)}(jQuery);