Files
nademitex_user/dist/assets/OtpView-CsrAaJgf.js
T
mohmdsdgandCopilot adb6ca47cd fix(auth): secure sessions and app routing
Validate sessions against the API, honor configurable base paths, and route unknown pages to 404. Keep development ports stable so user and admin apps cannot be confused.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-24 20:14:11 +03:30

1 line
5.5 KiB
JavaScript

import{D as e,Et as t,G as n,H as r,J as i,Kt as a,M as o,N as s,O as c,P as l,T as u,Xt as d,Z as f,b as p,g as ee,h as te,t as m,vt as h,w as g}from"./_plugin-vue_export-helper-Bo3WtfwJ.js";import{u as ne}from"./BasicIcon-BXxbbWA_.js";import{l as re}from"./dist-nK9ByyUG.js";import{d as _,l as ie,t as v}from"./format-C72AoJ2H.js";import{_ as ae,c as oe,h as se,o as ce}from"./index-BAQfYU-Q.js";import{t as le}from"./IconChevronBack-DfGoZJJk.js";import{t as ue}from"./FormErrorBanner-DI5hhxpk.js";import{n as de,r as y,t as fe}from"./formErrors-DglFjYkZ.js";import{t as b}from"./login-fabric-CzrIXTnD.js";import{t as pe}from"./IconEditPen-LGjdaNbi.js";var me={class:`page otp-page`},he=[`src`],ge={class:`otp-page__scroll`},x={class:`otp-page__stage`},S={class:`otp-top`},C={class:`otp-brand`},w={class:`otp-card__lead`},T={dir:`ltr`},E={class:`otp-row`,dir:`ltr`,role:`group`,"aria-label":`کد تأیید`},D=[`id`,`value`,`aria-label`,`onInput`,`onKeydown`,`onPaste`],O={key:0,class:`otp-card__error`},k=[`disabled`],A={key:0,class:`otp-submit__spinner`,"aria-hidden":`true`},j={class:`otp-submit__chevron`,"aria-hidden":`true`},M=[`disabled`],N={dir:`ltr`},P=4,F=60,I=m(l({__name:`OtpView`,setup(l){let m=te(),I=ee(),L=oe(),R=g(()=>{let e=m.query.phone,t=Array.isArray(e)?e[0]:e;return ie(typeof t==`string`?t:``)}),z=g(()=>m.query.mode===`register`),B=h(Array.from({length:P},()=>``)),V=h([]),H=h({}),U=h(``),W=h(F),G=g(()=>B.value.join(``)),K=g(()=>W.value<=0&&!L.loading),_e=g(()=>{let e=Math.floor(W.value/60),t=W.value%60,n=`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`;return _(n)}),{pause:ve,resume:ye}=re(()=>{if(W.value<=1){W.value=0,ve();return}--W.value},1e3,{immediate:!1});function q(){H.value=de(H.value,`code`),y(H.value)||(U.value=``)}function be(e,t){V.value[t]=e}function J(e){let t=Math.max(0,Math.min(3,e));r(()=>V.value[t]?.focus())}function Y(){W.value=F,ye()}function X(e,t=0){let n=v(e).slice(0,P-t);if(!n)return t;let r=[...B.value],i=t;for(let e of n){if(i>=P)break;r[i]=e,i+=1}return B.value=r,q(),Math.min(i,3)}function Z(){G.value.length===P&&!L.loading&&$()}function Q(e,t){let n=t.target,r=v(n.value);if(r.length>1){let t=X(r,e);n.value=B.value[e]??``,J(t),Z();return}let i=r.slice(-1);B.value[e]=i,n.value=i,q(),i&&e<3?J(e+1):i&&Z()}function xe(e,t){if(t.key===`Backspace`){if(B.value[e]){B.value[e]=``,q();return}e>0&&(B.value[e-1]=``,q(),J(e-1));return}if(t.key===`ArrowLeft`){t.preventDefault(),J(e-1);return}t.key===`ArrowRight`&&(t.preventDefault(),J(e+1))}function Se(e,t){t.preventDefault(),J(X(t.clipboardData?.getData(`text`)??``,e)),Z()}function Ce(e){return e?_(e):``}async function $(){if(L.loading)return;H.value={},U.value=``;let e={};if(G.value.length<P&&(e.code=`کد تأیید را کامل وارد کنید.`),y(e)){H.value=e,U.value=fe;return}let t=await L.confirmOtp(R.value,v(G.value));t.success?I.replace(`/`):(U.value=t.message??`کد تأیید نامعتبر است.`,B.value=Array.from({length:P},()=>``),J(0))}async function we(){if(!K.value)return;U.value=``,H.value={};let e=z.value?se():null;if(z.value&&!e){U.value=`برای ارسال مجدد کد، نام و نام خانوادگی لازم است. لطفاً دوباره ثبت‌نام را شروع کنید.`;return}let t=await L.requestOtp(R.value,{isRegister:z.value,firstName:e?.firstName,lastName:e?.lastName});t.success?(B.value=Array.from({length:P},()=>``),Y(),J(0)):U.value=t.message??`خطا در ارسال مجدد کد.`}function Te(){I.replace({name:z.value?`register`:`login`})}return n(()=>{if(!R.value){I.replace({name:`login`});return}Y(),J(0)}),(n,r)=>(i(),c(`div`,me,[u(`img`,{class:`otp-page__bg`,src:t(b),alt:``},null,8,he),u(`div`,ge,[u(`div`,x,[u(`header`,S,[u(`button`,{type:`button`,class:`otp-top__back`,"aria-label":`بازگشت`,onClick:r[0]||=e=>t(I).push(z.value?`/register`:`/login`)},[s(le,{size:20})])]),u(`div`,C,[s(ae,{size:72}),r[1]||=u(`h1`,{class:`otp-brand__fa`},`نادمی تکس`,-1),r[2]||=u(`p`,{class:`otp-brand__en`},`NADEMITEX`,-1)]),u(`form`,{class:`otp-card`,onSubmit:ne($,[`prevent`])},[r[7]||=u(`h2`,{class:`otp-card__title`},`تأیید موبایل`,-1),u(`p`,w,[r[3]||=o(` کد ارسال‌شده به `,-1),u(`span`,T,d(t(_)(R.value)),1),r[4]||=o(` را وارد کنید. `,-1)]),s(ue,{message:U.value},null,8,[`message`]),u(`div`,E,[(i(!0),c(p,null,f(B.value,(e,n)=>(i(),c(`input`,{id:`otp-${n}`,key:n,ref_for:!0,ref:e=>be(e,n),class:a([`otp-box`,{"otp-box--error":H.value.code}]),type:`text`,inputmode:`numeric`,autocomplete:`one-time-code`,maxlength:`1`,value:Ce(e),"aria-label":`رقم ${t(_)(String(n+1))}`,onInput:e=>Q(n,e),onKeydown:e=>xe(n,e),onPaste:e=>Se(n,e)},null,42,D))),128))]),H.value.code?(i(),c(`p`,O,d(H.value.code),1)):e(``,!0),u(`button`,{class:`otp-submit`,type:`submit`,disabled:t(L).loading},[t(L).loading?(i(),c(`span`,A)):e(``,!0),u(`span`,j,[s(ce,{size:18,color:`#F4EDE4`})]),r[5]||=u(`span`,null,`تأیید و ورود`,-1)],8,k),u(`button`,{class:`otp-resend`,type:`button`,disabled:!K.value,onClick:we},[K.value?(i(),c(p,{key:0},[o(`ارسال مجدد کد`)],64)):(i(),c(p,{key:1},[o(`ارسال مجدد کد (`+d(_e.value)+`)`,1)],64))],8,M),u(`button`,{type:`button`,class:`otp-edit`,onClick:Te},[u(`span`,N,d(t(_)(R.value)),1),r[6]||=u(`span`,null,`ویرایش شماره`,-1),s(pe,{size:16,"stroke-width":1.5})])],32),r[8]||=u(`div`,{class:`otp-spacer`,"aria-hidden":`true`},null,-1),r[9]||=u(`p`,{class:`otp-watermark`},[o(`MORE`),u(`br`),o(`THAN`),u(`br`),o(`FABRIC`)],-1)])])]))}}),[[`__scopeId`,`data-v-db716981`]]);export{I as default};