1import{_ as C,a as L,b as k,c as x,r as F,u as D}from"./index.5d77ef42.js";import{d as T,_ as I,u as A,r as $,g as B,a as P,b as V,c as b,H as j,e as M,f as N,h as q,o as m,i as w,j as v,k as s,t as _,l as H,m as R,n as y}from"./index.ebc96854.js";const U=T({name:"Login2FAPage",components:{HeaderLight:C,TextInput:L,LoadingSpinner:I,FooterLight:k},setup(){const{t:e}=A(),n=$(!1),d=M(),a=N(),h=B().appContext.config.globalProperties,o=$("");P({title:e("pages.login.title")});const r=V({code:""}),u={code:{required:x.withMessage("form.generic.errors.required",F)}},i=D(u,r),p=b(()=>({code:i.value.code.$errors.length?e(i.value.code.$errors[0].$message):""})),g=b(()=>o.value!==null&&o.value!==void 0&&o.value.length>0),E=l=>{let t=r;t[l.id]=l.value,Object.assign(r,t)},S=async()=>{await f()},f=async()=>{if(i.value.$touch(),!i.value.$invalid){const l=a.state.user.pendingLogin;if(!l){d.push("/");return}o.value=null,n.value=!0;const t=new URLSearchParams;t.append("action","login"),t.append("actionData[email]",l.email),t.append("actionData[password]",l.password),t.append("actionData[rememberMe]",String(l.rememberMe)),t.append("actionData[twoFACode]",r.code),t.append("actionData[csrf]",a.state.tokens.api);try{const c=await h.$axios.post(`${a.state.environment.serverBaseUrl}/webservices/authentication.php`,t,{headers:{"Content-type":"application/x-www-form-urlencoded"}});c.data.error?(o.value=c.data.error,n.value=!1):(a.commit("setPendingLogin",null),window.location.replace("/account/dashboard"))}catch(c){n.value=!1,o.value=c}}};return j(()=>{(!a.state.user.isLoggedIn||!a.state.user.pendingLogin)&&d.push("/")}),{state:r,v$:i,errors:p,loading:n,hasServerError:g,serverError:o,onEnter:S,login:f,onTextInputChange:E}}}),z={class:"container"},O={class:"row justify-content-center"},G={class:"col-12 col-md-7 col-lg-4"},J={class:"pb-4 text-center"},K={class:"form-group"},Q={class:"d-flex"},W=["disabled"],X={key:0,class:"form-text text-muted error"};function Y(e,n,d,a,h,o){const r=C,u=L,i=I,p=k;return m(),w("div",z,[v(r),s("div",O,[s("div",G,[s("div",J,[s("h4",null,_(e.$t("pages.login2FA.header.title")),1)]),s("div",null,[s("div",K,[v(u,{type:"text",id:"code","custom-classes":"text-input-lg",value:e.state.code,label:e.$t("pages.login2FA.code"),"has-error":!!e.v$.code.$errors.length,"error-message":e.errors.code,onTextInputChanged:e.onTextInputChange,onEnterIsClicked:n[0]||(n[0]=g=>e.onEnter())},null,8,["value","label","has-error","error-message","onTextInputChanged"])]),s("div",Q,[s("button",{class:"btn btn-primary d-flex align-items-center w-100 justify-content-center",type:"button",disabled:e.loading,onClick:n[1]||(n[1]=g=>e.login())},[H(_(e.$t("generic.steps.continue"))+" ",1),e.loading?(m(),R(i,{key:0,color:"white",size:"sm",class:"ml-2"})):y("",!0)],8,W)]),e.hasServerError?(m(),w("small",X,_(e.serverError),1)):y("",!0)])])]),v(p)])}const te=q(U,[["render",Y]]);export{te as default};
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.