2 lines
2.8 KiB
JavaScript
2 lines
2.8 KiB
JavaScript
import{d as T,o as j,m,c as _,f as e,t as l,u as r,l as t,g as w,i as g,A as C,e as S,h as A,j as i,p as L}from"./index.js";import{a as M,l as N}from"./auth.js";const U={class:"auth-page"},V={class:"auth-card"},B={class:"auth-title"},E={class:"auth-subtitle"},x={class:"auth-form-group"},O={class:"auth-label",for:"email"},P={class:"auth-form-group"},R={class:"auth-label",for:"password"},D=["disabled"],K=["disabled"],q={class:"auth-error"},F={class:"auth-link"},H={href:"/register"},J=T({__name:"LoginApp",setup(z){const u=i(""),c=i(""),s=i(""),d=i(!1),h=i(!1),p=i(!1),y=async(o="/")=>{if(!u.value||!c.value){s.value=t("auth.emailAndPasswordRequired");return}d.value=!0,s.value="";try{const a=await fetch("/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:u.value,password:c.value})});if(a.status===503){const v=await a.json().catch(()=>({}));s.value=v.error||t("auth.serviceUnavailable");return}const n=await a.json();if(n.success){window.location.href=o;return}s.value=n.error||t("auth.loginFailed")}catch{s.value=t("auth.networkErrorRetry")}finally{d.value=!1}},f=()=>y("/"),b=async(o="/")=>{h.value=!0,s.value="";try{const a=await fetch("/host-login",{method:"POST"});if(a.status===503){const v=await a.json().catch(()=>({}));s.value=v.error||t("auth.resourceBusy");return}const n=await a.json();if(n.success){window.location.href=o;return}s.value=n.error||t("auth.hostModeUnavailable")}catch{s.value=t("auth.networkErrorRetry")}finally{h.value=!1}},k=()=>b("/");return j(async()=>{if(M(N()),window.ensureCsrfToken)try{await window.ensureCsrfToken()}catch{}try{const a=await(await fetch("/api/host-mode-enabled")).json();p.value=!!(a&&a.success&&a.enabled)}catch{p.value=!1}try{const a=await(await fetch("/api/session-status",{credentials:"same-origin"})).json()}catch(o){console.warn("[auth-debug] login page session-status failed:",o)}}),(o,a)=>(m(),_("main",U,[e("section",V,[e("h1",B,l(r(t)("auth.loginTitle")),1),e("p",E,l(r(t)("auth.loginSubtitle")),1),e("div",x,[e("label",O,l(r(t)("auth.email")),1),w(e("input",{id:"email","onUpdate:modelValue":a[0]||(a[0]=n=>u.value=n),type:"email",class:"auth-input",autocomplete:"email"},null,512),[[g,u.value,void 0,{trim:!0}]])]),e("div",P,[e("label",R,l(r(t)("auth.password")),1),w(e("input",{id:"password","onUpdate:modelValue":a[1]||(a[1]=n=>c.value=n),type:"password",class:"auth-input",autocomplete:"current-password",onKeydown:C(f,["enter"])},null,544),[[g,c.value]])]),e("button",{class:"auth-button",disabled:d.value,onClick:f},l(r(t)("auth.login")),9,D),p.value?(m(),_("button",{key:0,class:"auth-secondary-button",disabled:h.value,onClick:k},l(r(t)("auth.hostModeNoLogin")),9,K)):S("",!0),e("div",q,l(s.value),1),e("div",F,[A(l(r(t)("auth.noAccount")),1),e("a",H,l(r(t)("auth.signUp")),1)])])]))}});L(J).mount("#auth-app");
|