1import a from"./../alpine.min.js";a.prefix("pinova-"),a.data("pinovaLoginForm",()=>({logo:pinova.logo,stepName:"authenticate",previousStepName:null,pageLoaderIsActive:!1,codeLength:pinova.code_length,forms:{authenticate:{inputs:{identifier:{value:"",rules:{required:!0},errorMsg:""},back_url:{value:pinovaGetQueryParam("back_url"),errorMsg:""}}},signIn:{inputs:{jwt:{value:"",errorMsg:""},code:{value:"",rules:{required:!0,minLength:pinova.code_length,type:["number"]},errorMsg:""},back_url:{value:pinovaGetQueryParam("back_url"),errorMsg:""}},msg:null},loginByPassword:{inputs:{identifier:{value:"",errorMsg:""},password:{value:"",rules:{required:!0,minLength:8},errorMsg:""},back_url:{value:pinovaGetQueryParam("back_url"),errorMsg:""}}},loginByOtp:{inputs:{jwt:{value:"",errorMsg:""},code:{value:"",rules:{required:!0,minLength:pinova.code_length,type:["number"]},errorMsg:""},back_url:{value:pinovaGetQueryParam("back_url"),errorMsg:""}},msg:null},forgotPassword:{inputs:{jwt:{value:"",errorMsg:""},code:{value:"",errorMsg:"",rules:{required:!0,minLength:pinova.code_length,type:["number"]}},back_url:{value:pinovaGetQueryParam("back_url"),errorMsg:""}},msg:null},changePassword:{inputs:{jwt:{value:"",errorMsg:""},reset_key:{value:"",errorMsg:""},password_1:{value:"",rules:{required:!0,minLength:8},errorMsg:""},password_2:{value:"",rules:{required:!0,minLength:8},errorMsg:""},back_url:{value:pinovaGetQueryParam("back_url"),errorMsg:""}}}},time:{duration:120*1e3,timerInterval:null,textTime:"03:00",textTimeMinutes:"",textTimeSeconds:"",btnResendIsActive:!1},init(){this.changeStep(this.stepName),"OTPCredential"in window&&window.addEventListener("DOMContentLoaded",e=>{navigator.credentials.get({otp:{transport:["sms"]}}).then(s=>{if(s.code)switch(this.stepName){case"loginByOtp":{this.forms.loginByOtp.inputs.code.value=s.code,this.submit();break}case"signIn":{this.forms.signIn.inputs.code.value=s.code,this.submit();break}case"forgotPassword":{this.forms.forgotPassword.inputs.code.value=s.code,this.submit();break}}}).catch(s=>{console.log(s)})})},submit(){if(this.pageLoaderIsActive)return;for(const s in this.forms)for(const t in this.forms[s].inputs)this.forms[s].inputs[t].errorMsg="";let e=!1;for(const s in this.forms[this.stepName].inputs){const t=pinovaValidateField(this.forms[this.stepName].inputs[s]);t.errorMsg&&(e=!0),this.forms[this.stepName].inputs[s]=t}if(!e)switch(this.stepName){case"authenticate":{this.authenticate();break}case"signIn":{this.loginByOtp();break}case"loginByPassword":{this.loginByPassword();break}case"loginByOtp":{this.loginByOtp();break}case"forgotPassword":{this.forgotPassword();break}case"changePassword":{this.changePassword();break}}},async authenticate(e={},s=null){try{this.pageLoaderIsActive=!0;const t=e;for(const i in this.forms.authenticate.inputs)this.forms.authenticate.inputs[i].value!==null&&(t[i]=this.forms.authenticate.inputs[i].value);const r=await pinovaApiRequest("pinova/user/authenticate",{method:"POST",headers:{nonce:null},form:!0,data:t});if(r.success){const i=r.data;this.forms.loginByPassword.inputs.identifier.value=this.forms.authenticate.inputs.identifier.value,i.has_account?s==="forgotPassword"?(this.changeStep("forgotPassword"),this.forms.forgotPassword.inputs.jwt.value=i.jwt,this.forms.forgotPassword.inputs.code.value="",this.forms.forgotPassword.msg=r.message,this.time.timerInterval||(this.time.duration=i.ttl*1e3,this.startTime())):s==="loginByOtp"||i.login_method==="otp"?(this.changeStep("loginByOtp"),this.forms.loginByOtp.inputs.jwt.value=i.jwt,this.forms.loginByOtp.inputs.code.value="",this.forms.loginByOtp.msg=r.message,this.time.timerInterval||(this.time.duration=i.ttl*1e3,this.startTime())):i.login_method==="password"&&this.changeStep("loginByPassword"):(this.changeStep("signIn"),this.time.timerInterval||(this.time.duration=i.ttl*1e3,this.startTime()),this.forms.signIn.inputs.jwt.value=i.jwt,this.forms.signIn.inputs.code.value="",this.forms.signIn.msg=r.message)}else pinovaNotyf.error(r.message?r.message:"\u062E\u0637\u0627\u06CC\u06CC \u0631\u062E \u062F\u0627\u062F\u0647 \u0627\u0633\u062A!");this.pageLoaderIsActive=!1}catch(t){console.error("Error fetching posts:",t),this.pageLoaderIsActive=!1}},async loginByOtp(){try{this.pageLoaderIsActive=!0;const e={};for(const t in this.forms[this.stepName].inputs)this.forms[this.stepName].inputs[t].value!==null&&(e[t]=this.forms[this.stepName].inputs[t].value);const s=await pinovaApiRequest("pinova/user/login/otp",{method:"POST",headers:{nonce:null},form:!0,data:e});if(s.success){const t=s.data;if(pinovaNotyf.success(s.message?s.message:"\u062F\u0631\u062E\u0648\u0627\u0633\u062A \u0628\u0627 \u0645\u0648\u0641\u0642\u06CC\u062A \u0627\u0646\u062C\u0627\u0645 \u0634\u062F!"),this.handleInterimLoginSuccess())return;window.location.href=t.back_url}else pinovaNotyf.error(s.message?s.message:"\u062E\u0637\u0627\u06CC\u06CC \u0631\u062E \u062F\u0627\u062F\u0647 \u0627\u0633\u062A!"),this.forms[this.stepName].inputs.code.value=null,this.pageLoaderIsActive=!1}catch(e){console.error("Error fetching posts:",e),this.pageLoaderIsActive=!1}},async loginByPassword(){try{this.pageLoaderIsActive=!0;const e={};for(const t in this.forms.loginByPassword.inputs)this.forms.loginByPassword.inputs[t].value!==null&&(e[t]=this.forms.loginByPassword.inputs[t].value);const s=await pinovaApiRequest("pinova/user/login/password",{method:"POST",headers:{nonce:null},form:!0,data:e});if(s.success){const t=s.data;if(pinovaNotyf.success(s.message?s.message:"\u062F\u0631\u062E\u0648\u0627\u0633\u062A \u0628\u0627 \u0645\u0648\u0641\u0642\u06CC\u062A \u0627\u0646\u062C\u0627\u0645 \u0634\u062F!"),this.handleInterimLoginSuccess())return;window.location.href=t.back_url}else pinovaNotyf.error(s.message?s.message:"\u062E\u0637\u0627\u06CC\u06CC \u0631\u062E \u062F\u0627\u062F\u0647 \u0627\u0633\u062A!"),this.pageLoaderIsActive=!1}catch(e){console.error("Error fetching posts:",e),this.pageLoaderIsActive=!1}},async forgotPassword(){try{this.pageLoaderIsActive=!0;const e={};for(const t in this.forms.forgotPassword.inputs)this.forms.forgotPassword.inputs[t].value!==null&&(e[t]=this.forms.forgotPassword.inputs[t].value);const s=await pinovaApiRequest("pinova/auth/forgot/verify",{method:"POST",headers:{nonce:null},form:!0,data:e});if(s.success){const t=s.data;this.changeStep("changePassword"),this.forms.changePassword.inputs.jwt.value=t.jwt,this.forms.changePassword.inputs.reset_key.value=t.reset_key}else pinovaNotyf.error(s.message?s.message:"\u062E\u0637\u0627\u06CC\u06CC \u0631\u062E \u062F\u0627\u062F\u0647 \u0627\u0633\u062A!"),this.forms.forgotPassword.inputs.code.value=null;this.pageLoaderIsActive=!1}catch(e){console.error("Error fetching posts:",e),this.pageLoaderIsActive=!1}},async changePassword(){try{this.pageLoaderIsActive=!0;const e={};for(const t in this.forms.changePassword.inputs)this.forms.changePassword.inputs[t].value!==null&&(e[t]=this.forms.changePassword.inputs[t].value);const s=await pinovaApiRequest("pinova/auth/forgot/change",{method:"POST",headers:{nonce:null},form:!0,data:e});if(s.success){const t=s.data;pinovaNotyf.success(s.message?s.message:"\u062F\u0631\u062E\u0648\u0627\u0633\u062A \u0628\u0627 \u0645\u0648\u0641\u0642\u06CC\u062A \u0627\u0646\u062C\u0627\u0645 \u0634\u062F!"),window.location.href=t.back_url}else pinovaNotyf.error(s.message?s.message:"\u062E\u0637\u0627\u06CC\u06CC \u0631\u062E \u062F\u0627\u062F\u0647 \u0627\u0633\u062A!"),this.pageLoaderIsActive=!1}catch(e){console.error("Error fetching posts:",e),this.pageLoaderIsActive=!1}},changeStep(e){this.stepName=e,setTimeout(()=>{document.getElementById(e).querySelector("input").focus()},100)},startTime(){this.time.timerInterval=null,clearInterval(this.time.timerInterval),this.time.btnResendIsActive=!1;const e=Date.now()+this.time.duration;this.updateTimer(this.time.duration),this.time.timerInterval=setInterval(()=>{const s=e-Date.now();if(s<=0){clearInterval(this.time.timerInterval),this.time.timerInterval=null,this.time.btnResendIsActive=!0;return}this.updateTimer(s)},1e3)},updateTimer(e){const s=Math.ceil(e/1e3);
1let t=Math.floor(s/60),r=Math.floor(s%60);t=t<10?"0"+t:t,r=r<10?"0"+r:r,this.time.textTime=`${t}:${r}`,this.time.textTimeMinutes=t.toString(),this.time.textTimeSeconds=r.toString()},backStep(){switch(this.stepName){case"authenticate":{this.stepName=null;break}case"signIn":{this.changeStep("authenticate");break}case"loginByPassword":{this.changeStep("authenticate");break}case"loginByOtp":{this.changeStep("authenticate");break}case"forgotPassword":{this.changeStep("loginByPassword");break}case"changePassword":{this.changeStep("loginByPassword");break}}},checkStringLength(e){return e.length>=8},checkStringIncludeNumber(e){return!!/\d/.test(e)},checkStringIncludeSymbols(e){return!!/[^\w\s]/.test(e)},checkStringIncludeUppercaseAndLowercase(e){return!!(/[a-z]/.test(e)&&/[A-Z]/.test(e))},passwordStrengthAssessment(){let e=0;return this.checkStringLength(this.forms.changePassword.inputs.password_1.value)&&(e+=1),this.checkStringIncludeNumber(this.forms.changePassword.inputs.password_1.value)&&(e+=1),this.checkStringIncludeSymbols(this.forms.changePassword.inputs.password_1.value)&&(e+=1),this.checkStringIncludeUppercaseAndLowercase(this.forms.changePassword.inputs.password_1.value)&&(e+=1),e},isInterimLogin(){try{const e=window.parent.document.querySelector("#wp-auth-check-frame");return e?new URL(e.getAttribute("src"),window.location.origin).searchParams.get("interim-login")==="1":!1}catch{return!1}},handleInterimLoginSuccess(){return this.isInterimLogin()?(document.body.classList.add("interim-login-success"),window.parent.jQuery&&window.frameElement&&window.parent.jQuery(window.frameElement).trigger("load"),!0):!1}})),a.start();
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.