2 lines
4.9 KiB
JavaScript
2 lines
4.9 KiB
JavaScript
import{u as e,j as s}from"./vendor-query-a3e439f2.js";import{u as r,r as t,e as a}from"./vendor-react-ac1483bd.js";import{c as i,a as n,u as d}from"./vendor-forms-f89aa741.js";import{o}from"./yup-bff05cf1.js";import{u as m,B as l}from"./index-590deac5.js";import{I as c}from"./Input-dc2009a3.js";import{Q as x,p as u}from"./_requests-35c9d4c3.js";import{V as p}from"./vendor-toast-598db4db.js";import{i as g,h,E as j,j as y}from"./vendor-ui-8a3c5c7d.js";const f=i({username:n().required("نام کاربری الزامی است").min(3,"نام کاربری باید حداقل ۳ کاراکتر باشد"),password:n().required("رمز عبور الزامی است").min(6,"رمز عبور باید حداقل ۶ کاراکتر باشد")});i({name:n().required("نام الزامی است").min(2,"نام باید حداقل ۲ کاراکتر باشد"),email:n().required("ایمیل الزامی است").email("فرمت ایمیل صحیح نیست"),phone:n().required("شماره تلفن الزامی است").matches(/^09\d{9}$/,"شماره تلفن صحیح نیست"),role:n().required("نقش الزامی است"),password:n().optional().min(6,"رمز عبور باید حداقل ۶ کاراکتر باشد")}),i({siteName:n().required("نام سایت الزامی است"),siteDescription:n().required("توضیحات سایت الزامی است"),adminEmail:n().required("ایمیل مدیر الزامی است").email("فرمت ایمیل صحیح نیست"),language:n().required("زبان الزامی است")});const N=()=>{var i;const{isAuthenticated:n,isLoading:N,restoreSession:b}=m(),v=r(),[k,w]=t.useState(!1),[S,q]=t.useState(""),{mutate:_,isPending:I}=e({mutationKey:[x.ADMIN_LOGIN],mutationFn:e=>u(e),onSuccess:e=>{localStorage.setItem("admin_token",e.tokens.access_token),localStorage.setItem("admin_refresh_token",e.tokens.refresh_token),localStorage.setItem("admin_user",JSON.stringify(e.admin_user)),localStorage.setItem("admin_permissions",JSON.stringify(e.permissions)),p.success("ورود موفقیتآمیز بود")},onError:e=>{p.error((null==e?void 0:e.message)||"خطا در ورود")}}),{register:E,handleSubmit:O,formState:{errors:A,isValid:C}}=d({resolver:o(f),mode:"onChange"});if(N)return s.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900",children:s.jsxs("div",{className:"text-center",children:[s.jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600 mx-auto"}),s.jsx("p",{className:"mt-4 text-gray-600 dark:text-gray-400",children:"در حال بارگذاری..."})]})});if(n)return s.jsx(a,{to:"/",replace:!0});return s.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900 py-12 px-4 sm:px-6 lg:px-8",children:s.jsxs("div",{className:"max-w-md w-full space-y-8",children:[s.jsxs("div",{children:[s.jsx("div",{className:"mx-auto h-12 w-12 bg-primary-600 rounded-lg flex items-center justify-center",children:s.jsx(g,{className:"h-6 w-6 text-white"})}),s.jsx("h2",{className:"mt-6 text-center text-3xl font-extrabold text-gray-900 dark:text-gray-100",children:"ورود به پنل مدیریت"}),s.jsx("p",{className:"mt-2 text-center text-sm text-gray-600 dark:text-gray-400",children:"لطفا اطلاعات خود را وارد کنید"})]}),s.jsxs("form",{className:"mt-8 space-y-6",onSubmit:O(async e=>{q(""),_(e,{onSuccess:()=>{b(),v("/")},onError:()=>{q("نام کاربری یا رمز عبور اشتباه است")}})}),children:[s.jsxs("div",{className:"space-y-4",children:[s.jsx(c,{label:"نام کاربری",type:"text",placeholder:"نام کاربری خود را وارد کنید",icon:h,error:null==(i=A.username)?void 0:i.message,...E("username")}),s.jsxs("div",{className:"space-y-1",children:[s.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300",children:"رمز عبور"}),s.jsxs("div",{className:"relative",children:[s.jsx("div",{className:"absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none",children:s.jsx(g,{className:"h-5 w-5 text-gray-400"})}),s.jsx("input",{type:k?"text":"password",placeholder:"رمز عبور خود را وارد کنید",className:"input pr-10 pl-10 "+(A.password?"border-red-500 dark:border-red-500 focus:ring-red-500":""),...E("password")}),s.jsx("button",{type:"button",className:"absolute inset-y-0 left-0 pl-3 flex items-center",onClick:()=>w(!k),children:k?s.jsx(j,{className:"h-5 w-5 text-gray-400 hover:text-gray-600"}):s.jsx(y,{className:"h-5 w-5 text-gray-400 hover:text-gray-600"})})]}),A.password&&s.jsx("p",{className:"text-sm text-red-600 dark:text-red-400",children:A.password.message})]})]}),S&&s.jsx("div",{className:"bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 text-red-600 dark:text-red-400 px-4 py-3 rounded-lg text-sm",children:S}),s.jsx(l,{type:"submit",loading:I,disabled:!C,className:"w-full",children:"ورود"})]})]})})};export{N as Login};
|