PageSourceSearch

https://www.xpark.ai/assets/AdminLogin-BsfFLSqH.js

js xpark.ai collected 2026-10-05 14:02:22 UTC 3,406 bytes, 1 lines download raw bytes

1import{u as z,c as P,a as L,r as n,d as a,j as e,S as B,B as c,e as I,I as y,f as O,o as A,s as b,g as o}from"./index-FWKSGZPO.js";import{L as N}from"./label--tnD4pjg.js";import{C as R,a as T,b as U,c as V}from"./card-DTQVPU97.js";const F=A({email:b().trim().email("E-mail inválido").max(255),password:b().min(8,"Senha muito curta").max(128)});function G(){z();const r=P(),{user:i,loading:d,signOut:S}=L(),[u,x]=n.useState(""),[h,p]=n.useState(""),[f,l]=n.useState(!1),[g,j]=n.useState(null);n.useEffect(()=>{d||!i||(async()=>{const[{data:s},{data:t}]=await Promise.all([a.from("user_roles").select("role").eq("user_id",i.id).eq("role","xpark_admin").maybeSingle(),a.from("memberships").select("organization_id, organizations!inner(status)").eq("user_id",i.id).eq("organizations.status","active").limit(1).maybeSingle()]);s||t?r("/admin",{replace:!0}):j(i.email??"usuário")})()},[i,d,r]);const C=async s=>{var v;s.preventDefault();const t=F.safeParse({email:u,password:h});if(!t.success)return o.error(t.error.issues[0].message);l(!0);const{error:w}=await a.auth.signInWithPassword({email:t.data.email,password:t.data.password});if(w)return l(!1),o.error(w.message);const{data:_}=await a.auth.getUser(),m=(v=_.user)==null?void 0:v.id;if(!m)return l(!1),o.error("Sessão inválida");const[{data:E},{data:k}]=await Promise.all([a.from("user_roles").select("role").eq("user_id",m).eq("role","xpark_admin").maybeSingle(),a.from("memberships").select("organization_id, organizations!inner(status)").eq("user_id",m).eq("organizations.status","active").limit(1).maybeSingle()]);if(l(!1),!E&&!k)return await a.auth.signOut(),o.error("Esta conta não tem permissão para acessar o painel.");o.success("Bem-vindo!"),r("/admin",{replace:!0})},q=async()=>{await S(),j(null),x(""),p("")};return e.jsx("div",{className:"min-h-screen bg-background flex items-center justify-center p-4",children:e.jsxs(R,{className:"w-full max-w-md",children:[e.jsxs(T,{className:"text-center",children:[e.jsx("div",{className:"mx-auto h-12 w-12 rounded-full bg-primary/10 flex items-center justify-center mb-2",children:e.jsx(B,{className:"h-6 w-6 text-primary"})}),e.jsx(U,{children:"Painel administrativo"})]}),e.jsx(V,{children:g?e.jsxs("div",{className:"space-y-3 text-center",children:[e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Você está conectado como ",e.jsx("strong",{className:"text-foreground",children:g}),", mas essa conta não tem permissão para acessar o painel."]}),e.jsxs(c,{onClick:q,className:"w-full",children:[e.jsx(I,{className:"mr-2 h-4 w-4"}),"Sair e entrar com conta de admin"]}),e.jsx(c,{variant:"outline",className:"w-full",onClick:()=>r("/"),children:"Voltar ao site"})]}):e.jsxs("form",{onSubmit:C,className:"space-y-3 pt-2",children:[e.jsxs("div",{children:[e.jsx(N,{htmlFor:"email",children:"E-mail"}),e.jsx(y,{id:"email",type:"email",required:!0,value:u,onChange:s=>x(s.target.value)})]}),e.jsxs("div",{children:[e.jsx(N,{htmlFor:"pw",children:"Senha"}),e.jsx(y,{id:"pw",type:"password",required:!0,value:h,onChange:s=>p(s.target.value)})]}),e.jsxs(c,{type:"submit",className:"w-full",disabled:f,children:[f&&e.jsx(O,{className:"mr-2 h-4 w-4 animate-spin"}),"Entrar como admin"]}),e.jsx(c,{type:"button",variant:"ghost",className:"w-full text-xs text-muted-foreground",onClick:()=>r("/minhas-reservas"),children:"Você é cliente? Entre aqui."})]})})]})})}export{G 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.