PageSourceSearch

https://fitnessprofi.lovable.app/assets/Auth-C8uMrl2h.js

js fitnessprofi.lovable.app collected 2026-10-03 03:31:31 UTC 7,278 bytes, 1 lines download raw bytes

1import{r as i,a as O,u as Z,b as W,d as $,j as e,L as g,s as x}from"./index-DfbPMtFZ.js";import{I as l,B as u}from"./Combination-DdoM_vzj.js";import{C,b as S,c as P,d as D,a as I,e as L}from"./card-DN9U93Ar.js";import{L as n}from"./label-BPIIdxfs.js";import{T as G,a as V,b as M,c as T}from"./tabs-O9pKp1Yw.js";import{D as _,a as J,b as Q,c as X,d as Y,e as ee,f as se}from"./dialog-CUfzLZNo.js";import{H as ae,M as j,U as te,F as re}from"./Footer-DkkU8vMF.js";import{L as R}from"./lock-CeMlDgpQ.js";import{P as ie}from"./phone-B9YihfBx.js";import"./shield-gTmsYmaS.js";const xe=()=>{const[o,d]=i.useState(!1),[c,f]=i.useState(""),[h,v]=i.useState(""),[w,k]=i.useState(""),[N,A]=i.useState(""),[y,b]=i.useState(""),[U,E]=i.useState(!1),{toast:a}=O(),p=Z(),q=W(),{user:F}=$();i.useEffect(()=>{F&&p("/")},[F,p]);const z=async s=>{var r,t;s.preventDefault(),d(!0);try{const{error:m}=await x.auth.signInWithPassword({email:c,password:h});if(m){m.message.includes("Invalid login credentials")?a({title:"Anmeldung fehlgeschlagen",description:"E-Mail oder Passwort ist falsch. Bitte versuchen Sie es erneut.",variant:"destructive"}):a({title:"Anmeldung fehlgeschlagen",description:m.message,variant:"destructive"});return}a({title:"Erfolgreich angemeldet",description:"Willkommen zurück!"});const H=((t=(r=q.state)==null?void 0:r.from)==null?void 0:t.pathname)||"/";p(H)}catch{a({title:"Fehler",description:"Ein unerwarteter Fehler ist aufgetreten.",variant:"destructive"})}finally{d(!1)}},B=async s=>{s.preventDefault(),d(!0);try{const r=`${window.location.origin}/`,{error:t}=await x.auth.signUp({email:c,password:h,options:{emailRedirectTo:r,data:{display_name:w,phone:N}}});if(t){t.message.includes("User already registered")?a({title:"Registrierung fehlgeschlagen",description:"Ein Konto mit dieser E-Mail-Adresse existiert bereits. Bitte melden Sie sich stattdessen an.",variant:"destructive"}):t.message.includes("Password should be at least")?a({title:"Schwaches Passwort",description:"Das Passwort muss mindestens 6 Zeichen lang sein.",variant:"destructive"}):a({title:"Registrierung fehlgeschlagen",description:t.message,variant:"destructive"});return}a({title:"Registrierung erfolgreich",description:"Bitte prüfen Sie Ihre E-Mail und bestätigen Sie Ihr Konto."})}catch{a({title:"Fehler",description:"Ein unerwarteter Fehler ist aufgetreten.",variant:"destructive"})}finally{d(!1)}},K=async s=>{s.preventDefault(),d(!0);try{const r=`${window.location.origin}/`,{error:t}=await x.auth.resetPasswordForEmail(y,{redirectTo:r});if(t){a({title:"Fehler",description:t.message,variant:"destructive"});return}a({title:"E-Mail versendet",description:"Prüfen Sie Ihre E-Mail für den Passwort-Reset-Link."}),E(!1),b("")}catch{a({title:"Fehler",description:"Ein unerwarteter Fehler ist aufgetreten.",variant:"destructive"})}finally{d(!1)}};return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(ae,{}),e.jsx("div",{className:"container max-w-md mx-auto px-4 py-16",children:e.jsxs(G,{defaultValue:"login",className:"w-full",children:[e.jsxs(V,{className:"grid w-full grid-cols-2",children:[e.jsx(M,{value:"login",children:"Anmelden"}),e.jsx(M,{value:"signup",children:"Registrieren"})]}),e.jsx(T,{value:"login",children:e.jsxs(C,{children:[e.jsxs(S,{children:[e.jsx(P,{children:"Anmelden"}),e.jsx(D,{children:"Melden Sie sich in Ihrem Fitnessprofi-Konto an"})]}),e.jsxs("form",{onSubmit:z,children:[e.jsxs(I,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{htmlFor:"email",children:"E-Mail"}),e.jsxs("div",{className:"relative",children:[e.jsx(j,{className:"absolute left-3 top-3 h-4 w-4 text-muted-foreground"}),e.jsx(l,{id:"email",type:"email",placeholder:"[email protected]",value:c,onChange:s=>f(s.target.value),className:"pl-10",required:!0})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{htmlFor:"password",children:"Passwort"}),e.jsxs("div",{className:"relative",children:[e.jsx(R,{className:"absolute left-3 top-3 h-4 w-4 text-muted-foreground"}),e.jsx(l,{id:"password",type:"password",placeholder:"Ihr Passwort",value:h,onChange:s=>v(s.target.value),className:"pl-10",required:!0})]})]})]}),e.jsxs(L,{className:"flex flex-col gap-4",children:[e.jsxs(u,{type:"submit",className:"w-full",disabled:o,children:[o&&e.jsx(g,{className:"mr-2 h-4 w-4 animate-spin"}),"Anmelden"]}),e.jsxs(_,{open:U,onOpenChange:E,children:[e.jsx(J,{asChild:!0,children:e.jsx(u,{variant:"link",className:"text-sm text-muted-foreground",children:"Passwort vergessen?"})}),e.jsxs(Q,{children:[e.jsxs(X,{children:[e.jsx(Y,{children:"Passwort zurücksetzen"}),e.jsx(ee,{children:"Geben Sie Ihre E-Mail-Adresse ein und wir senden Ihnen einen Link zum Zurücksetzen Ihres Passworts."})]}),e.jsxs("form",{onSubmit:K,children:[e.jsx("div",{className:"space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{htmlFor:"reset-email",children:"E-Mail"}),e.jsxs("div",{className:"relative",children:[e.jsx(j,{className:"absolute left-3 top-3 h-4 w-4 text-muted-foreground"}),e.jsx(l,{id:"reset-email",type:"email",placeholder:"[email protected]",value:y,onChange:s=>b(s.target.value),className:"pl-10",required:!0})]})]})}),e.jsx(se,{className:"mt-4",children:e.jsxs(u,{type:"submit",disabled:o,children:[o&&e.jsx(g,{className:"mr-2 h-4 w-4 animate-spin"}),"Link senden"]})})]})]})]})]})]})]})}),e.jsx(T,{value:"signup",children:e.jsxs(C,{children:[e.jsxs(S,{children:[e.jsx(P,{children:"Registrieren"}),e.jsx(D,{children:"Erstellen Sie Ihr Fitnessprofi-Konto"})]}),e.jsxs("form",{onSubmit:B,children:[e.jsxs(I,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{htmlFor:"signup-name",children:"Name"}),e.jsxs("div",{className:"relative",children:[e.jsx(te,{className:"absolute left-3 top-3 h-4 w-4 text-muted-foreground"}),e.jsx(l,{id:"signup-name",type:"text",placeholder:"Ihr Name",value:w,onChange:s=>k(s.target.value),className:"pl-10",required:!0})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{htmlFor:"signup-email",children:"E-Mail"}),e.jsxs("div",{className:"relative",children:[e.jsx(j,{className:"absolute left-3 top-3 h-4 w-4 text-muted-foreground"}),e.jsx(l,{id:"signup-email",type:"email",placeholder:"[email protected]",value:c,onChange:s=>
1f(s.target.value),className:"pl-10",required:!0})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{htmlFor:"signup-phone",children:"Telefon (optional)"}),e.jsxs("div",{className:"relative",children:[e.jsx(ie,{className:"absolute left-3 top-3 h-4 w-4 text-muted-foreground"}),e.jsx(l,{id:"signup-phone",type:"tel",placeholder:"+43 123 456 789",value:N,onChange:s=>A(s.target.value),className:"pl-10"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{htmlFor:"signup-password",children:"Passwort"}),e.jsxs("div",{className:"relative",children:[e.jsx(R,{className:"absolute left-3 top-3 h-4 w-4 text-muted-foreground"}),e.jsx(l,{id:"signup-password",type:"password",placeholder:"Mindestens 6 Zeichen",value:h,onChange:s=>v(s.target.value),className:"pl-10",required:!0,minLength:6})]})]})]}),e.jsx(L,{children:e.jsxs(u,{type:"submit",className:"w-full",disabled:o,children:[o&&e.jsx(g,{className:"mr-2 h-4 w-4 animate-spin"}),"Konto erstellen"]})})]})]})})]})}),e.jsx(re,{})]})};export{xe 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.