import{d as ee,b2 as ne,bH as le,ah as se,b3 as ie,r as P,e as B,w as x,s as J,f as n,F as q,h as o,g as e,v as f,B as F,y as Z,cw as ue,o as l,_ as de,L as K,ae as ce,ct as we,u as he,x as g,bi as D,aG as Q,bB as X,aI as G,i as I,z as pe,c as Y,n as z,cu as me}from"./BxiWQxwE.js";import{j as ae,A as y}from"./DqhAcXWn.js";import{_ as T}from"./Mgz3HV5C.js";const ge={class:"password-strength"},ve=["aria-valuenow"],fe={class:"password-rules"},ye=["id"],Pe=["id"],_e=ee({__name:"passwordStrength",props:ne({password:{type:String,required:!0},minLength:{type:Number,required:!0},rules:{type:Array,required:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],async setup(w){var S;let u,h;const $=(S=le())==null?void 0:S.replace("_","-"),{siteState:N}=se(),V=w,U=ie(w,"modelValue"),C=P(0),L=B(()=>({rules:p(V.rules).sort((a,s)=>s.minCount-a.minCount)})),E=B(()=>{const a=Math.min(Math.floor(C.value/(L.value.rules.length+1)*100),100);return a<25?1:a<50?2:a<100?3:4});[u,h]=x(()=>ae(ue(N.value.languageId))),await u,h();const O=a=>/^[a-z]*$/.test(a),j=a=>/^[A-Z]*$/.test(a),A=a=>/^\d*$/.test(a),R=a=>/^[^a-zA-Z0-9]*$/.test(a),_={isLowercaseString:{key:"auth.passwordStrength.lowercaseLetter",check:O},isUpperCaseString:{key:"auth.passwordStrength.uppercaseLetter",check:j},isNumberString:{key:"auth.passwordStrength.number",check:A},isSpecialCharacterString:{key:"auth.passwordStrength.specialCharacter",check:R}},p=a=>a.map((s,r)=>{let m=`${s.minCount} ${y("auth.passwordStrength.default")} (${s.characters})`;for(const v of Object.values(_))if(v.check(s.characters)){m=y(v.key,{count:s.minCount});break}return{...s,message:m,id:`rule-${$}-${r}`}}),b=a=>a.replace(/[.*+?^${}()-|[\]\\]/g,"\\$&");return J(E,a=>{U.value=a===4}),J(()=>V.password,a=>{var s,r,m,v;C.value=0;for(const d of L.value.rules){let k=d.characters;A(d.characters)?k="\\d":R(d.characters)&&(k=b(d.characters));const M=new RegExp(`[${k}]`,"g");(a.match(M)??[]).length>=d.minCount?(C.value+=1,(s=document.getElementById(d.id))==null||s.classList.add("success")):(r=document.getElementById(d.id))==null||r.classList.remove("success")}a.length>V.minLength?(C.value+=1,(m=document.getElementById(`minimal-${$}`))==null||m.classList.add("success")):(v=document.getElementById(`minimal-${$}`))==null||v.classList.remove("success")}),(a,s)=>(l(),n(q,null,[o("div",ge,[o("div",{class:"password-strength__progress-bar",role:"progressbar","aria-valuenow":e(E),"aria-valuemin":"0","aria-valuemax":"4","aria-labelledby":"password"},null,8,ve)]),o("h5",null,f(e(y)("auth.passwordStrength.title")),1),o("ul",fe,[o("li",{id:`minimal-${e($)}`},[s[0]||(s[0]=o("span",{"aria-hidden":"true"},null,-1)),F(" "+f(e(y)("auth.passwordStrength.minimumCharacter",{count:w.minLength})),1)],8,ye),(l(!0),n(q,null,Z(e(L).rules,r=>(l(),n("li",{id:r.id,key:r.id},[s[1]||(s[1]=o("span",{"aria-hidden":"true"},null,-1)),F(" "+f(r.message),1)],8,Pe))),128))])],64))}}),be=de(_e,[["__scopeId","data-v-ee82cfd3"]]),Se={class:"login-form"},ke={key:0},$e={key:1,class:"login-form__input-field"},Ce={for:"old-password"},Le={key:0},Re={class:"login-form__input-field__wrapper"},Ve=["type","placeholder"],Ee={key:2,class:"login-form__errors"},Ie={class:"login-form__input-field"},xe={for:"password"},Be={key:0},qe={class:"login-form__input-field__wrapper"},Ne=["type","placeholder","aria-invalid","min"],Ae={key:3,class:"login-form__errors"},Me=["disabled"],De=ee({__name:"cloudChangePassword",props:{messages:{type:Object,default:()=>({})},defaultPasswordRules:{type:Object,default:()=>({minLength:10,rules:[{characters:"abcdefghijklmnopqrstuvwxyz",minCount:1},{characters:"ABCDEFGHIJKLMNOPQRSTUVWXYZ",minCount:2},{characters:"0123456789",minCount:2},{characters:"!@#$%^&*()",minCount:1}]})},showTitles:{type:Boolean,default:!0},showLabels:{type:Boolean,default:!1},showIcons:{type:Boolean,default:!0},togglePasswordVisibility:{type:Boolean,default:!0}},async setup(w){var W;let u,h;const $=w,{validatePassword:N,changePassword:V,getPasswordRules:U,updatePassword:C}=K(),{currentSiteIso:L}=se(),{token:E}=ce(),{checkPasswordRequest:O}=K(),{messages:j,defaultPasswordRules:A}=we($),R=he(),_=P(""),p=P(""),b=P(!1),S=P(!1),a=P(!1),s=P({oldPassword:[],newPassword:[]}),r=P(!1),m=B(()=>R.query.change),{data:v}=([u,h]=x(()=>Y("sw-cloud-password-rules",()=>U())),u=await u,h(),u);if(m.value){const{data:i}=([u,h]=x(()=>Y("sw-cloud-password-validation",()=>O(String(m.value)))),u=await u,h(),u);(W=i.value)!=null&&W.success||([u,h]=x(()=>z(R.query.returnUrl??"/")),await u,h())}[u,h]=x(()=>ae(L.value)),await u,h();const d=B(()=>({oldPassword:y("auth.oldPassword"),newPassword:y("auth.newPassword"),oldPasswordError:y("auth.oldPasswordError"),changePasswordTitle:y("auth.newPasswordTitle"),submit:y("auth.submitChangePassword"),...j.value})),k=B(()=>{var i;try{if(((i=v.value)==null?void 0:i.status)!==200)throw new Error("Error fetching password rules");if(!v.value.data)throw new Error("No password rules found");const{isLocal:t,isSnakeware:c,identity:Te,...re}=v.value.data;return re}catch{return A.value}}),M=()=>{s.value.oldPassword=[],s.value.newPassword=[]},H=async()=>{m.value?await oe():await te()},te=async()=>{r.value=!0,M();const i=await N(p.value);if(_.value||s.value.oldPassword.push(d.value.oldPasswordError),!i.success&&i.reason&&s.value.newPassword.push(i.reason),!E.value||s.value.oldPassword.length||!s.value.newPassword.length){r.value=!1;return}const t=await V(E.value,_.value,p.value);if(r.value=!1,!t.success){s.value.newPassword.push(String(t.reason));return}await z(R.query.returnUrl??"/")},oe=async()=>{r.value=!0,M();const i=await N(p.value);if(!i.success&&i.reason&&s.value.newPassword.push(i.reason),s.value.newPassword.length){r.value=!1;return}const t=await C(m.value,p.value);if(r.value=!1,!t.success){s.value.newPassword.push(String(t.reason));return}await z(me(L.value))};return(i,t)=>(l(),n("div",Se,[o("form",{onSubmit:pe(H,["prevent"])},[w.showTitles?(l(),n("h1",ke,f(e(d).changePasswordTitle),1)):g("",!0),e(m)?g("",!0):(l(),n("div",$e,[o("label",Ce,[w.showLabels?(l(),n("span",Le,f(e(d).oldPassword),1)):g("",!0),o("div",Re,[w.showIcons?D(i.$slots,"password-icon",{key:0},()=>[I(T,{icon:"key"})]):g("",!0),Q(o("input",{id:"old-password","onUpdate:modelValue":t[0]||(t[0]=c=>G(_)?_.value=c:null),type:e(S)?"text":"password",placeholder:e(d).oldPassword,"aria-required":"true",maxlength:"1024",autocomplete:"current-password"},null,8,Ve),[[X,e(_)]]),w.togglePasswordVisibility?(l(),n("button",{key:1,type:"button",onClick:t[1]||(t[1]=c=>S.value=!e(S))},[I(T,{icon:e(S)?"visibility-off":"visibility"},null,8,["icon"])])):g("",!0)])])])),e(s).oldPassword.length?(l(),n("div",Ee,[o("ul",null,[(l(!0),n(q,null,Z(e(s).oldPassword,c=>(l(),n("li",{key:c,role:"alert",class:"error"},f(c),1))),128))])])):g("",!0),o("div",Ie,[o("label",xe,[w.showLabels?(l(),n("span",Be,f(e(d).newPassword),1)):g("",!0),o("div",qe,[w.showIcons?D(i.$slots,"password-icon",{key:0},()=>[I(T,{icon:"key"})]):g("",!0),Q(o("input",{id:"password","onUpdate:modelValue":t[2]||(t[2]=c=>G(p)?p.value=c:null),type:e(a)?"text":"password",placeholder:e(d).newPassword,"aria-required":"true","aria-invalid":e(p).length>0&&!e(b),maxlength:"1024",min:e(k).minLength,autocomplete:"current-password"},null,8,Ne),[[X,e(p)]]),w.togglePasswordVisibility?(l(),n("button",{key:1,type:"button",onClick:t[3]||(t[3]=c=>a.value=!e(a))},[I(T,{icon:e(a)?"visibility-off":"visibility"},null,8,["icon"])])):g("",!0)])]),I(be,{modelValue:e(b),"onUpdate:modelValue":t[4]||(t[4]=c=>G(b)?b.value=c:null),password:e(p),"min-length":e(k).minLength,rules:e(k).rules},null,8,["modelValue","password","min-length","rules"])]),e(s).newPassword.length?(l(),n("div",Ae,[o("ul",null,[(l(!0),n(q,null,Z(e(s).newPassword,c=>(l(),n("li",{key:c,role:"alert",class:"error"},f(c),1))),128))])])):g("",!0),o("button",{type:"submit",disabled:e(r)||!e(b)},[e(r)?D(i.$slots,"loader",{key:0},()=>[t[5]||(t[5]=o("span",{class:"login-form__loader"},null,-1))]):(l(),n(q,{key:1},[F(f(e(d).submit),1)],64))],8,Me)],32)]))}});export{De as default};
