PageSourceSearch

https://vpdive.com/_nuxt/hVwPq57C.js

js vpdive.com collected 2026-09-24 12:18:35 UTC 14,032 bytes, 2 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CiKtckVa.js","./entry.G7Osyakp.css"])))=>i.map(i=>d[i]);
2import{d as ye,y as xe,a as be,z as ke,b as we,o as Ce,n as j,A as Ie,c as i,l as s,h as d,t as r,e as o,v as Te,g as m,q as je,_ as De,i as se,F as $e,r as Se,k as A,B as h,C as W,D as Ae,E as Le,G as Pe,H as qe,I as Ee,p as Me,j as c}from"./CiKtckVa.js";import{_ as Ve}from"./B55JqFOg.js";import{_ as oe}from"./5DDz-OcZ.js";import{u as Be}from"./D3CbhDW-.js";import{s as X}from"./CgyRKAQn.js";const Ne={class:"p-4 md:p-8 flex-1 flex flex-col justify-center"},Re={class:"max-w-md w-full mx-auto space-y-6"},Je={class:"p-4 md:p-8 flex-1 flex flex-col justify-center"},Fe={class:"max-w-md w-full mx-auto space-y-6"},Ue={key:0},Oe={class:"space-y-2 mb-6"},ze={class:"text-3xl font-bold text-gray-900 dark:text-white"},Ke={class:"text-gray-600 dark:text-gray-400"},Ge={class:"space-y-3"},He=["disabled"],Qe={class:"flex-shrink-0 w-12 h-12 bg-emerald-100 dark:bg-emerald-900/30 rounded-full flex items-center justify-center"},We={class:"flex-1"},Xe={class:"font-medium text-gray-900 dark:text-white"},Ye={class:"text-sm text-gray-500 dark:text-gray-400"},Ze=["disabled"],et={class:"flex-shrink-0 w-12 h-12 bg-blue-100 dark:bg-blue-900/30 rounded-full flex items-center justify-center"},tt={class:"flex-1"},at={class:"font-medium text-gray-900 dark:text-white"},st={class:"text-sm text-gray-500 dark:text-gray-400"},ot=["disabled"],rt={class:"flex-shrink-0 w-12 h-12 bg-purple-100 dark:bg-purple-900/30 rounded-full flex items-center justify-center"},lt={class:"flex-1"},nt={class:"font-medium text-gray-900 dark:text-white"},it={class:"text-sm text-gray-500 dark:text-gray-400"},ct={class:"mt-6 text-center"},ut={key:1},dt={class:"space-y-2 mb-6"},ht={class:"text-3xl font-bold text-gray-900 dark:text-white"},_t={class:"text-gray-600 dark:text-gray-400"},mt={key:1,class:"bg-red-50 dark:bg-red-900/50 text-red-500 dark:text-red-400 px-4 py-3 rounded-md mb-4"},ft={class:"mb-4"},vt={class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-3"},gt={class:"flex gap-3 justify-center"},pt=["value","onInput","onKeydown","onFocus"],yt={key:0,class:"absolute inset-0 flex items-center justify-center pointer-events-none"},xt={key:2,class:"mt-4 text-center"},bt=["disabled"],kt={key:1,class:"text-sm text-gray-500 dark:text-gray-400"},wt={class:"mt-4 text-center"},Ct={key:2},It={class:"space-y-2 mb-6"},Tt={class:"text-3xl font-bold text-gray-900 dark:text-white"},jt={class:"text-gray-600 dark:text-gray-400"},Dt={key:0,class:"bg-red-50 dark:bg-red-900/50 text-red-500 dark:text-red-400 px-4 py-3 rounded-md mb-4"},$t={key:1,class:"flex flex-col items-center py-8"},St={class:"w-16 h-16 bg-blue-100 dark:bg-blue-900/30 rounded-full flex items-center justify-center mb-4"},At={class:"flex items-center gap-2 text-gray-600 dark:text-gray-400"},Lt={class:"text-sm"},Pt={key:0,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},qt={class:"mt-4 text-center"},Et={key:3},Mt={class:"flex flex-col items-center py-8 space-y-4"},Vt={class:"w-16 h-16 bg-green-100 dark:bg-green-900/30 rounded-full flex items-center justify-center"},Bt={class:"text-2xl font-bold text-gray-900 dark:text-white text-center"},zt=ye({__name:"2fa",setup(Nt){const{t}=xe(),L=be(),C=ke(),{send:re,verify:le,clubJoinComplete:ne,resend:ie,checkStatus:ce}=Be();we({title:"Vérification en deux étapes"});const ue=A(()=>L.query.context||"login"),P=A(()=>ue.value==="club_join"),q=A(()=>P.value?"/app":"/auth/login"),v=h("choose"),E=h("email"),g=h(""),l=h(""),D=h(!1),M=h(!1),V=h(!1),f=h(["","","","","",""]),p=h([]),B=h(-1),$=h(0),N=h(300),O=h(""),z=A(()=>{try{const e=L.query.methods;if(e)return JSON.parse(e)}catch{}return{email:!0,mobile_app:!0,authenticator:!0}}),y=h(0);let R=null,J=null,x=null,F=null;const U=A(()=>f.value.join("")),de=e=>{const a=Math.floor(e/60),u=e%60;return`${a}:${u.toString().padStart(2,"0")}`};Ce(()=>{const e=L.query.request_token;if(!e){j("/auth/login");return}g.value=e}),Ie(()=>{k(),b(),x&&clearInterval(x)});const Y=e=>{b(),y.value=e,R=X(()=>{y.value--,y.value<=0&&b()},1e3)},b=()=>{R&&(clearInterval(R),R=null)},K=async e=>{l.value="",D.value=!0;try{const a=await re(g.value,e);if(a.error==="invalid_token"){C.add({title:t("auth.2fa.error_token_expired"),icon:"heroicons:x-circle",color:"red"}),j(q.value);return}a.success&&(E.value=a.method,a.fallback&&C.add({title:t("auth.2fa.fallback_no_mobile"),icon:"material-symbols:info-outline",color:"orange"}),a.method==="email"||a.method==="authenticator"?(v.value="code",a.method==="email"&&Z(),Y(a.expires_in||900),W(()=>
2{p.value[0]?.focus()})):(v.value="mobile_polling",ge()))}catch(a){const u=a.data||a.response?._data||{},n=u.error||"",I=u.message||a.message||"";n==="invalid_token"||I.toLowerCase().includes("invalid or expired request token")?(C.add({title:t("auth.2fa.error_token_expired"),icon:"heroicons:x-circle",color:"red"}),j(q.value)):l.value=I||t("auth.2fa.error_send")}finally{D.value=!1}},he=(e,a)=>{const n=a.target.value.replace(/\D/g,"");f.value[e]=n.charAt(0)||"",n&&e<5&&p.value[e+1]?.focus()},_e=(e,a)=>{a.key==="Backspace"&&!f.value[e]&&e>0&&p.value[e-1]?.focus()},me=e=>{e.preventDefault();const a=e.clipboardData?.getData("text")?.replace(/\D/g,"")||"";for(let n=0;n<6;n++)f.value[n]=a.charAt(n)||"";const u=a.length>=6?5:a.length;p.value[u]?.focus()},G=e=>{e==="invalid_code"?(l.value=t("auth.2fa.error_invalid_code"),f.value=["","","","","",""],W(()=>p.value[0]?.focus())):e==="expired"?(l.value=t("auth.2fa.error_expired"),b(),y.value=0):e==="too_many_attempts"?l.value=t("auth.2fa.error_too_many_attempts"):e==="already_used"?l.value=t("auth.2fa.error_already_used"):e==="ip_mismatch"?l.value=t("auth.2fa.error_ip_mismatch"):e==="not_found"&&(C.add({title:t("auth.2fa.error_not_found"),color:"red",icon:"heroicons:x-circle"}),j(q.value))},fe=async()=>{if(U.value.length===6){l.value="",M.value=!0;try{if(P.value){const e=await ne(g.value,U.value);e.success?(O.value=e.message||t("auth.2fa.club_join_success"),v.value="club_join_success",b()):e.reason?G(e.reason):l.value=e.message||t("auth.2fa.error_verify")}else{const e=await le(g.value,U.value);e.token?(b(),await te(e.token,e.roles,e.permissions)):e.reason?G(e.reason):l.value=t("auth.2fa.error_verify")}}catch(e){const a=e.data||e.response?._data||{},u=a.reason;u?G(u):l.value=a.message||e.message||t("auth.2fa.error_verify")}finally{M.value=!1}}},ve=async()=>{l.value="",V.value=!0;try{const e=await ie(g.value);e.success&&(g.value=e.request_token,f.value=["","","","","",""],Z(),Y(e.expires_in||900),C.add({title:t("auth.2fa.code_resent"),color:"green",icon:"heroicons:check-circle"}),W(()=>p.value[0]?.focus()))}catch(e){const a=e.data||e.response?._data||{};a.reason==="too_many_attempts"?l.value=t("auth.2fa.error_too_many_attempts"):l.value=a.message||e.message||t("auth.2fa.error_resend")}finally{V.value=!1}},Z=()=>{$.value=30,x&&clearInterval(x),x=X(()=>{$.value--,$.value<=0&&(clearInterval(x),x=null)},1e3)},ge=()=>{N.value=300,k(),J=X(async()=>{try{const e=await ce(g.value);e.status==="approved"?(k(),P.value?(O.value=t("auth.2fa.club_join_success"),v.value="club_join_success"):e.token&&await te(e.token,e.roles||[],e.permissions||{})):e.status==="denied"?(k(),l.value=t("auth.2fa.error_denied")):e.status==="expired"&&(k(),l.value=t("auth.2fa.error_expired"))}catch{}N.value-=3},3e3),F=setTimeout(()=>{k(),l.value=t("auth.2fa.error_timeout")},3e5)},k=()=>{J&&(clearInterval(J),J=null),F&&(clearTimeout(F),F=null)},ee=()=>{k(),b(),l.value="",v.value="choose",f.value=["","","","","",""]},te=async(e,a,u)=>{const{setAuthToken:n,setUserData:I}=Ae();n(e),a&&localStorage.setItem("user-roles",JSON.stringify(a)),u&&localStorage.setItem("user-permissions",JSON.stringify(u));try{const{useCalendarPresetsStore:H}=await Le(async()=>{const{useCalendarPresetsStore:Q}=await import("./CiKtckVa.js").then(S=>S.ce);return{useCalendarPresetsStore:Q}},__vite__mapDeps([0,1]),import.meta.url);H().reset()}catch{}try{const H=window.location.protocol,ae=window.location.hostname,Q=`${H}//${ae}/api/user/me`,S=await $fetch(Q,{method:"GET",headers:{Authorization:`Bearer ${e}`}});if(S){I(S);const{setAuthUser:pe}=Pe();pe(S)}}catch{}C.add({title:t("auth.2fa.success"),color:"green",icon:"heroicons:check-circle"});const T=L.query.redirect,{resolveLegacyRedirect:_}=qe(),{postAuthDestination:w}=Ee();await j(_(T)||await w())};return(e,a)=>{const u=Ve,n=Te,I=De;return c(),i("div",Ne,[s("div",Re,[s("div",Je,[s("div",Fe,[d(u),v.value==="choose"?(c(),i("div",Ue,[s("div",Oe,[s("h1",ze,r(o(t)("auth.2fa.title")),1),s("p",Ke,r(o(t)("auth.2fa.choose_method")),1)]),s("div",Ge,[z.value.email?(c(),i("button",{key:0,onClick:a[0]||(a[0]=T=>K("email")),disabled:D.value,class:"w-full flex items-center gap-4 p-4 border border-gray-200 rounded-lg hover:bg-gray-50 dark:border-gray-700 dark:hover:bg-gray-800 transition-colors text-left"},[s("div",Qe,[d(n,{name:"material-symbols:mail-outline",class:"w-6 h-6 text-emerald-600 dark:text-emerald-400"})]),s("div",We,[s("p",Xe,r(o(t)("auth.2fa.method_email")),1),s("p",Ye,r(o(t)("auth.2fa.method_email_desc")),1
2)]),d(n,{name:"material-symbols:chevron-right",class:"w-5 h-5 text-gray-400"})],8,He)):m("",!0),z.value.mobile_app?(c(),i("button",{key:1,onClick:a[1]||(a[1]=T=>K("mobile_app")),disabled:D.value,class:"w-full flex items-center gap-4 p-4 border border-gray-200 rounded-lg hover:bg-gray-50 dark:border-gray-700 dark:hover:bg-gray-800 transition-colors text-left"},[s("div",et,[d(n,{name:"material-symbols:smartphone",class:"w-6 h-6 text-blue-600 dark:text-blue-400"})]),s("div",tt,[s("p",at,r(o(t)("auth.2fa.method_mobile")),1),s("p",st,r(o(t)("auth.2fa.method_mobile_desc")),1)]),d(n,{name:"material-symbols:chevron-right",class:"w-5 h-5 text-gray-400"})],8,Ze)):m("",!0),z.value.authenticator?(c(),i("button",{key:2,onClick:a[2]||(a[2]=T=>K("authenticator")),disabled:D.value,class:"w-full flex items-center gap-4 p-4 border border-gray-200 rounded-lg hover:bg-gray-50 dark:border-gray-700 dark:hover:bg-gray-800 transition-colors text-left"},[s("div",rt,[d(n,{name:"material-symbols:shield-lock-outline",class:"w-6 h-6 text-purple-600 dark:text-purple-400"})]),s("div",lt,[s("p",nt,r(o(t)("auth.2fa.method_authenticator")),1),s("p",it,r(o(t)("auth.2fa.method_authenticator_desc")),1)]),d(n,{name:"material-symbols:chevron-right",class:"w-5 h-5 text-gray-400"})],8,ot)):m("",!0)]),s("div",ct,[d(I,{to:q.value,class:"text-sm text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200"},{default:je(()=>[Me(r(P.value?o(t)("auth.2fa.back_to_club"):o(t)("auth.2fa.back_to_login")),1)]),_:1},8,["to"])])])):v.value==="code"?(c(),i("div",ut,[s("div",dt,[s("h1",ht,r(o(t)("auth.2fa.verify_title")),1),s("p",_t,r(E.value==="authenticator"?o(t)("auth.2fa.code_open_authenticator"):o(t)("auth.2fa.code_sent_email")),1)]),y.value>0&&E.value!=="authenticator"?(c(),i("div",{key:0,class:se(["flex items-center justify-center gap-2 mb-4 text-sm",y.value<=60?"text-red-500":"text-gray-500 dark:text-gray-400"])},[d(n,{name:"material-symbols:timer-outline",class:"w-4 h-4"}),s("span",null,r(o(t)("auth.2fa.code_expires_in",{time:de(y.value)})),1)],2)):m("",!0),l.value?(c(),i("div",mt,r(l.value),1)):m("",!0),s("div",ft,[s("label",vt,r(o(t)("auth.2fa.code_label")),1),s("div",gt,[(c(),i($e,null,Se(6,(T,_)=>s("div",{key:_,class:"relative"},[s("input",{ref_for:!0,ref_key:"codeInputs",ref:p,type:"text",inputmode:"numeric",maxlength:"1",value:f.value[_],onInput:w=>he(_,w),onKeydown:w=>_e(_,w),onPaste:me,onFocus:w=>B.value=_,onBlur:a[3]||(a[3]=w=>B.value=-1),class:se(["w-12 h-14 text-center text-2xl font-bold bg-gray-50 dark:bg-gray-800 rounded-lg border-2 transition-colors duration-200 outline-none",[B.value===_?"border-emerald-500 ring-2 ring-emerald-500/20":f.value[_]?"border-emerald-400 dark:border-emerald-500":"border-gray-200 dark:border-gray-600","text-gray-900 dark:text-white"]])},null,42,pt),!f.value[_]&&B.value!==_?(c(),i("div",yt,[...a[5]||(a[5]=[s("span",{class:"w-2 h-2 rounded-full bg-gray-300 dark:bg-gray-600"},null,-1)])])):m("",!0)])),64))])]),d(oe,{loading:M.value,text:o(t)("auth.2fa.verify_button"),icon:"material-symbols:check",iconPosition:"right",marginTop:"",customClass:"py-4 w-full",onClick:fe,disabled:U.value.length!==6||V.value},null,8,["loading","text","disabled"]),E.value!=="authenticator"?(c(),i("div",xt,[$.value?(c(),i("p",kt,r(o(t)("auth.2fa.resend_cooldown",{seconds:$.value})),1)):(c(),i("button",{key:0,onClick:ve,disabled:V.value||M.value,class:"text-sm text-emerald-500 dark:text-emerald-400 hover:text-emerald-600 dark:hover:text-emerald-300"},r(o(t)("auth.2fa.resend_code")),9,bt))])):m("",!0),s("div",wt,[s("button",{onClick:ee,class:"text-sm text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200"},r(o(t)("auth.2fa.change_method")),1)])])):v.value==="mobile_polling"?(c(),i("div",Ct,[s("div",It,[s("h1",Tt,r(o(t)("auth.2fa.mobile_title")),1),s("p",jt,r(o(t)("auth.2fa.mobile_waiting")),1)]),l.value?(c(),i("div",Dt,r(l.value),1)):m("",!0),l.value?m("",!0):(c(),i("div",$t,[s("div",St,[d(n,{name:"material-symbols:smartphone",class:"w-8 h-8 text-blue-600 dark:text-blue-400 animate-pulse"})]),s("div",At,[d(n,{name:"heroicons:arrow-path",class:"w-5 h-5 animate-spin"}),s("span",Lt,r(o(t)("auth.2fa.mobile_checking")),1)]),N.value>0?(c(),i("p",Pt,r(o(t)("auth.2fa.mobile_expires",{minutes:Math.ceil(N.value/60)})),1)):m("",!0)])),s("div",qt,[s("button",{onClick:ee,class:"text-sm text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200"},r(o(t)("auth.2fa.change_method")),1)])])):v.value==="club_join_success"?(c(),i("div",Et,[s("div",Mt,[s("div",Vt,[d(n,{name:"heroicons:check-circle",class:"w-10 h-10 text-green-600 dark:text-green-400"})]),s("h1",Bt,r(O.value),1),d(oe,{text:o(t)("auth.2fa.go_to_app"),icon:"material-symbols:trending-flat",iconPosition:"right",customClass:"py-4 w-full md:w-1/2",onClick:a[4]||(a[4]=T=>("navigateTo"in e?e.navigateTo:o(j))("/app"))},null,8,["text"])])])):m("",!0)])])])])}}});
2export{zt 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.