import{S as D,r,c as Y,o as Z,n as v,t as s,K as t,F as g,aj as h,ae as q,I as ee,D as n,az as ae,q as m,C as H,H as w}from"./vendor-vue-WEaOxmRs.js";import{f as te,g as M,l as se,a as oe,r as le}from"./auth-BMPlNhOo.js";import{_ as ne}from"./index-mJEiaIbQ.js";import{E as u}from"./vendor-element-D7IaNnTz.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-0uE2ETD1.js";const re={class:"login-page"},ie={class:"login-container"},ue={class:"form-group"},ce={class:"form-group"},de={key:0,class:"form-group"},pe={class:"captcha-row"},me=["src"],fe=["disabled"],ve={class:"action-links"},ge={class:"captcha-row"},he=["src"],we={class:"captcha-row"},ye=["src"],_e={__name:"LoginPage",setup(be){const O=ae(),i=D({username:"",password:"",captcha:""}),y=r(!1),C=r(""),F=r(""),x=r(!1),_=r(!1),I=r(!1),b=r(!1),V=r(!1),d=D({username:"",captcha:""}),U=r(""),N=r(""),P=r(!1),k=r(""),p=D({email:"",captcha:""}),S=r(""),K=r(""),T=r(!1),z=Y(()=>!!I.value);async function E(){try{const a=await M();F.value=a?.session_id||"",C.value=a?.captcha_image||"",i.captcha=""}catch{F.value="",C.value=""}}async function R(){try{const a=await M();N.value=a?.session_id||"",U.value=a?.captcha_image||"",d.captcha=""}catch{N.value="",U.value=""}}async function B(){try{const a=await M();K.value=a?.session_id||"",S.value=a?.captcha_image||"",p.captcha=""}catch{K.value="",S.value=""}}async function W(){if(!i.username.trim()||!i.password.trim()){u.error("用户名和密码不能为空");return}if(y.value&&!i.captcha.trim()){u.error("请输入验证码");return}x.value=!0;try{await se({username:i.username.trim(),password:i.password,captcha_session:F.value,captcha:i.captcha.trim(),need_captcha:y.value}),u.success("登录成功,正在跳转...");const a=new URLSearchParams(window.location.search||""),e=String(a.get("next")||"").trim(),l=e&&e.startsWith("/")&&!e.startsWith("//")&&!e.startsWith("/\\")?e:"";setTimeout(()=>{const c=l||"/app";O.push(c).catch(()=>{window.location.href=c})},300)}catch(a){const e=a?.response?.status,l=a?.response?.data,c=l?.error||l?.message||"登录失败";u.error(c),l?.need_captcha?(y.value=!0,await E()):y.value&&e===400&&await E()}finally{x.value=!1}}async function A(){b.value=!0,k.value="",d.username="",d.captcha="",await R()}async function G(){if(k.value="",!_.value){u.warning("邮件功能未启用,请联系管理员重置密码。");return}const a=d.username.trim();if(!a){u.error("请输入用户名");return}if(!d.captcha.trim()){u.error("请输入验证码");return}P.value=!0;try{const e=await oe({username:a,captcha_session:N.value,captcha:d.captcha.trim()});u.success(e?.message||"已发送重置邮件"),setTimeout(()=>{b.value=!1},800)}catch(e){const l=e?.response?.data,c=l?.error||"发送失败";l?.code==="email_not_bound"?k.value=c:u.error(c),await R()}finally{P.value=!1}}async function J(){V.value=!0,p.email="",p.captcha="",await B()}async function Q(){const a=p.email.trim();if(!a){u.error("请输入邮箱");return}if(!p.captcha.trim()){u.error("请输入验证码");return}T.value=!0;try{const e=await le({email:a,captcha_session:K.value,captcha:p.captcha.trim()});u.success(e?.message||"验证邮件已发送,请查收"),setTimeout(()=>{V.value=!1},800)}catch(e){const l=e?.response?.data;u.error(l?.error||"发送失败"),await B()}finally{T.value=!1}}function X(){O.push("/register")}return Z(async()=>{try{const a=await te();_.value=!!a?.email_enabled,I.value=!!a?.register_verify_enabled}catch{_.value=!1,I.value=!1}}),(a,e)=>{const l=h("el-input"),c=h("el-alert"),L=h("el-form-item"),f=h("el-button"),$=h("el-form"),j=h("el-dialog");return m(),v("div",re,[s("div",ie,[e[15]||(e[15]=s("div",{class:"login-header"},[s("span",{class:"login-badge"},"用户登录"),s("h1",null,"用户登录系统"),s("p",null,"知识管理平台")],-1)),s("div",ue,[e[11]||(e[11]=s("label",{for:"username"},"用户账号",-1)),t(l,{id:"username",modelValue:i.username,"onUpdate:modelValue":e[0]||(e[0]=o=>i.username=o),class:"login-input",placeholder:"请输入用户名",autocomplete:"username"},null,8,["modelValue"])]),s("div",ce,[e[12]||(e[12]=s("label",{for:"password"},"密码",-1)),t(l,{id:"password",modelValue:i.password,"onUpdate:modelValue":e[1]||(e[1]=o=>i.password=o),class:"login-input",type:"password","show-password":"",placeholder:"请输入密码",autocomplete:"current-password",onKeyup:q(W,["enter"])},null,8,["modelValue"])]),y.value?(m(),v("div",de,[e[13]||(e[13]=s("label",{for:"captcha"},"验证码",-1)),s("div",pe,[t(l,{id:"captcha",modelValue:i.captcha,"onUpdate:modelValue":e[2]||(e[2]=o=>i.captcha=o),class:"login-input captcha-input",placeholder:"请输入验证码",onKeyup:q(W,["enter"])},null,8,["modelValue"]),C.value?(m(),v("img",{key:0,class:"captcha-img",src:C.value,alt:"验证码",title:"点击刷新",onClick:E},null,8,me)):g("",!0),s("button",{type:"button",class:"captcha-refresh",onClick:E},"刷新")])])):g("",!0),s("button",{type:"button",class:"btn-login",disabled:x.value,onClick:W},ee(x.value?"登录中...":"登录系统"),9,fe),s("div",ve,[s("button",{type:"button",class:"link-btn",onClick:A},"忘记密码?"),z.value?(m(),v("button",{key:0,type:"button",class:"link-btn",onClick:J},"重发验证邮件")):g("",!0)]),s("div",{class:"register-row"},[e[14]||(e[14]=s("span",null,"还没有账号?",-1)),s("button",{type:"button",class:"link-btn",onClick:X},"立即注册")])]),t(j,{modelValue:b.value,"onUpdate:modelValue":e[6]||(e[6]=o=>b.value=o),title:"找回密码",width:"min(560px, 92vw)"},{footer:n(()=>[t(f,{onClick:e[5]||(e[5]=o=>b.value=!1)},{default:n(()=>[...e[17]||(e[17]=[w("取消",-1)])]),_:1}),t(f,{type:"primary",loading:P.value,disabled:!_.value,onClick:G},{default:n(()=>[...e[18]||(e[18]=[w(" 发送重置邮件 ",-1)])]),_:1},8,["loading","disabled"])]),default:n(()=>[_.value?(m(),H(c,{key:1,type:"info",closable:!1,title:"通过邮箱找回密码",description:"输入用户名并完成验证码,我们将向该账号绑定的邮箱发送重置链接。","show-icon":""})):(m(),H(c,{key:0,type:"warning",closable:!1,title:"邮件功能未启用",description:"无法通过邮箱找回密码,请联系管理员重置密码。","show-icon":""})),k.value?(m(),H(c,{key:2,type:"warning",closable:!1,title:"无法通过邮箱找回密码",description:k.value,"show-icon":"",class:"alert"},null,8,["description"])):g("",!0),t($,{"label-position":"top",class:"dialog-form"},{default:n(()=>[t(L,{label:"用户名"},{default:n(()=>[t(l,{modelValue:d.username,"onUpdate:modelValue":e[3]||(e[3]=o=>d.username=o),placeholder:"请输入用户名"},null,8,["modelValue"])]),_:1}),t(L,{label:"验证码"},{default:n(()=>[s("div",ge,[t(l,{modelValue:d.captcha,"onUpdate:modelValue":e[4]||(e[4]=o=>d.captcha=o),placeholder:"请输入验证码"},null,8,["modelValue"]),U.value?(m(),v("img",{key:0,class:"captcha-img",src:U.value,alt:"验证码",title:"点击刷新",onClick:R},null,8,he)):g("",!0),t(f,{onClick:R},{default:n(()=>[...e[16]||(e[16]=[w("刷新",-1)])]),_:1})])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(j,{modelValue:V.value,"onUpdate:modelValue":e[10]||(e[10]=o=>V.value=o),title:"重发验证邮件",width:"min(520px, 92vw)"},{footer:n(()=>[t(f,{onClick:e[9]||(e[9]=o=>V.value=!1)},{default:n(()=>[...e[20]||(e[20]=[w("取消",-1)])]),_:1}),t(f,{type:"primary",loading:T.value,onClick:Q},{default:n(()=>[...e[21]||(e[21]=[w("发送",-1)])]),_:1},8,["loading"])]),default:n(()=>[t(c,{type:"info",closable:!1,title:"用于注册邮箱验证:请输入邮箱并完成验证码。","show-icon":""}),t($,{"label-position":"top",class:"dialog-form"},{default:n(()=>[t(L,{label:"邮箱"},{default:n(()=>[t(l,{modelValue:p.email,"onUpdate:modelValue":e[7]||(e[7]=o=>p.email=o),placeholder:"name@example.com"},null,8,["modelValue"])]),_:1}),t(L,{label:"验证码"},{default:n(()=>[s("div",we,[t(l,{modelValue:p.captcha,"onUpdate:modelValue":e[8]||(e[8]=o=>p.captcha=o),placeholder:"请输入验证码"},null,8,["modelValue"]),S.value?(m(),v("img",{key:0,class:"captcha-img",src:S.value,alt:"验证码",title:"点击刷新",onClick:B},null,8,ye)):g("",!0),t(f,{onClick:B},{default:n(()=>[...e[19]||(e[19]=[w("刷新",-1)])]),_:1})])]),_:1})]),_:1})]),_:1},8,["modelValue"])])}}},Ee=ne(_e,[["__scopeId","data-v-15383fb6"]]);export{Ee as default};