1import{a1 as m,b as U}from"./gza-NkpM.js";import{a as f,D as K,F as q,R as c,E as u,a1 as t,a2 as o,u as s,a0 as _,M as G,a8 as R,aa as L,z as $,aj as D}from"./BULnYpnF.js";const H={class:"mfa-setup"},J={class:"mb-3"},Y={class:"text-muted"},Q={key:0,class:"row"},j={class:"col-6"},z=["disabled"],W={class:"small text-muted"},X={class:"col-6"},Z=["disabled"],x={class:"small text-muted"},ee={class:"col-12"},te=["disabled"],se={key:1,class:"mfa-preparing text-center py-3"},oe={key:2,class:"mfa-totp-confirm"},ae={class:"h5"},le={class:"text-center my-3"},ne=["src"],ie={class:"small text-muted"},ce={class:"text-bg-light p-2 small"},ue={onsubmit:"return false"},de={class:"col-form-label"},re=["disabled"],_e={key:0,class:"alert alert-danger"},me={class:"d-flex gap-2 mt-3"},pe=["disabled"],be=["disabled"],fe={key:3,class:"mfa-email-confirm"},ve={class:"h5"},he={class:"alert alert-success py-2"},Ee={onsubmit:"return false"},ye={class:"col-form-label"},Ae=["disabled"],Me={key:0,class:"alert alert-danger mt-2"},ge={class:"d-flex gap-2 mt-3"},Te=["disabled"],Ce=["disabled"],ke=["disabled"],Ie={key:4,class:"mfa-totp-done"},Oe={class:"alert alert-success"},Fe={key:0},Re={class:"h5"},Le={class:"text-muted small"},$e={class:"d-flex gap-2 align-items-center"},De={class:"text-bg-light p-2 small flex-grow-1 mb-0"},Ne={key:5,class:"alert alert-danger mt-3"},we={__name:"MfaSetup",props:{enabledMethods:{type:Array,default:()=>["TOTP","EMAIL"]},mode:{type:String,default:"login"},method:{type:String,default:null},canSkip:{type:Boolean,default:!1}},emits:["done","cancel"],setup(h,{emit:N}){const p=h,y=N,r=U(),d=f(p.method?"preparing":"choose"),A=f(null),i=f(""),a=f(null),n=f(!1),v=f(null),g=f(!1);async function C(){var l;n.value=!0,a.value=null;const e=await m().setupTotp();n.value=!1,e.success?(A.value=e.payload,d.value="totp-confirm"):a.value=((l=e.error)==null?void 0:l.message)??r.get("JS_GENERIC_ERROR")}K(()=>{p.method==="TOTP"?C():p.method==="EMAIL"&&I()});async function k(){var l,b;if(!i.value){a.value=r.get("MFA_INVALID_CODE");return}n.value=!0,a.value=null;const e=await m().confirmTotp(i.value.trim());n.value=!1,e.success?(v.value=(l=e.payload)==null?void 0:l.backupToken,d.value="totp-done"):(a.value=((b=e.error)==null?void 0:b.message)??r.get("MFA_INVALID_CODE"),i.value="")}async function I(){var l,b,E;n.value=!0,a.value=null;const e=await m().setupEmail();if(n.value=!1,!e.success){a.value=((l=e.error)==null?void 0:l.message)??r.get("JS_GENERIC_ERROR");return}if((b=e.payload)!=null&&b.alreadyActive){y("done",{method:"EMAIL",alreadyActive:!0});return}if(!((E=e.payload)!=null&&E.codeRequired)){a.value=r.get("JS_GENERIC_ERROR"),p.method?M():d.value="choose";return}i.value="",d.value="email-confirm"}async function O(){var l;if(!i.value){a.value=r.get("MFA_INVALID_CODE");return}n.value=!0,a.value=null;const e=await m().confirmEmail(i.value.trim());n.value=!1,e.success?y("done",{method:"EMAIL"}):(a.value=((l=e.error)==null?void 0:l.message)??r.get("MFA_INVALID_CODE"),i.value="")}async function S(){var l;g.value=!0,a.value=null;const e=await m().requestEmailCode();g.value=!1,e.success||(a.value=((l=e.error)==null?void 0:l.message)??r.get("JS_GENERIC_ERROR"))}function P(){y("done",{method:"TOTP",backupToken:v.value}),p.mode==="login"&&m().completeLogin()}function M(){p.mode==="login"&&m().clearChallenge(),y("cancel")}function w(){if(p.method){M();return}d.value="choose",i.value="",a.value=null}async function V(){var l;n.value=!0,a.value=null;const e=await m().skipSetup();n.value=!1,e.success||(a.value=((l=e.error)==null?void 0:l.message)??r.get("JS_GENERIC_ERROR"))}function B(){!v.value||!(navigator!=null&&navigator.clipboard)||navigator.clipboard.writeText(v.value)}return(e,l)=>{var E,F;const b=q("font-awesome-icon");return c(),u("div",H,[t("h2",J,o(e.$t("MFA_TITLE")),1),t("p",Y,o(e.$t("MFA_SUBTITLE")),1),s(d)==="choose"?(c(),u("div",Q,[t("div",j,[h.enabledMethods.includes("TOTP")?(c(),u("button",{key:0,class:"btn btn-outline-primary text-start w-100 h-100",type:"button",disabled:s(n),onClick:C},[t("strong",null,o(e.$t("MFA_METHOD_TOTP")),1),t("div",W,o(e.$t("MFA_METHOD_TOTP_DESC")),1)],8,z)):_("",!0)]),t("div",X,[h.enabledMethods.includes("EMAIL")?(c(),u("button",{key:0,class:"btn btn-outline-primary text-start w-100 h-100",type:"button",disabled:s(n),onClick:I}
1,[t("strong",null,o(e.$t("MFA_METHOD_EMAIL")),1),t("div",x,o(e.$t("MFA_METHOD_EMAIL_DESC")),1)],8,Z)):_("",!0)]),t("div",ee,[h.mode==="account"?(c(),u("button",{key:0,class:"btn btn-secondary mt-2",type:"button",onClick:M},o(e.$t("CANCEL")),1)):h.canSkip?(c(),u("button",{key:1,class:"btn btn-secondary mt-2",type:"button",disabled:s(n),onClick:V},o(e.$t("MFA_SKIP_FOR_NOW")),9,te)):_("",!0)])])):s(d)==="preparing"?(c(),u("div",se,[G(b,{icon:"spinner",spin:!0})])):s(d)==="totp-confirm"?(c(),u("div",oe,[t("h3",ae,o(e.$t("MFA_TOTP_SETUP_TITLE")),1),t("p",null,o(e.$t("MFA_TOTP_SCAN_QR")),1),t("div",le,[(E=s(A))!=null&&E.qr?(c(),u("img",{key:0,src:s(A).qr,alt:"QR",class:"mfa-qr-code",style:{"max-width":"280px"}},null,8,ne)):_("",!0)]),t("p",ie,o(e.$t("MFA_TOTP_MANUAL_CODE")),1),t("pre",ce,o((F=s(A))==null?void 0:F.secret),1),t("form",ue,[t("label",de,o(e.$t("MFA_TOTP_CONFIRM_CODE")),1),R(t("input",{"onUpdate:modelValue":l[0]||(l[0]=T=>$(i)?i.value=T:null),type:"text",inputmode:"numeric",autocomplete:"one-time-code",class:"form-control",disabled:s(n),onKeyup:D(k,["enter"])},null,40,re),[[L,s(i)]]),s(a)?(c(),u("div",_e,o(s(a)),1)):_("",!0),t("div",me,[t("button",{class:"btn btn-secondary",type:"submit",disabled:s(n)||!s(i),onClick:k},o(e.$t("MFA_VERIFY")),9,pe),t("button",{class:"btn btn-link",type:"button",disabled:s(n),onClick:w},o(e.$t("CANCEL")),9,be)])])])):s(d)==="email-confirm"?(c(),u("div",fe,[t("h3",ve,o(e.$t("MFA_METHOD_EMAIL")),1
1),t("div",he,o(e.$t("MFA_EMAIL_CODE_SENT")),1),t("form",Ee,[t("label",ye,o(e.$t("MFA_CODE_LABEL")),1),R(t("input",{"onUpdate:modelValue":l[1]||(l[1]=T=>$(i)?i.value=T:null),type:"text",inputmode:"numeric",autocomplete:"one-time-code",class:"form-control",disabled:s(n),onKeyup:D(O,["enter"])},null,40,Ae),[[L,s(i)]]),s(a)?(c(),u("div",Me,o(s(a)),1)):_("",!0),t("div",ge,[t("button",{class:"btn btn-secondary",type:"submit",disabled:s(n)||!s(i),onClick:O},o(e.$t("MFA_VERIFY")),9,Te),t("button",{class:"btn btn-link",type:"button",disabled:s(n)||s(g),onClick:S},o(e.$t("MFA_EMAIL_RESEND")),9,Ce),t("button",{class:"btn btn-link",type:"button",disabled:s(n),onClick:M},o(e.$t("CANCEL")),9,ke)])])])):s(d)==="totp-done"?(c(),u("div",Ie,[t("div",Oe,o(e.$t("MFA_ACTIVE")),1),s(v)?(c(),u("div",Fe,[t("h3",Re,o(e.$t("MFA_BACKUP_TITLE")),1),t("p",Le,o(e.$t("MFA_BACKUP_DESC")),1),t("div",$e,[t("pre",De,o(s(v)),1),t("button",{class:"btn btn-outline-secondary btn-sm",type:"button",onClick:B},o(e.$t("MFA_BACKUP_COPY")),1)])])):_("",!0),t("button",{class:"btn btn-secondary mt-3",type:"button",onClick:P}
1,o(e.$t("MFA_CONTINUE")),1)])):_("",!0),s(a)&&s(d)==="choose"?(c(),u("div",Ne,o(s(a)),1)):_("",!0)])}}};export{we 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.