1import{bO as e,r as t,ka as i,bG as s,bq as n,kb as a,cy as o,kc as r,c_ as u,kd as l,bx as d,ke as c,kf as m}from"./MZk2sk3Q.js";import{D as p}from"./t2hC0EP0.js";import{P as g}from"./BoE8QyMS.js";import{a as y,l as S,F as x,z as Q,G as f,e as b,aa as h,u as j,c as E,t as D,B as I,o as C,O as _,p as N}from"./r_90E_HP.js";import{A as T}from"./Becx9I8r.js";import{F as O}from"./CXOMndHZ.js";import{i as R,U as A}from"./8DkdnniB.js";import{u as v}from"./Bq8pToh6.js";import{a as k,R as U}from"./BE9nPIna.js";import{F as q}from"./D6oVoAjQ.js";import{P as F}from"./BM-92CBZ.js";import{D as L}from"./UVfp44lh.js";import"./D5_PwlkE.js";const P=a=>{const{setEditingKey:o,handleDelete:r}=a,u=e();t.useEffect(()=>{u(i())},[]);const l=s(e=>e.securityConfiguration.securityquestions),d=s(e=>e.appState.i18n.languages),c=e=>{o(e.QuestionId)},m=[{title:d.SecurityQuestion,dataIndex:"Question",key:"question",width:"80%"},{title:d.ACTION,key:"action",width:"20%",render:(e,t)=>{const i=[{key:"edit",label:d.EDIT},{key:"delete",danger:!0,label:d.ACTION_DELETE}];return n.jsx("div",{className:"cell-container",children:n.jsx(g,{permissions:["SecurityPolicy_Admin"],children:n.jsx(T,{items:i,onClick:({key:e,domEvent:i})=>{i.stopPropagation(),"edit"===e?c(t):"delete"===e&&r(t.QuestionId)},placement:"bottomRight"})})})}}];return n.jsx(y,{direction:"vertical",size:8,children:l&&l.isLoading?n.jsx(S,{active:!0}):n.jsx(n.Fragment,{children:!l.isLoading&&n.jsx(n.Fragment,{children:n.jsx(p,{caption:"Security questions",rowHoverable:!0,onRow:e=>({onClick:()=>{c(e)}}),dataSource:l.Data.QuestionData,columns:m,rowClassName:"table-row-hoverable",pagination:!1,tableLayout:"fixed",className:"questions-table"})})})})},{Option:B}=Q,w="security-questions-settings-form",M=i=>{const u=s(e=>e.auth.appBasicInfo),l=s(e=>e.appState.i18n.languages),[d]=x.useForm(),c=s(e=>e.securityConfiguration.securityquestions),[m,p]=t.useState(u.MaximumFailedSecurityQuestionAttempts||1),[g,j]=t.useState(c.Data.RenderQuestionCount||1),[E,D]=t.useState(!(!c.Data.RenderQuestionCount||!u.MaximumFailedSecurityQuestionAttempts)),{isDirty:I,syncDirty:C,clearDirty:_,reset:N}=v([c.isLoading]),T=e();return t.useEffect(()=>{d.setFieldValue("numberOfQuestions",c.Data.RenderQuestionCount)},[c.isDeleting,c.isAdding,c.isUpdating,c.isLoading]),n.jsxs(y,{direction:"vertical",style:{marginTop:16},size:32,children:[c&&c.isLoading?n.jsx(S,{active:!0}):n.jsx(O,{title:"Settings",titleLevel:2,description:"Set how many questions users must answer and how many failed attempts are allowed.",children:n.jsxs(x,{id:w,layout:"vertical",name:"control-hooks",onFinish:function(){T(r({RenderQuestionCount:parseInt(g.toString(),10)||1,MaximumFailedSecurityQuestionAttempts:parseInt(m.toString(),10)||1}
1)),_()},form:d,initialValues:{numberOfQuestions:c.Data.RenderQuestionCount,inputNumber:m},autoComplete:"off",onFieldsChange:()=>{const e=d.getFieldsValue(),t=Object.values(e).every(e=>e&&e>0);D(t),C(!R({numberOfQuestions:Number(e.numberOfQuestions),inputNumber:Number(e.inputNumber)},{numberOfQuestions:Number(c.Data.RenderQuestionCount),inputNumber:Number(u.MaximumFailedSecurityQuestionAttempts||1)}))},children:[!i.isIOEnabled&&n.jsx(x.Item,{name:"numberOfQuestions",label:n.jsx(b.Text,{className:"font-medium",children:l.NUMBER_OF_SECURITY_QUESTION_RENDER}),rules:[{validator:()=>Promise.resolve()}],children:n.jsx(Q,{suffixIcon:n.jsx(f,{size:16,style:{display:"block"}}),placeholder:l.SECURITY_QUESTION_LIMIT_RESET_PASSWORD,onChange:j,defaultValue:c.Data.RenderQuestionCount,disabled:!c.Data.QuestionData.length,value:c.Data.RenderQuestionCount,children:c.Data.QuestionData.slice(0,a).map((e,t)=>n.jsx(B,{value:String(t+1),children:t+1},t+1))})}),n.jsx(x.Item,{name:"inputNumber",label:n.jsx(b.Text,{className:"font-medium",children:"Attempt limit"}),rules:[{validator:(e,t)=>!t||t<=0?Promise.reject(o(l,"Security question attempt limit").required):t&&t>=255?Promise.reject(o(l,"Security question attempt limit").less_than.replace("%s","255")):Promise.resolve()}],validateTrigger:["onChange","onBlur"],children:n.jsx(h,{min:1,onKeyDown:k,id:"in_limit",disabled:!c.Data.QuestionData.length,style:{width:"100%"},onChange:e=>{e||(e=1),p(e)}})})]})}),n.jsx(A,{isDirty:I,formId:w,onReset:function(){N(()=>{j(c.Data.RenderQuestionCount||1),p(u.MaximumFailedSecurityQuestionAttempts||1),d.resetFields(),d.setFieldsValue({numberOfQuestions:c.Data.RenderQuestionCount,inputNumber:u.MaximumFailedSecurityQuestionAttempts||1})})},saveLoading:c.isUpdating||c.isLoading,saveDisabled:!c.Data.QuestionData.length||!E,permissions:["SecurityPolicy_Edit"]})]})},{Text:V}=b,z=i=>{const a=j(),o=E(),[r,p]=t.useState(""),[g,S]=t.useState(!1),[x,Q]=t.useState(!1),[f,b]=t.useState(""),{i18n:{languages:h}}=s(e=>e.appState),T=s(e=>e.securityConfiguration.securityquestions),O=s(e=>e.auth.appFeatures),R=s(e=>!!e.auth.appPermission.SecurityPolicy_Admin),A=r?T.Data?.QuestionData?.find(e=>e.QuestionId===r)?.Question??"":"";D(()=>{T.isSuccess&&Q(!1)},[T.isDeleting]),D(()=>{T.isSuccess&&v()},[T.isAdding,T.isUpdating]);const v=()=>{S(!1),p("")},k=[{key:"1",label:"Questions",children:n.jsx(P,{editingKey:r,setEditingKey:p,handleDelete:e=>{Q(!0),b(e)}})},{key:"2",label:"Settings",children:n.jsx(M,{isIOEnabled:i.isIOEnabled})}],B=e(),w=n.jsx(I,{type:"primary",onClick:()=>{S(!0),p("")},icon:n.jsx(C,{}),children:h.ADD_QUESTION}),z=[{label:"Question",name:"question",type:"string",rules:[{validator:(e,t)=>!t||/^\s*$/.test(t)?Promise.reject(h.ENTER_A_NEW_SECURITY_QUESTION):Promise.resolve()}]}];return n.jsxs(y,{direction:"vertical",size:16,children:[o&&o.state&&(()=>{const e={text:"",link:""},{mfaValue:t,isRBA:i}=o.state;return i&&(e.text="Back to Risk-Based Authentication",e.link="../../security/risk-based-authentication/settings"),e.link?n.jsxs(V,{style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer",fontWeight:"500"},onClick:()=>{a(e.link,{state:{mfaValue:t}})},children:[n.jsx(U,{size:20})," ",e.text]}):null})(),n.jsxs(y,{direction:"vertical",size:u.tabs.gap,children:[n.jsx(F,{router:null,basename:"/security/security-questions",description:h.SECURITY_QUESTION_HEADER,pageType:"tabs",hasActionButton:O.security_question_enabled,title:i.isIOEnabled?h.SECURITY_QUESTION_LABLE:"",titleLevel:3,actionButtonNode:w}),n.jsx(q,{permissions:["SecurityPolicy_View"],features:["security_question_enabled"],children:n.jsx(y,{direction:"vertical",size:36,children:n.jsx(_,{defaultActiveKey:"1",tabBarStyle:{marginBottom:8},items:k,onChange:()=>{}})})})]}),n.jsx(N,{isOpen:g||""!==r,isEdit:!!r,title:g?h.ADD_SECURITY_QUESTION:h.UPDATE_QUESTION,buttonText:r?"Save":"Create",cancelText:h.CANCEL,loading:T.isAdding||T.isUpdating,disabled:!R,onCancel:v,initialValues:r?{question:A}:void 0,schema:z,onFinish:e=>{if(""!==r){const t=T.Data.QuestionData.find(e=>e.QuestionId===r);if(t&&t.Question===e.question)return p(""),void S(!1);B(l({QuestionId:r,Question:e.question.trim()}))}else T.Data.QuestionData.some(t=>t.Question===e.question.trim())?d.error(h.QUESTION_ALREADY_EXISTS):B(c({Question:e.question.trim()}))}}),n.jsx(L,{open:x,onClose:()=>{Q(!1)},onConfirm:()=>{B(m({questionID:f}))},title:h.SECURITY_QUESTION_LABLE,message:h.LABEL_REMOVE_CONFIRMATION,loading:T.isDeleting})]})};export{z 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.