astrion-website/demo/static/dist/assets/login.js

2 lines
2.8 KiB
JavaScript

import{d as g,o as _,b as h,c as f,g as t,h as m,j as v,z as k,f as T,t as j,i as C,k as n,m as S}from"./runtime-dom.esm-bundler.js";import{a as V,l as L}from"./auth.js";const N={class:"auth-page"},x={class:"auth-card"},A={class:"auth-form-group"},B={class:"auth-form-group"},M=["disabled"],O=["disabled"],D={class:"auth-error"},E=g({__name:"LoginApp",setup(K){const l=n(""),r=n(""),s=n(""),i=n(!1),u=n(!1),c=n(!1),w=async(e="/")=>{if(!l.value||!r.value){s.value="请输入邮箱和密码";return}i.value=!0,s.value="";try{const a=await fetch("/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:l.value,password:r.value})});if(a.status===503){const d=await a.json().catch(()=>({}));s.value=d.error||"服务暂时不可用,请稍后重试";return}const o=await a.json();if(o.success){window.location.href=e;return}s.value=o.error||"登录失败"}catch{s.value="网络错误,请重试"}finally{i.value=!1}},p=()=>w("/"),b=async(e="/")=>{u.value=!0,s.value="";try{const a=await fetch("/host-login",{method:"POST"});if(a.status===503){const d=await a.json().catch(()=>({}));s.value=d.error||"资源繁忙,请稍后再试";return}const o=await a.json();if(o.success){window.location.href=e;return}s.value=o.error||"宿主机模式不可用"}catch{s.value="网络错误,请重试"}finally{u.value=!1}},y=()=>b("/");return _(async()=>{if(V(L()),window.ensureCsrfToken)try{await window.ensureCsrfToken()}catch{}try{const a=await(await fetch("/api/host-mode-enabled")).json();c.value=!!(a&&a.success&&a.enabled)}catch{c.value=!1}try{const a=await(await fetch("/api/session-status",{credentials:"same-origin"})).json()}catch(e){console.warn("[auth-debug] login page session-status failed:",e)}}),(e,a)=>(h(),f("main",N,[t("section",x,[a[4]||(a[4]=t("h1",{class:"auth-title"},"Astrion 登录",-1)),a[5]||(a[5]=t("p",{class:"auth-subtitle"},"使用账号继续访问工作台",-1)),t("div",A,[a[2]||(a[2]=t("label",{class:"auth-label",for:"email"},"邮箱",-1)),m(t("input",{id:"email","onUpdate:modelValue":a[0]||(a[0]=o=>l.value=o),type:"email",class:"auth-input",autocomplete:"email"},null,512),[[v,l.value,void 0,{trim:!0}]])]),t("div",B,[a[3]||(a[3]=t("label",{class:"auth-label",for:"password"},"密码",-1)),m(t("input",{id:"password","onUpdate:modelValue":a[1]||(a[1]=o=>r.value=o),type:"password",class:"auth-input",autocomplete:"current-password",onKeydown:k(p,["enter"])},null,544),[[v,r.value]])]),t("button",{class:"auth-button",disabled:i.value,onClick:p},"登录",8,M),c.value?(h(),f("button",{key:0,class:"auth-secondary-button",disabled:u.value,onClick:y}," 宿主机模式(免登录) ",8,O)):T("",!0),t("div",D,j(s.value),1),a[6]||(a[6]=t("div",{class:"auth-link"},[C("还没有账号?"),t("a",{href:"/register"},"点击注册")],-1))])]))}});S(E).mount("#auth-app");