veza/.build/incus/web/js/ResetPasswordPage-dEbWzP60.js
senke 1ed6e7f07b state-ownership: delete unused optimisticStoreUpdates.ts file
- Deleted apps/web/src/utils/optimisticStoreUpdates.ts (unused file)
- File was unused - no imports found in codebase
- Mutations already use React Query's onMutate pattern
- No TypeScript errors after deletion
- Actions 4.4.1.2 and 4.4.1.3 complete
2026-01-15 19:26:53 +01:00

2 lines
5.4 KiB
JavaScript

import{j as e,E as N,r as p}from"./chunk-Cad8leGS.js";import{d as P,u as L}from"./index-D792PhRw.js";import{A as g,a as k}from"./chunk-BZkCXdk-.js";import{u as q,A as j}from"./chunk-BYCSW8da.js";import"./chunk-wkfC2Tom.js";import"./chunk-BoPufJSi.js";import"./chunk-VMUEamc6.js";import"./chunk-Df4po8fP.js";import"./chunk-B7sOPOlf.js";import"./chunk-B4NZlYwU.js";import"./chunk-BlDLB1ZZ.js";function A({message:n,className:d,id:c}){return n?e.jsx("div",{id:c,children:e.jsx(N,{error:n,variant:"inline",severity:"error",className:d,context:{action:"authenticating",resource:"auth"},dismissible:!1})}):null}function E({password:n}){const d=a=>{const r=[];let i=0;a.length>=12?i++:r.push(`Au moins 12 caractères (${a.length}/12)`),/[a-z]/.test(a)&&/[A-Z]/.test(a)?i++:(/[a-z]/.test(a)||r.push("Une minuscule"),/[A-Z]/.test(a)||r.push("Une majuscule")),/\d/.test(a)?i++:r.push("Un chiffre"),/[^a-zA-Z\d]/.test(a)?i++:r.push("Un caractère spécial (!@#$%^&*...)");let t,o;return i<=1?(t="Très faible",o="bg-red-500"):i===2?(t="Faible",o="bg-orange-500"):i===3?(t="Moyen",o="bg-yellow-500"):i===4?(t="Fort",o="bg-green-500"):(t="Très fort",o="bg-green-600"),{level:i,label:t,color:o,requirements:r}};if(!n)return null;const{level:c,label:f,color:h,requirements:u}=d(n),x=c/4*100;return e.jsxs("div",{className:"mt-2 space-y-2",role:"status","aria-live":"polite","aria-atomic":"true",children:[e.jsxs("div",{children:[e.jsx("div",{className:"w-full bg-gray-200 rounded-full h-2",role:"progressbar","aria-valuenow":c,"aria-valuemin":0,"aria-valuemax":4,"aria-label":`Force du mot de passe: ${f}`,children:e.jsx("div",{className:`${h} h-2 rounded-full transition-all`,style:{width:`${x}%`},"aria-hidden":"true"})}),e.jsxs("p",{className:"text-xs text-gray-600 mt-1",id:"password-strength-label",children:["Force: ",e.jsx("span",{"aria-live":"polite",children:f})]})]}),u.length>0&&e.jsxs("div",{className:"text-xs text-gray-600",children:[e.jsx("p",{className:"font-medium mb-1",children:"Requis :"}),e.jsx("ul",{className:"list-disc list-inside space-y-0.5",children:u.map((a,r)=>e.jsx("li",{className:"text-red-600",children:a},r))})]})]})}function V(){const[n]=P(),d=L(),{handleReset:c,loading:f,error:h,success:u}=q(),[x,a]=p.useState(null),[r,i]=p.useState({token:"",password:"",confirmPassword:""}),[t,o]=p.useState({});p.useEffect(()=>{const s=n.get("token");s&&(a(s),i(l=>({...l,token:s})))},[n]),p.useEffect(()=>{if(u){const s=setTimeout(()=>{d("/login",{replace:!0})},3e3);return()=>clearTimeout(s)}},[u,d]);const w=()=>{const s={};return r.password?r.password.length<8&&(s.password="Le mot de passe doit contenir au moins 8 caractères"):s.password="Mot de passe requis",r.confirmPassword?r.password!==r.confirmPassword&&(s.confirmPassword="Les mots de passe ne correspondent pas"):s.confirmPassword="Confirmation du mot de passe requise",o(s),Object.keys(s).length===0},v=(s,l)=>{i({...r,[s]:l}),t[s]&&o({...t,[s]:void 0})},b=s=>{const l=r[s];let m;s==="password"?l?l.length<8&&(m="Le mot de passe doit contenir au moins 8 caractères"):m="Mot de passe requis":s==="confirmPassword"&&(l?r.password!==l&&(m="Les mots de passe ne correspondent pas"):m="Confirmation du mot de passe requise"),o(m?{...t,[s]:m}:{...t,[s]:void 0})},y=async s=>{s.preventDefault(),x&&w()&&await c(r)};return x?u?e.jsx(g,{title:"Mot de passe réinitialisé",subtitle:"Votre mot de passe a été modifié avec succès",footerLinks:[{label:"Retour à la connexion",to:"/login"}],children:e.jsx("div",{className:"text-center space-y-4",role:"status","aria-live":"polite",children:e.jsxs("div",{className:"bg-green-50 border border-green-200 text-green-700 px-4 py-3 rounded",role:"alert",children:[e.jsx("p",{className:"font-medium",children:"Succès !"}),e.jsx("p",{className:"text-sm mt-1",children:"Votre mot de passe a été réinitialisé avec succès. Vous allez être redirigé vers la page de connexion..."})]})})}):e.jsx(g,{title:"Réinitialiser le mot de passe",subtitle:"Entrez votre nouveau mot de passe",footerLinks:[{label:"Retour à la connexion",to:"/login"}],children:e.jsxs("form",{onSubmit:y,className:"space-y-4","aria-label":"Formulaire de réinitialisation de mot de passe",children:[h&&e.jsx(A,{message:h.message}),e.jsx(j,{type:"password",label:"Nouveau mot de passe",value:r.password,onChange:s=>v("password",s.target.value),onBlur:()=>b("password"),error:t.password,required:!0,autoComplete:"new-password"}),e.jsx("div",{"aria-live":"polite","aria-atomic":"true",children:e.jsx(E,{password:r.password})}),e.jsx(j,{type:"password",label:"Confirmer le mot de passe",value:r.confirmPassword,onChange:s=>v("confirmPassword",s.target.value),onBlur:()=>b("confirmPassword"),error:t.confirmPassword,required:!0,autoComplete:"new-password"}),e.jsx(k,{type:"submit",loading:f,children:"Réinitialiser le mot de passe"})]})}):e.jsx(g,{title:"Lien de réinitialisation invalide",subtitle:"Le lien de réinitialisation est invalide ou a expiré",footerLinks:[{label:"Demander un nouveau lien",to:"/forgot-password"},{label:"Retour à la connexion",to:"/login"}],children:e.jsx("div",{className:"text-center space-y-4",role:"alert","aria-live":"assertive",children:e.jsxs("div",{className:"bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded",children:[e.jsx("p",{className:"font-medium",children:"Lien invalide"}),e.jsx("p",{className:"text-sm mt-1",children:"Le lien de réinitialisation est invalide ou a expiré. Veuillez demander un nouveau lien."})]})})})}export{V as ResetPasswordPage,V as default};
//# sourceMappingURL=ResetPasswordPage-dEbWzP60.js.map