PageSourceSearch

https://doinhanhweb.manus.space/assets/Login-6MEQVbB8.js

js doinhanhweb.manus.space collected 2026-10-03 05:01:30 UTC 5,994 bytes, 1 lines download raw bytes

1import{o as F,r as e,t as N,b as f,j as s,L as v,F as b,z as k,n as y}from"./index-DRYNtDfq.js";import{I as g}from"./input-Bz87F-Tp.js";import{L as h}from"./label-CD9P1Z7v.js";import{M as P}from"./mail-Dy7s7wzw.js";import{L as q}from"./lock-CZM3uMiW.js";import{E as A}from"./eye-off-BfVU3Ou0.js";import{E as T}from"./eye-CK6SMoQC.js";import"./dialog-D6TyplgW.js";import"./useComposition-Lg3rnDe0.js";function V(){const[,p]=F(),[u,w]=e.useState(""),[x,E]=e.useState(""),[n,S]=e.useState(!1),[m,a]=e.useState(""),[i,L]=e.useState(null),[l,j]=e.useState(""),[o,c]=e.useState(""),r=N.auth.login.useMutation({onSuccess:t=>{a(""),t.requires2FA&&t.tempToken?L(t.tempToken):(f.success("Đăng nhập thành công!"),p("/"))},onError:()=>{a("Email hoặc mật khẩu không đúng")}}),d=N.auth.verify2FA.useMutation({onSuccess:()=>{c(""),f.success("Xác thá»±c thành công!"),p("/")},onError:()=>{c("Mã xác thá»±c không đúng hoặc đã hết hạn")}}),C=t=>{t.preventDefault(),a(""),r.mutate({email:u,password:x})},M=t=>{t.preventDefault(),i&&(c(""),d.mutate({tempToken:i,code:l}))};return i?s.jsx(v,{"data-loc":"client/src/pages/Login.tsx:64",children:s.jsx("div",{"data-loc":"client/src/pages/Login.tsx:65",className:"auth-page",children:s.jsxs("div",{"data-loc":"client/src/pages/Login.tsx:66",className:"auth-card",children:[s.jsxs("div",{"data-loc":"client/src/pages/Login.tsx:67",className:"auth-header",children:[s.jsx("div",{"data-loc":"client/src/pages/Login.tsx:68",className:"auth-icon",children:"🔐"}),s.jsx("h1",{"data-loc":"client/src/pages/Login.tsx:69",children:"Xác thá»±c 2 bước"}),s.jsx("p",{"data-loc":"client/src/pages/Login.tsx:70",children:"Nhập mã 6 số từ ứng dụng Google Authenticator"})]}),s.jsxs("form",{"data-loc":"client/src/pages/Login.tsx:72",onSubmit:M,className:"auth-form",children:[s.jsxs("div",{"data-loc":"client/src/pages/Login.tsx:73",className:"auth-field",children:[s.jsx(h,{"data-loc":"client/src/pages/Login.tsx:74",children:"Mã xác thá»±c"}),s.jsx(g,{"data-loc":"client/src/pages/Login.tsx:75",type:"text",inputMode:"numeric",maxLength:6,pattern:"[0-9]{6}",placeholder:"000000",value:l,onChange:t=>{j(t.target.value.replace(/\D/g,"")),c("")},className:`auth-input text-center text-2xl tracking-[0.5em]${o?" border-red-500":""}`,autoFocus:!0}),o&&s.jsx("p",{"data-loc":"client/src/pages/Login.tsx:87",className:"text-red-500 text-sm mt-2 text-center",children:o})]}),s.jsxs(b,{"data-loc":"client/src/pages/Login.tsx:90",type:"submit",className:"auth-submit",disabled:d.isPending||l.length!==6,children:[d.isPending?s.jsx(k,{"data-loc":"client/src/pages/Login.tsx:91",className:"w-4 h-4 animate-spin mr-2"}):null,"Xác nhận"]}),s.jsx("button",{"data-loc":"client/src/pages/Login.tsx:94",type:"button",className:"auth-link",onClick:()=>{L(null),j(""),c("")},children:"← Quay lại đăng nhập"})]})]})})}):s.jsx(v,{"data-loc":"client/src/pages/Login.tsx:105",children:s.jsx("div",{"data-loc":"client/src/pages/Login.tsx:106",className:"auth-page",children:s.jsxs("div",{"data-loc":"client/src/pages/Login.tsx:107",className:"auth-card",children:[s.jsxs("div",{"data-loc":"client/src/pages/Login.tsx:108",className:"auth-header",children:[s.jsx("div",{"data-loc":"client/src/pages/Login.tsx:109",className:"auth-icon",children:"👋"}),s.jsx("h1",{"data-loc":"client/src/pages/Login.tsx:110",children:"Đăng nhập"}),s.jsx("p",{"data-loc":"client/src/pages/Login.tsx:111",children:"Chào mừng bạn quay trở lại DoiNhanh"})]}),s.jsxs("form",{"data-loc":"client/src/pages/Login.tsx:114",onSubmit:C,className:"auth-form",children:[m&&s.jsx("div",{"data-loc":"client/src/pages/Login.tsx:116",className:"bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded-lg text-sm",children:m}),s.jsxs("div",{"data-loc":"client/src/pages/Login.tsx:121",className:"auth-field",children:[s.jsx(h,{"data-loc":"client/src/pages/Login.tsx:122",htmlFor:"email",children:"Email"}),s.jsxs("div",{"data-loc":"client/src/pages/Login.tsx:123",className:"auth-input-wrap",children:[s.jsx(P,{"data-loc":"client/src/pages/Login.tsx:124",className:"auth-input-icon"}),s.jsx(g,{"data-loc":"client/src/pages/Login.tsx:125",id:"email",type:"email",placeholder:"[email protected]",value:u,onChange:t=>{w(t.target.value),a("")},className:"auth-input pl-10",required:!0})]})]}),s.jsxs("div",{"data-loc":"client/src/pages/Login.tsx:137",className:"auth-field",children:[s.jsxs("div",{"data-loc":"client/src/pages/Login.tsx:138",className:"flex items-center justify-between",children:[s.jsx(h,{"data-loc":"client/src/pages/Login.tsx:139",htmlFor:"password",children:"Mật khẩu"}),s.jsx(y,{"data-loc":"client/src/pages/Login.tsx:140",href:"/quen-mat-khau",className:"auth-forgot-link",children:"Quên mật khẩu?"})]}),s.jsxs("div",{"data-loc":"client/src/pages/Login.tsx:142",className:"auth-input-wrap",children:[s.jsx(q,{"data-loc":"client/src/pages/Login.tsx:143",className:"auth-input-icon"}),s.jsx(g,{"data-loc":"client/src/pages/Login.tsx:144",id:"password",type:n?"text":"password",placeholder:"••••••••",value:x,onChange:t=>{E(t.target.value),a("")},className:"auth-input pl-10 pr-10",required:!0}),s.jsx("button",{"data-loc":"client/src/pages/Login.tsx:153",type:"button",className:"auth-eye-btn",onClick:()=>S(!n),children:n?s.jsx(A,{"data-loc":"client/src/pages/Login.tsx:154",className:"w-4 h-4"}):s.jsx(T,{"data-loc":"client/src/pages/Login.tsx:154",className:"w-4 h-4"})})]})]}),s.jsxs(b,{"data-loc":"client/src/pages/Login.tsx:159",type:"submit",className:"auth-submit",disabled:r.isPending,children:[r.isPending?s.jsx(k,{"data-loc":"client/src/pages/Login.tsx:160",className:"w-4 h-4 animate-spin mr-2"}):null,"Đăng nhập"]})]}),s.jsxs("p",{"data-loc":"client/src/pages/Login.tsx:167",className:"auth-footer-text",children:["Chưa có tài khoản? ",s.jsx(y,{"data-loc":"client/src/pages/Login.tsx:168",href:"/dang-ky",className:"auth-footer-link",children:"Đăng ký ngay"})]})]})})})}export{V 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.