1import{_ as F}from"./DqlhnopA.js";import{_ as L}from"./VbjLhgcK.js";import{d as Z,u as K,I as j,c as d,e as t,j as s,g as G,w as B,F as p,r as q,f as b,t as x,p as H,h as P,i as _,v as C,n as S,k as E,m as T,q as l,_ as J,V as Q,o as i,N as V}from"./Qj9-Otmk.js";import{i as X}from"./DyJRbJBC.js";import"./B-rek35P.js";import"./BJx6WMk6.js";import"./BJ2ClxiI.js";import"./BNjpTFPi.js";const Y={class:"w-full py-20",style:{"background-color":"var(--bg-beige)"}},ee={class:"site-section"},te={class:"max-w-md mx-auto"},se={class:"bg-white rounded-2xl p-10 border border-[rgba(10,37,63,0.08)] shadow-[0_2px_8px_rgba(10,37,63,0.03)]"},ae={class:"flex items-center justify-center gap-2 mb-8"},ne={class:"text-[2rem] font-light text-main-dark mb-2 text-center"},oe={key:0,class:"mt-6 mb-4 p-4 rounded-xl border-2 border-dashed border-main-cta/50 bg-main-cta/5 text-main-cta text-sm font-medium"},le={class:"space-y-5"},re=["disabled"],ie={class:"text-fliesstext text-sm font-light mt-4 mb-6"},de={class:"text-main-dark font-medium"},ue={class:"space-y-5"},ce=["disabled"],me={class:"mt-4 text-center text-fliesstext text-sm font-light"},fe=["disabled"],pe={class:"space-y-5"},ge=["disabled"],be={class:"mt-6 text-center text-fliesstext text-sm font-light"},Ee=Z({__name:"passwort-vergessen",setup(ve){K({title:"Passwort vergessen",robots:"noindex"});const N=X(),c=l(1),m=l(""),f=l(""),u=l(""),v=l(""),I=l(""),M=l(""),a=l(""),o=l(!1),g=l(0),w=l(!1),y=l(!1),k=l(!1);let h=null;function z(){g.value=60,h=Q(()=>{g.value--,g.value<=0&&h&&(clearInterval(h),h=null)},1e3)}j(()=>{h&&clearInterval(h)});async function $(){if(a.value="",w.value=!1,!m.value.trim()){w.value=!0,a.value="Bitte geben Sie Ihre E-Mail-Adresse ein.",document.getElementById("email")?.focus();return}if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(m.value)){w.value=!0,a.value="Bitte geben Sie eine gültige E-Mail-Adresse ein.",document.getElementById("email")?.focus();return}o.value=!0;try{const n=await $fetch("/api/auth/forgot-password",{method:"POST",body:{email:m.value}});I.value=n?.checksum||"",c.value=2,z()}catch(n){const e=n;a.value=e.statusMessage||e.data?.statusMessage||e.data?.msg||e.data?.message||e.message||"Ein Fehler ist aufgetreten."}finally{o.value=!1}}async function A(){if(!(g.value>0)){a.value="",o.value=!0;try{const n=await $fetch("/api/auth/forgot-password",{method:"POST",body:{email:m.value}});I.value=n?.checksum||"",f.value="",z()}catch{}finally{o.value=!1}}}async function D(){if(a.value="",f.value.length!==6||!/^\d{6}$/.test(f.value)){a.value="Bitte geben Sie den 6-stelligen Code ein.",document.getElementById("otp")?.focus();return}o.value=!0;try{const n=await $fetch("/api/auth/verify-reset-otp",{method:"POST",body:{checksum:I.value,otp:f.value}});n?.success&&n.reset_token?(M.value=n.reset_token,c.value=3):n?.error_key==="otp_expired"?a.value="Der Code ist abgelaufen. Bitte fordern Sie einen neuen Code an.":
1a.value=n?.msg||"Code ungültig oder abgelaufen."}catch(n){const e=n;e.data?.error_key==="otp_expired"?a.value="Der Code ist abgelaufen. Bitte fordern Sie einen neuen Code an.":a.value=e.statusMessage||e.data?.statusMessage||e.data?.msg||e.data?.message||e.message||"Code ungültig oder abgelaufen."}finally{o.value=!1}}async function O(){if(a.value="",y.value=!1,k.value=!1,!u.value){y.value=!0,a.value="Bitte geben Sie ein neues Passwort ein.",document.getElementById("password")?.focus();return}if(u.value.length<8){y.value=!0,a.value="Das Passwort muss mindestens 8 Zeichen lang sein.",document.getElementById("password")?.focus();return}if(!v.value){k.value=!0,a.value="Bitte bestätigen Sie Ihr neues Passwort.",document.getElementById("password_confirm")?.focus();return}if(u.value!==v.value){k.value=!0,a.value="Passwörter stimmen nicht überein.",document.getElementById("password_confirm")?.focus();return}o.value=!0;try{const n=await $fetch("/api/auth/reset-password",{method:"POST",body:{reset_token:M.value,new_password:u.value}});n?.success?n.autoLogin?await V("/account"):await V("/login?reset=1"):a.value=n?.msg||"Passwort-Reset fehlgeschlagen."}catch(n){const e=n;a.value=e.statusMessage||e.data?.statusMessage||e.data?.msg||e.data?.message||e.message||"Passwort-Reset fehlgeschlagen."}finally{o.value=!1}}return(n,e)=>{const R=F,U=L,W=J;return i(),d("section",Y,[t("div",ee,[t("div",te,[t("div",se,[s(N)?(i(),G(U,{key:0},{fallback:B(()=>[...e[4]||(e[4]=[t("div",{class:"min-h-[240px]","aria-hidden":"true"},null,-1)])]),default:B(()=>[T(R,{auth:"reset"})]),_:1})):(i(),d(p,{key:1},[t("div",ae,[(i(),d(p,null,q(3,r=>t("div",{key:r,class:S(["h-1.5 rounded-full transition-all duration-300",[r<=s(c)?"bg-akzent-schrift":"bg-[rgba(10,37,63,0.1)]",r===s(c)?"w-8":"w-4"]])},null,2)),64))]),t("h1",ne,[s(c)===1?(i(),d(p,{key:0},[b("Passwort vergessen")],64)):s(c)===2?(i(),d(p,{key:1},[b("Code eingeben")],64)):(i(),d(p,{key:2},[b("Neues Passwort")],64))]),s(a)?(i(),d("div",oe,x(s(a)),1)):H("",!0),s(c)===1?(i(),d(p,{key:1},[e[6]||(e[6]=t("p",{class:"text-fliesstext text-sm font-light mt-4 mb-6"}," Geben Sie Ihre E-Mail-Adresse ein. Falls ein Konto existiert, erhalten Sie einen 6-stelligen Code zum Zurücksetzen Ihres Passworts. ",-1)),t("form",{novalidate:"",onSubmit:P($,["prevent"])},[t("div",le,[t("div",null,[e[5]||(e[5]=t("label",{for:"email",class:"block text-sm font-medium text-main-dark mb-2"}," E-Mail-Adresse ",-1)),_(t("input",{id:"email","onUpdate:modelValue":e[0]||(e[0]=r=>E(m)?m.value=r:null),type:"email",autocomplete:"email",class:S(["w-full px-4 py-3 border rounded-xl font-light text-main-dark focus:outline-none focus:border-akzent-schrift focus:ring-1 focus:ring-akzent-schrift transition-colors",s(w)?"border-main-cta":"border-[rgba(10,37,63,0.15)]"]),placeholder:"[email protected]"},null,2),[[C,s(m)]])]),t("button",{type:"submit",disabled:s(o),class:"cta w-full text-center py-3 disabled:opacity-50"},x(s(o)?"Wird gesendet...":"Code anfordern"),9,re)])],32)],64)):s(c)===2?(i(),d(p,{key:2},[t("p",ie,[e[7]||(e[7]=b(" Wir haben einen 6-stelligen Code an ",-1)),t("strong",de,x(s(m)),1),e[8]||(e[8]=b(" gesendet. Geben Sie den Code unten ein. ",-1))]),t("form",{novalidate:"",onSubmit:P(D,["prevent"])},[t("div",ue,[t("div",null,[e[9]||(e[9]=t("label",{for:"otp",class:"block text-sm font-medium text-main-dark mb-2"}," 6-stelliger Code ",-1)),_(t("input",{id:"otp","onUpdate:modelValue":e[1]||(e[1]=r=>E(f)?f.value=r:null),type:"text",inputmode:"numeric",maxlength:"6",autocomplete:"one-time-code",class:"w-full px-4 py-3 border border-[rgba(10,37,63,0.15)] rounded-xl font-light text-main-dark focus:outline-none focus:border-akzent-schrift focus:ring-1 focus:ring-akzent-schrift transition-colors text-center text-2xl tracking-widest",placeholder:"000000"},null,512),[[C,s(f)]])]),t("button",{type:"submit",disabled:s(o)||s(f).length!==6,class:"cta w-full text-center py-3 disabled:opacity-50"},x(s(o)?"Wird geprüft...":"Code bestätigen"),9,ce)])],32),t("p",me,[e[10]||(e[10]=b(" Keinen Code erhalten? ",-1)),t("button",{disabled:s(g)>0,class:"text-main-dark underline hover:text-main-cta disabled:opacity-50 disabled:no-underline",onClick:A},x(s(g)>0?`Erneut senden (${s(g)}s)`:"Erneut senden"),9,fe)])],64)):(i(),d(p,{key:3},[e[13]||(e[13]=t("p",{class:"text-fliesstext text-sm font-light mt-4 mb-6"}," Wählen Sie ein neues Passwort für Ihr Konto. ",-1)),t("form",{novalidate:"",onSubmit:P(O,["prevent"])},[t("div",pe,[t("div",null,[e[11]||(e[11]=t("label",{for:"password",class:"block text-sm font-medium text-main-dark mb-2"}," Neues Passwort ",-1)),_(t("input",{id:"password","onUpdate:modelValue":e[2]||(e[2]=r=>E(u)?u.value=r:null),type:"password",autocomplete:"new-password",class:S(["w-full px-4 py-3 border rounded-xl font-light text-main-dark focus:outline-none focus:border-akzent-schrift focus:ring-1 focus:ring-akzent-schrift transition-colors",s(y)?"border-main-cta":"border-[rgba(10,37,63,0.15)]"]),placeholder:"Mindestens 8 Zeichen"},null,2),[[C,s(u)]])]),t("div",null,[e[12]||(e[12]=t("label",{for:"password_confirm",class:"block text-sm font-medium text-main-dark mb-2"}," Passwort bestätigen ",-1)),_(t("input",{id:"password_confirm","onUpdate:modelValue":e[3]||(e[3]=r=>E(v)?v.value=r:null),type:"password",autocomplete:"new-password",class:S(["w-full px-4 py-3 border rounded-xl font-light text-main-dark focus:outline-none focus:border-akzent-schrift focus:ring-1 focus:ring-akzent-schrift transition-colors",s(k)?"border-main-cta":"border-[rgba(10,37,63,0.15)]"])},null,2),[[C,s(v)]])]),t("button",{type:"submit",disabled:s(o)||s(u).length<8||s(u)!==s(v),class:"cta w-full text-center py-3 disabled:opacity-50"},x(s(o)?"Wird gespeichert...":"Passwort ändern"),9,ge)])],32)],64)),t("p",be,[T(W,{to:"/login",class:"text-main-dark underline hover:text-main-cta"},{default:B(()=>[...e[14]||(e[14]=[b(" Zurück zur Anmeldung ",-1)])]),_:1})])],64))])])])])}}});
1export{Ee 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.