\ No newline at end of file
diff --git a/portal-ui/build/static/js/1191.1f6c42ce.chunk.js b/portal-ui/build/static/js/1191.1f6c42ce.chunk.js
deleted file mode 100644
index 7d801d695..000000000
--- a/portal-ui/build/static/js/1191.1f6c42ce.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1191],{92217:function(e,t,n){"use strict";var r=n(72791),o=n(29945),i=n(78029),c=n.n(i),a=n(27454),s=n(80184);t.Z=function(e){var t=e.value,n=e.label,i=void 0===n?"":n,l=e.tooltip,u=void 0===l?"":l,d=e.mode,p=void 0===d?"json":d,f=e.onChange,h=e.editorHeight,y=void 0===h?250:h,m=e.helptip;return(0,s.jsx)(o.pq4,{value:t,onChange:function(e){return f(e)},mode:p,tooltip:u,editorHeight:y,label:i,helpTools:(0,s.jsx)(r.Fragment,{children:(0,s.jsx)(a.Z,{tooltip:"Copy to Clipboard",children:(0,s.jsx)(c(),{text:t,children:(0,s.jsx)(o.zxk,{type:"button",id:"copy-code-mirror",icon:(0,s.jsx)(o.TIy,{}),color:"primary",variant:"regular"})})})}),helpTip:m,helpTipPlacement:"right"})}},879:function(e,t,n){"use strict";n.d(t,{D_:function(){return c},Et:function(){return o},GJ:function(){return i},yh:function(){return r}});var r={RED:"#C83B51",GREEN:"#4CCB92",YELLOW:"#FFBD62"},o=function(e,t){return e<=t/2?"bad":2!==t&&e===t/2+1?"warn":e===t?"good":void 0},i=function(e){switch(e){case"offline":return"bad";case"online":return"good";default:return"warn"}},c=function(e,t){return e<=t/2?"bad":e===t/2+1?"warn":e===t?"good":void 0}},1191:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return k}});var r=n(1413),o=n(29439),i=n(72791),c=n(78687),a=n(57689),s=n(29945),l=n(23814),u=n(92217),d=n(56087),p=n(38442),f=n(75578),h=n(59114),y=n(879),m=n(80184),x={display:"grid",gridTemplateColumns:"70px 1fr",gap:15},j=function(e){var t=e.search,n=void 0===t?"":t,r=e.children,o=void 0===r?"":r,i=new RegExp("(".concat(function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}(n),")"),"i"),c=String(o).split(i);return n?c.map((function(e,t){return i.test(e)?(0,m.jsx)("mark",{children:e},t):e})):o},b=function(e){var t=e.policyStatements,n=(0,i.useState)(""),r=(0,o.Z)(n,2),c=r[0],a=r[1];return(0,m.jsxs)(s.rjZ,{container:!0,children:[(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsxs)(s.rjZ,{container:!0,sx:{display:"flex",alignItems:"center"},children:[(0,m.jsx)(s.SYi,{content:(0,m.jsxs)(i.Fragment,{children:["Define which actions are permitted on a specified resource. Learn more about"," ",(0,m.jsx)("a",{target:"blank",href:"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html",children:"IAM conditional statements"}),"."]}),placement:"right",children:(0,m.jsx)(s.rjZ,{item:!0,xs:12,sm:6,sx:{fontWeight:"bold"},children:"Statements"})}),(0,m.jsx)(s.rjZ,{item:!0,xs:12,sm:6,sx:{display:"flex",justifyContent:"flex-end"},children:(0,m.jsx)(h.Z,{placeholder:"Search",onChange:a,value:c,sx:{maxWidth:380}})})]})}),!t&&(0,m.jsx)(i.Fragment,{children:"Policy has no statements"}),t&&(0,m.jsx)(s.rjZ,{item:!0,xs:12,sx:{"& .policy-row":{borderBottom:"1px solid #eaeaea"},"& .policy-row:first-child":{borderTop:"1px solid #eaeaea"},"& .policy-row:last-child":{borderBottom:"0px"},paddingTop:"15px","& mark":{color:"#000000",fontWeight:500}},children:t.map((function(e,t){var n=e.Effect,r="Allow"===n;return(0,m.jsxs)(s.xuv,{className:"policy-row",sx:{display:"grid",gridTemplateColumns:"1fr",gap:"15px",fontSize:"14px",padding:"10px 0 10px 0","& .label":{fontWeight:600}},children:[(0,m.jsxs)(s.xuv,{sx:x,children:[(0,m.jsx)(s.xuv,{className:"label",children:"Effect:"}),(0,m.jsxs)(s.xuv,{sx:{display:"flex",alignItems:"center","& .min-icon":{marginRight:"5px",fill:r?y.yh.GREEN:y.yh.RED,height:"14px",width:"14px"}},children:[r?(0,m.jsx)(s.E31,{}):(0,m.jsx)(s.dRf,{}),n]})]}),(0,m.jsxs)(s.rjZ,{container:!0,sx:{gap:15},children:[(0,m.jsxs)(s.rjZ,{item:!0,xs:12,sm:6,sx:x,children:[(0,m.jsx)(s.xuv,{className:"label",children:"Actions:"}),(0,m.jsx)(s.xuv,{children:e.Action&&e.Action.map((function(e,n){return(0,m.jsx)("div",{children:(0,m.jsx)(j,{search:c,children:e})},"".concat(t,"-r-").concat(n))}))})]}),(0,m.jsxs)(s.rjZ,{item:!0,xs:12,sm:6,sx:x,children:[(0,m.jsx)(s.xuv,{className:"label",children:"Resources:"}),(0,m.jsx)(s.xuv,{children:e.Resource&&e.Resource.map((function(e,n){return(0,m.jsxs)("div",{children:[" ",(0,m.jsx)(j,{search:c,children:e})]},"".concat(t,"-r-").concat(n))}))})]})]})]},"".concat(t))}))})]})},g=n(45248),v=n(87995),C=n(46078),w=n(44690),S=n(27454),O=n(47974),P=n(31776),Z=n(99670),E=(0,f.Z)(i.lazy((function(){return n.e(312).then(n.bind(n,312))}))),k=function(){var e=(0,w.TL)(),t=(0,a.s0)(),n=(0,a.UO)(),f=(0,c.v9)(C.$4),y=(0,i.useState)(null),x=(0,o.Z)(y,2),j=x[0],k=x[1],R=(0,i.useState)([]),D=(0,o.Z)(R,2),_=D[0],F=D[1],T=(0,i.useState)([]),A=(0,o.Z)(T,2),I=A[0],M=A[1],N=(0,i.useState)([]),L=(0,o.Z)(N,2),B=L[0],U=L[1],G=(0,i.useState)(!1),z=(0,o.Z)(G,2),H=z[0],K=z[1],J=(0,g.IO)(n.policyName||""),W=(0,i.useState)(""),X=(0,o.Z)(W,2),Y=X[0],Q=X[1],$=(0,i.useState)(!0),q=(0,o.Z)($,2),V=q[0],ee=q[1],te=(0,i.useState)(""),ne=(0,o.Z)(te,2),re=ne[0],oe=ne[1],ie=(0,i.useState)(!0),ce=(0,o.Z)(ie,2),ae=ce[0],se=ce[1],le=(0,i.useState)(""),ue=(0,o.Z)(le,2),de=ue[0],pe=ue[1],fe=(0,i.useState)(!0),he=(0,o.Z)(fe,2),ye=he[0],me=he[1],xe=(0,i.useState)(!1),je=(0,o.Z)(xe,2),be=je[0],ge=je[1],ve=(0,i.useState)("summary"),Ce=(0,o.Z)(ve,2),we=Ce[0],Se=Ce[1],Oe=f&&f.includes("ldap-idp")||!1,Pe=(0,p.F)(d.C3,d.K6,!0),Ze=(0,p.F)(d.C3,d.k_,!0),Ee=(0,p.F)(d.C3,d.Rs,!0),ke=(0,p.F)(d.C3,d.iw,!0),Re=(0,p.F)(d.C3,d.GD,!0),De=(0,p.F)(d.C3,d.bE,!0),_e=(0,p.F)(d.C3,d.XM,!0);(0,i.useEffect)((function(){V&&(V&&(Re?P.h.policy.policyInfo((0,g.LL)(J)).then((function(e){if(e.data){var t,n;k(e.data),Q(e?JSON.stringify(JSON.parse(null===(t=e.data)||void 0===t?void 0:t.policy),null,4):"");var r=JSON.parse(null===(n=e.data)||void 0===n?void 0:n.policy);F(r.Statement)}ee(!1)})).catch((function(t){e((0,v.Ih)(t)),ee(!1)})):ee(!1)),ae&&(Ee&&!Oe?P.h.policies.listUsersForPolicy((0,g.LL)(J)).then((function(e){var t;M(null!==(t=e.data)&&void 0!==t?t:[]),se(!1)})).catch((function(t){e((0,v.Ih)(t)),se(!1)})):se(!1)),ye&&(Pe&&!Oe?P.h.policies.listGroupsForPolicy((0,g.LL)(J)).then((function(e){var t;U(null!==(t=e.data)&&void 0!==t?t:[]),me(!1)})).catch((function(t){e((0,v.Ih)(t)),me(!1)})):me(!1)))}),[J,V,ae,ye,M,U,Q,k,se,me,Ee,Pe,Re,Oe,e]);var Fe=""!==J.trim(),Te=[{type:"view",onClick:function(e){t("".concat(d.gA.USERS,"/").concat((0,g.LL)(e)))},disableButtonFunction:function(){return!ke}}],Ae=I.filter((function(e){return e.includes(re)})),Ie=[{type:"view",onClick:function(e){t("".concat(d.gA.GROUPS,"/").concat((0,g.LL)(e)))},disableButtonFunction:function(){return!Ze}}],Me=B.filter((function(e){return e.includes(de)})),Ne=function(){se(!0),me(!0),ee(!0)};return(0,i.useEffect)((function(){e((0,v.Sc)("policy_details_summary"))}),[]),(0,m.jsxs)(i.Fragment,{children:[be&&(0,m.jsx)(E,{deleteOpen:be,selectedPolicy:J,closeDeleteModalAndRefresh:function(e){ge(!1),t(d.gA.POLICIES)}}),(0,m.jsx)(O.Z,{label:(0,m.jsx)(i.Fragment,{children:(0,m.jsx)(s.hbI,{label:"Policy",onClick:function(){return t(d.gA.POLICIES)}})}),actions:(0,m.jsx)(Z.Z,{})}),(0,m.jsxs)(s.Xgh,{children:[(0,m.jsx)(s.UHn,{icon:(0,m.jsx)(s.v42,{width:40}),title:J,subTitle:(0,m.jsx)(i.Fragment,{children:"IAM Policy"}),actions:(0,m.jsxs)(i.Fragment,{children:[(0,m.jsx)(p.s,{scopes:[d.Ft.ADMIN_DELETE_POLICY],resource:d.C3,errorProps:{disabled:!0},children:(0,m.jsx)(S.Z,{tooltip:De?"":(0,d.MK)(d.bE,"delete Policies"),children:(0,m.jsx)(s.zxk,{id:"delete-policy",label:"Delete Policy",variant:"secondary",icon:(0,m.jsx)(s.XHJ,{}),onClick:function(){ge(!0)},disabled:!De})})}),(0,m.jsx)(S.Z,{tooltip:"Refresh",children:(0,m.jsx)(s.zxk,{id:"refresh-policy",label:"Refresh",variant:"regular",icon:(0,m.jsx)(s.DuK,{}),onClick:function(){Ne()}})})]}),sx:{marginBottom:15}}),(0,m.jsx)(s.xuv,{children:(0,m.jsx)(s.mQc,{options:[{tabConfig:{label:"Summary",disabled:!Re,id:"summary"},content:(0,m.jsx)(i.Fragment,{children:(0,m.jsxs)(s.rjZ,{onMouseMove:function(){return e((0,v.Sc)("policy_details_summary"))},children:[(0,m.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},children:"Policy Summary"}),(0,m.jsx)(s.xuv,{withBorders:!0,children:(0,m.jsx)(b,{policyStatements:_})})]})})},{tabConfig:{label:"Users",disabled:!Ee||Oe,id:"users"},content:(0,m.jsx)(i.Fragment,{children:(0,m.jsxs)(s.rjZ,{onMouseMove:function(){return e((0,v.Sc)("policy_details_users"))},children:[(0,m.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},children:"Users"}),(0,m.jsxs)(s.rjZ,{container:!0,children:[I.length>0&&(0,m.jsx)(s.rjZ,{item:!0,xs:12,sx:(0,r.Z)((0,r.Z)({},l.OR.actionsTray),{},{marginBottom:15}),children:(0,m.jsx)(h.Z,{value:re,placeholder:"Search Users",id:"search-resource",onChange:function(e){oe(e)}})}),(0,m.jsx)(s.wQF,{itemActions:Te,columns:[{label:"Name",elementKey:"name"}],isLoading:ae,records:Ae,entityName:"Users with this Policy associated",idField:"name",customPaperHeight:"500px"})]})]})})},{tabConfig:{label:"Groups",disabled:!Pe||Oe,id:"groups"},content:(0,m.jsx)(i.Fragment,{children:(0,m.jsxs)(s.rjZ,{onMouseMove:function(){return e((0,v.Sc)("policy_details_groups"))},children:[(0,m.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},children:"Groups"}),(0,m.jsxs)(s.rjZ,{container:!0,children:[B.length>0&&(0,m.jsx)(s.rjZ,{item:!0,xs:12,sx:(0,r.Z)((0,r.Z)({},l.OR.actionsTray),{},{marginBottom:15}),children:(0,m.jsx)(h.Z,{value:re,placeholder:"Search Groups",id:"search-resource",onChange:function(e){pe(e)}})}),(0,m.jsx)(s.wQF,{itemActions:Ie,columns:[{label:"Name",elementKey:"name"}],isLoading:ye,records:Me,entityName:"Groups with this Policy associated",idField:"name",customPaperHeight:"500px"})]})]})})},{tabConfig:{label:"Raw Policy",disabled:!Re,id:"raw-policy"},content:(0,m.jsx)(i.Fragment,{children:(0,m.jsxs)(s.rjZ,{onMouseMove:function(){return e((0,v.Sc)("policy_details_policy"))},children:[(0,m.jsx)(s.SYi,{content:(0,m.jsx)(i.Fragment,{children:(0,m.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})}),placement:"right",children:(0,m.jsx)(s.NZf,{children:"Raw Policy"})}),(0,m.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(t){t.preventDefault(),H||(K(!0),_e?P.h.policies.addPolicy({name:J,policy:Y}).then((function(t){K(!1),e((0,v.y1)("Policy successfully updated")),Ne()})).catch((function(t){K(!1),e((0,v.Ih)({errorMessage:"There was an error updating the Policy ",detailedError:"There was an error updating the Policy: "+(t.error.detailedMessage||"")+". Please check Policy syntax."}))})):K(!1))},children:(0,m.jsxs)(s.rjZ,{container:!0,children:[(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(u.Z,{value:Y,onChange:function(e){_e&&Q(e)},editorHeight:"350px",helptip:(0,m.jsx)(i.Fragment,{children:(0,m.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})})})}),(0,m.jsxs)(s.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end",paddingTop:16,gap:8},children:[!j&&(0,m.jsx)(s.zxk,{type:"button",variant:"regular",id:"clear-policy",onClick:function(){Q("{}")},children:"Clear"}),(0,m.jsx)(p.s,{scopes:[d.Ft.ADMIN_CREATE_POLICY],resource:d.C3,errorProps:{disabled:!0},children:(0,m.jsx)(S.Z,{tooltip:_e?"":(0,d.MK)(d.XM,"edit a Policy"),children:(0,m.jsx)(s.zxk,{id:"save",type:"submit",variant:"callAction",color:"primary",disabled:H||!Fe||!_e,label:"Save"})})})]}),H&&(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(s.kod,{})})]})})]})})}],currentTabOrPath:we,onTabClick:function(e){return Se(e)}})})]})]})}},76998:function(e,t,n){"use strict";var r=n(42458),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,c,a,s,l,u=!1;t||(t={}),n=t.debug||!1;try{if(c=r(),a=document.createRange(),s=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(l),a.selectNodeContents(l),s.addRange(a),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(d){n&&console.error("unable to copy using execCommand: ",d),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(d){n&&console.error("unable to copy using clipboardData: ",d),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{s&&("function"==typeof s.removeRange?s.removeRange(a):s.removeAllRanges()),l&&document.body.removeChild(l),c()}return u}},568:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=a(n(72791)),i=a(n(76998)),c=["text","onCopy","options","children"];function a(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function d(e,t){for(var n=0;n.\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n helptip?: any;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n helptip,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n helpTip={helptip}\n helpTipPlacement=\"right\"\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const STATUS_COLORS = {\n RED: \"#C83B51\",\n GREEN: \"#4CCB92\",\n YELLOW: \"#FFBD62\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number,\n) => {\n if (activeDisks <= totalDrives / 2) {\n return \"bad\";\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return \"warn\";\n }\n if (activeDisks === totalDrives) {\n return \"good\";\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return \"bad\";\n case \"online\":\n return \"good\";\n default:\n return \"warn\";\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number,\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return \"bad\";\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return \"warn\";\n }\n if (activeNetwork === networkTotal) {\n return \"good\";\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { DisabledIcon, EnabledIcon, Box, Grid, HelpTip } from \"mds\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { STATUS_COLORS } from \"../Dashboard/BasicDashboard/Utils\";\nimport { IAMStatement } from \"./types\";\n\nconst rowGridStyle = {\n display: \"grid\",\n gridTemplateColumns: \"70px 1fr\",\n gap: 15,\n};\n\nconst escapeRegExp = (str = \"\") =>\n str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n\nconst Highlight = ({ search = \"\", children = \"\" }): any => {\n const txtParts = new RegExp(`(${escapeRegExp(search)})`, \"i\");\n const parts = String(children).split(txtParts);\n\n if (search) {\n return parts.map((part, index) =>\n txtParts.test(part) ? {part} : part,\n );\n } else {\n return children;\n }\n};\n\nconst PolicyView = ({\n policyStatements,\n}: {\n policyStatements: IAMStatement[];\n}) => {\n const [filter, setFilter] = useState(\"\");\n\n return (\n \n \n \n \n Define which actions are permitted on a specified resource.\n Learn more about{\" \"}\n \n IAM conditional statements\n \n .\n \n }\n placement=\"right\"\n >\n \n Statements\n \n \n \n \n \n \n \n {!policyStatements && Policy has no statements}\n {policyStatements && (\n \n {policyStatements.map((stmt, i) => {\n const effect = stmt.Effect;\n const isAllow = effect === \"Allow\";\n return (\n \n \n Effect:\n \n {isAllow ? : }\n {effect}\n \n \n \n \n Actions:\n \n {stmt.Action &&\n stmt.Action.map((act, actIndex) => (\n
\n ))}\n \n \n \n \n );\n })}\n \n )}\n \n );\n};\n\nexport default PolicyView;\n","// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { IAMPolicy, IAMStatement } from \"./types\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n IAMPoliciesIcon,\n PageLayout,\n ProgressBar,\n RefreshIcon,\n ScreenTitle,\n SectionTitle,\n Tabs,\n TrashIcon,\n HelpTip,\n} from \"mds\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\n\nimport {\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n deletePolicyPermissions,\n getGroupPermissions,\n IAM_PAGES,\n IAM_SCOPES,\n listGroupPermissions,\n listUsersPermissions,\n permissionTooltipHelper,\n viewPolicyPermissions,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport PolicyView from \"./PolicyView\";\nimport { decodeURLString, encodeURLString } from \"../../../common/utils\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { selFeatures } from \"../consoleSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { Policy } from \"../../../api/consoleApi\";\nimport { api } from \"../../../api\";\nimport HelpMenu from \"../HelpMenu\";\nimport SearchBox from \"../Common/SearchBox\";\n\nconst DeletePolicy = withSuspense(React.lazy(() => import(\"./DeletePolicy\")));\n\nconst PolicyDetails = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const features = useSelector(selFeatures);\n\n const [policy, setPolicy] = useState(null);\n const [policyStatements, setPolicyStatements] = useState([]);\n const [userList, setUserList] = useState([]);\n const [groupList, setGroupList] = useState([]);\n const [addLoading, setAddLoading] = useState(false);\n\n const policyName = decodeURLString(params.policyName || \"\");\n\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n const [loadingPolicy, setLoadingPolicy] = useState(true);\n const [filterUsers, setFilterUsers] = useState(\"\");\n const [loadingUsers, setLoadingUsers] = useState(true);\n const [filterGroups, setFilterGroups] = useState(\"\");\n const [loadingGroups, setLoadingGroups] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedTab, setSelectedTab] = useState(\"summary\");\n\n const ldapIsEnabled = (features && features.includes(\"ldap-idp\")) || false;\n\n const displayGroups = hasPermission(\n CONSOLE_UI_RESOURCE,\n listGroupPermissions,\n true,\n );\n\n const viewGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n getGroupPermissions,\n true,\n );\n\n const displayUsers = hasPermission(\n CONSOLE_UI_RESOURCE,\n listUsersPermissions,\n true,\n );\n\n const viewUser = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewUserPermissions,\n true,\n );\n\n const displayPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewPolicyPermissions,\n true,\n );\n\n const canDeletePolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n deletePolicyPermissions,\n true,\n );\n\n const canEditPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n true,\n );\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n if (canEditPolicy) {\n api.policies\n .addPolicy({\n name: policyName,\n policy: policyDefinition,\n })\n .then((_) => {\n setAddLoading(false);\n dispatch(setSnackBarMessage(\"Policy successfully updated\"));\n refreshPolicyDetails();\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"There was an error updating the Policy \",\n detailedError:\n \"There was an error updating the Policy: \" +\n (err.error.detailedMessage || \"\") +\n \". Please check Policy syntax.\",\n }),\n );\n });\n } else {\n setAddLoading(false);\n }\n };\n\n useEffect(() => {\n const loadUsersForPolicy = () => {\n if (loadingUsers) {\n if (displayUsers && !ldapIsEnabled) {\n api.policies\n .listUsersForPolicy(encodeURLString(policyName))\n .then((result) => {\n setUserList(result.data ?? []);\n setLoadingUsers(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingUsers(false);\n });\n } else {\n setLoadingUsers(false);\n }\n }\n };\n\n const loadGroupsForPolicy = () => {\n if (loadingGroups) {\n if (displayGroups && !ldapIsEnabled) {\n api.policies\n .listGroupsForPolicy(encodeURLString(policyName))\n .then((result) => {\n setGroupList(result.data ?? []);\n setLoadingGroups(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingGroups(false);\n });\n } else {\n setLoadingGroups(false);\n }\n }\n };\n const loadPolicyDetails = () => {\n if (loadingPolicy) {\n if (displayPolicy) {\n api.policy\n .policyInfo(encodeURLString(policyName))\n .then((result) => {\n if (result.data) {\n setPolicy(result.data);\n setPolicyDefinition(\n result\n ? JSON.stringify(JSON.parse(result.data?.policy!), null, 4)\n : \"\",\n );\n const pol: IAMPolicy = JSON.parse(result.data?.policy!);\n setPolicyStatements(pol.Statement);\n }\n setLoadingPolicy(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingPolicy(false);\n });\n } else {\n setLoadingPolicy(false);\n }\n }\n };\n\n if (loadingPolicy) {\n loadPolicyDetails();\n loadUsersForPolicy();\n loadGroupsForPolicy();\n }\n }, [\n policyName,\n loadingPolicy,\n loadingUsers,\n loadingGroups,\n setUserList,\n setGroupList,\n setPolicyDefinition,\n setPolicy,\n setLoadingUsers,\n setLoadingGroups,\n displayUsers,\n displayGroups,\n displayPolicy,\n ldapIsEnabled,\n dispatch,\n ]);\n\n const resetForm = () => {\n setPolicyDefinition(\"{}\");\n };\n\n const validSave = policyName.trim() !== \"\";\n\n const deletePolicy = () => {\n setDeleteOpen(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n navigate(IAM_PAGES.POLICIES);\n };\n\n const userViewAction = (user: any) => {\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(user)}`);\n };\n const userTableActions = [\n {\n type: \"view\",\n onClick: userViewAction,\n disableButtonFunction: () => !viewUser,\n },\n ];\n\n const filteredUsers = userList.filter((elementItem) =>\n elementItem.includes(filterUsers),\n );\n\n const groupViewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURLString(group)}`);\n };\n\n const groupTableActions = [\n {\n type: \"view\",\n onClick: groupViewAction,\n disableButtonFunction: () => !viewGroup,\n },\n ];\n\n const filteredGroups = groupList.filter((elementItem) =>\n elementItem.includes(filterGroups),\n );\n\n const refreshPolicyDetails = () => {\n setLoadingUsers(true);\n setLoadingGroups(true);\n setLoadingPolicy(true);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"policy_details_summary\"));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n \n )}\n \n navigate(IAM_PAGES.POLICIES)}\n />\n \n }\n actions={}\n />\n \n }\n title={policyName}\n subTitle={IAM Policy}\n actions={\n \n \n \n }\n onClick={deletePolicy}\n disabled={!canDeletePolicy}\n />\n \n \n\n \n }\n onClick={() => {\n refreshPolicyDetails();\n }}\n />\n \n \n }\n sx={{ marginBottom: 15 }}\n />\n \n \n \n dispatch(setHelpName(\"policy_details_summary\"))\n }\n >\n \n Policy Summary\n \n \n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Users\",\n disabled: !displayUsers || ldapIsEnabled,\n id: \"users\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_users\"))\n }\n >\n \n Users\n \n \n {userList.length > 0 && (\n \n {\n setFilterUsers(val);\n }}\n />\n \n )}\n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Groups\",\n disabled: !displayGroups || ldapIsEnabled,\n id: \"groups\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_groups\"))\n }\n >\n \n Groups\n \n \n {groupList.length > 0 && (\n \n {\n setFilterGroups(val);\n }}\n />\n \n )}\n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Raw Policy\",\n disabled: !displayPolicy,\n id: \"raw-policy\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_policy\"))\n }\n >\n \n \n Guide to access policy structure\n \n \n }\n placement=\"right\"\n >\n Raw Policy\n \n \n \n \n ),\n },\n ]}\n currentTabOrPath={selectedTab}\n onTabClick={(tab) => setSelectedTab(tab)}\n />\n \n \n \n );\n};\n\nexport default PolicyDetails;\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["_ref","value","label","tooltip","mode","onChange","editorHeight","helptip","_jsx","CodeEditor","helpTools","Fragment","children","TooltipWrapper","CopyToClipboard","text","Button","type","id","icon","CopyIcon","color","variant","helpTip","helpTipPlacement","STATUS_COLORS","RED","GREEN","YELLOW","getDriveStatusColor","activeDisks","totalDrives","serverStatusColor","health_status","getNetworkStatusColor","activeNetwork","networkTotal","rowGridStyle","display","gridTemplateColumns","gap","Highlight","search","txtParts","RegExp","concat","arguments","length","undefined","replace","escapeRegExp","parts","String","split","map","part","index","test","_ref2","policyStatements","filter","setFilter","useState","_jsxs","Grid","container","item","xs","sx","alignItems","HelpTip","content","target","href","placement","sm","fontWeight","justifyContent","SearchBox","placeholder","maxWidth","borderBottom","borderTop","paddingTop","stmt","i","effect","Effect","isAllow","Box","className","fontSize","padding","marginRight","fill","height","width","EnabledIcon","DisabledIcon","Action","act","actIndex","Resource","res","resIndex","DeletePolicy","withSuspense","React","PolicyDetails","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","features","useSelector","selFeatures","policy","setPolicy","setPolicyStatements","userList","setUserList","groupList","setGroupList","addLoading","setAddLoading","policyName","decodeURLString","policyDefinition","setPolicyDefinition","loadingPolicy","setLoadingPolicy","filterUsers","setFilterUsers","loadingUsers","setLoadingUsers","filterGroups","setFilterGroups","loadingGroups","setLoadingGroups","deleteOpen","setDeleteOpen","selectedTab","setSelectedTab","ldapIsEnabled","includes","displayGroups","hasPermission","CONSOLE_UI_RESOURCE","listGroupPermissions","viewGroup","getGroupPermissions","displayUsers","listUsersPermissions","viewUser","viewUserPermissions","displayPolicy","viewPolicyPermissions","canDeletePolicy","deletePolicyPermissions","canEditPolicy","createPolicyPermissions","useEffect","api","policyInfo","encodeURLString","then","result","data","_result$data3","_result$data4","JSON","stringify","parse","pol","Statement","catch","err","setErrorSnackMessage","policies","listUsersForPolicy","_result$data","listGroupsForPolicy","_result$data2","validSave","trim","userTableActions","onClick","user","IAM_PAGES","USERS","disableButtonFunction","filteredUsers","elementItem","groupTableActions","group","GROUPS","filteredGroups","refreshPolicyDetails","setHelpName","selectedPolicy","closeDeleteModalAndRefresh","refresh","POLICIES","PageHeaderWrapper","BackLink","actions","HelpMenu","PageLayout","ScreenTitle","IAMPoliciesIcon","title","subTitle","SecureComponent","scopes","IAM_SCOPES","ADMIN_DELETE_POLICY","resource","errorProps","disabled","permissionTooltipHelper","TrashIcon","deletePolicy","RefreshIcon","marginBottom","Tabs","options","tabConfig","onMouseMove","SectionTitle","separator","withBorders","PolicyView","actionsTray","val","DataTable","itemActions","columns","elementKey","isLoading","records","entityName","idField","customPaperHeight","noValidate","autoComplete","onSubmit","e","preventDefault","addPolicy","name","_","setSnackBarMessage","errorMessage","detailedError","error","detailedMessage","CodeMirrorWrapper","ADMIN_CREATE_POLICY","ProgressBar","currentTabOrPath","onTabClick","tab","deselectCurrent","require","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","navigator","userAgent","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","event","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1260.1bfa3ef3.chunk.js b/portal-ui/build/static/js/1260.1bfa3ef3.chunk.js
deleted file mode 100644
index a62673a9c..000000000
--- a/portal-ui/build/static/js/1260.1bfa3ef3.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1260],{1260:function(t,e,o){o.r(e);var n=o(72791),c=o(57689),a=o(44690),r=o(45248),u=o(87995),s=o(46078),i=o(81207),l=o(7241),f=o(80184);e.default=function(){var t=(0,a.TL)(),e=(0,c.s0)();return(0,n.useEffect)((function(){!function(){var o=function(){(0,r.Ov)(),t((0,u.wr)(!1)),t({type:"socket/OBDisconnect"}),localStorage.setItem("userLoggedIn",""),localStorage.setItem("redirect-path",""),t((0,s.lX)()),e("/login")},n=localStorage.getItem("auth-state");i.Z.invoke("POST","/api/v1/logout",{state:n}).then((function(){o()})).catch((function(t){console.error(t),o()}))}()}),[t,e]),(0,f.jsx)(l.Z,{})}}}]);
-//# sourceMappingURL=1260.1bfa3ef3.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1260.1bfa3ef3.chunk.js.map b/portal-ui/build/static/js/1260.1bfa3ef3.chunk.js.map
deleted file mode 100644
index abf1cb135..000000000
--- a/portal-ui/build/static/js/1260.1bfa3ef3.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1260.1bfa3ef3.chunk.js","mappings":"yNA2DA,UAjCmB,WACjB,IAAMA,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MA4BjB,OA3BAC,EAAAA,EAAAA,YAAU,YACO,WACb,IAAMC,EAAgB,YACpBC,EAAAA,EAAAA,MACAN,GAASO,EAAAA,EAAAA,KAAW,IAGpBP,EAAS,CAAEQ,KAAM,wBAEjBC,aAAaC,QAAQ,eAAgB,IACrCD,aAAaC,QAAQ,gBAAiB,IACtCV,GAASW,EAAAA,EAAAA,OACTT,EAAS,SACX,EACMU,EAAQH,aAAaI,QAAQ,cACnCC,EAAAA,EACGC,OAAO,OAAO,iBAAmB,CAAEH,MAAAA,IACnCI,MAAK,WACJX,GACF,IACCY,OAAM,SAACC,GACNC,QAAQC,MAAMF,GACdb,GACF,GACJ,CACAgB,EACF,GAAG,CAACrB,EAAUE,KACPoB,EAAAA,EAAAA,KAACC,EAAAA,EAAgB,GAC1B,C","sources":["screens/LogoutPage/LogoutPage.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../store\";\nimport { ErrorResponseHandler } from \"../../common/types\";\nimport { clearSession } from \"../../common/utils\";\nimport { userLogged } from \"../../systemSlice\";\nimport { resetSession } from \"../Console/consoleSlice\";\nimport api from \"../../common/api\";\nimport LoadingComponent from \"../../common/LoadingComponent\";\n\nconst LogoutPage = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n useEffect(() => {\n const logout = () => {\n const deleteSession = () => {\n clearSession();\n dispatch(userLogged(false));\n\n // Disconnect OB Websocket\n dispatch({ type: \"socket/OBDisconnect\" });\n\n localStorage.setItem(\"userLoggedIn\", \"\");\n localStorage.setItem(\"redirect-path\", \"\");\n dispatch(resetSession());\n navigate(`/login`);\n };\n const state = localStorage.getItem(\"auth-state\");\n api\n .invoke(\"POST\", `/api/v1/logout`, { state })\n .then(() => {\n deleteSession();\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(err);\n deleteSession();\n });\n };\n logout();\n }, [dispatch, navigate]);\n return ;\n};\n\nexport default LogoutPage;\n"],"names":["dispatch","useAppDispatch","navigate","useNavigate","useEffect","deleteSession","clearSession","userLogged","type","localStorage","setItem","resetSession","state","getItem","api","invoke","then","catch","err","console","error","logout","_jsx","LoadingComponent"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1260.291b50cb.chunk.js b/portal-ui/build/static/js/1260.291b50cb.chunk.js
new file mode 100644
index 000000000..5f5b68c19
--- /dev/null
+++ b/portal-ui/build/static/js/1260.291b50cb.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1260],{1260:(t,e,o)=>{o.r(e),o.d(e,{default:()=>p});var s=o(72791),a=o(57689),c=o(44690),r=o(45248),l=o(87995),n=o(46078),u=o(81207),g=o(7241),i=o(80184);const p=()=>{const t=(0,c.TL)(),e=(0,a.s0)();return(0,s.useEffect)((()=>{(()=>{const o=()=>{(0,r.Ov)(),t((0,l.wr)(!1)),t({type:"socket/OBDisconnect"}),localStorage.setItem("userLoggedIn",""),localStorage.setItem("redirect-path",""),t((0,n.lX)()),e("/login")},s=localStorage.getItem("auth-state");u.Z.invoke("POST","/api/v1/logout",{state:s}).then((()=>{o()})).catch((t=>{console.error(t),o()}))})()}),[t,e]),(0,i.jsx)(g.Z,{})}}}]);
+//# sourceMappingURL=1260.291b50cb.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1260.291b50cb.chunk.js.map b/portal-ui/build/static/js/1260.291b50cb.chunk.js.map
new file mode 100644
index 000000000..c88ea1f4b
--- /dev/null
+++ b/portal-ui/build/static/js/1260.291b50cb.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1260.291b50cb.chunk.js","mappings":"0OA0BA,MAiCA,EAjCmBA,KACjB,MAAMC,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MA4BjB,OA3BAC,EAAAA,EAAAA,YAAU,KACOC,MACb,MAAMC,EAAgBA,MACpBC,EAAAA,EAAAA,MACAP,GAASQ,EAAAA,EAAAA,KAAW,IAGpBR,EAAS,CAAES,KAAM,wBAEjBC,aAAaC,QAAQ,eAAgB,IACrCD,aAAaC,QAAQ,gBAAiB,IACtCX,GAASY,EAAAA,EAAAA,OACTV,EAAS,SAAS,EAEdW,EAAQH,aAAaI,QAAQ,cACnCC,EAAAA,EACGC,OAAO,OAAO,iBAAmB,CAAEH,UACnCI,MAAK,KACJX,GAAe,IAEhBY,OAAOC,IACNC,QAAQC,MAAMF,GACdb,GAAe,GACf,EAEND,EAAQ,GACP,CAACL,EAAUE,KACPoB,EAAAA,EAAAA,KAACC,EAAAA,EAAgB,GAAG,C","sources":["screens/LogoutPage/LogoutPage.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../store\";\nimport { ErrorResponseHandler } from \"../../common/types\";\nimport { clearSession } from \"../../common/utils\";\nimport { userLogged } from \"../../systemSlice\";\nimport { resetSession } from \"../Console/consoleSlice\";\nimport api from \"../../common/api\";\nimport LoadingComponent from \"../../common/LoadingComponent\";\n\nconst LogoutPage = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n useEffect(() => {\n const logout = () => {\n const deleteSession = () => {\n clearSession();\n dispatch(userLogged(false));\n\n // Disconnect OB Websocket\n dispatch({ type: \"socket/OBDisconnect\" });\n\n localStorage.setItem(\"userLoggedIn\", \"\");\n localStorage.setItem(\"redirect-path\", \"\");\n dispatch(resetSession());\n navigate(`/login`);\n };\n const state = localStorage.getItem(\"auth-state\");\n api\n .invoke(\"POST\", `/api/v1/logout`, { state })\n .then(() => {\n deleteSession();\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(err);\n deleteSession();\n });\n };\n logout();\n }, [dispatch, navigate]);\n return ;\n};\n\nexport default LogoutPage;\n"],"names":["LogoutPage","dispatch","useAppDispatch","navigate","useNavigate","useEffect","logout","deleteSession","clearSession","userLogged","type","localStorage","setItem","resetSession","state","getItem","api","invoke","then","catch","err","console","error","_jsx","LoadingComponent"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1329.b71d618a.chunk.js b/portal-ui/build/static/js/1329.b71d618a.chunk.js
new file mode 100644
index 000000000..58faae4b7
--- /dev/null
+++ b/portal-ui/build/static/js/1329.b71d618a.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1329],{51270:(e,t,n)=>{n.d(t,{Z:()=>d});var s=n(72791),i=n(29945),a=n(87995),o=n(44690),r=n(9505),l=n(23508),c=n(80184);const d=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,idp:d,idpType:u}=e;const p=(0,o.TL)(),[f,x]=(0,r.Z)((e=>{t(!0),p((0,a.cN)(!0===e.restart))}),(e=>p((0,a.Ih)(e))));if(!d)return null;const j="_"===d?"Default":d;return(0,c.jsx)(l.Z,{title:"Delete ".concat(j),confirmText:"Delete",isOpen:n,titleIcon:(0,c.jsx)(i.NvT,{}),isLoading:f,onConfirm:()=>{x("DELETE","/api/v1/idp/".concat(u,"/").concat(d))},onClose:()=>t(!1),confirmButtonProps:{disabled:f},confirmationContent:(0,c.jsxs)(s.Fragment,{children:["Are you sure you want to delete IDP ",(0,c.jsx)("b",{children:j})," ","configuration? ",(0,c.jsx)("br",{})]})})}},31329:(e,t,n)=>{n.r(t),n.d(t,{default:()=>m});var s=n(72791),i=n(29945),a=n(57689),o=n(31776),r=n(82342),l=n(44690),c=n(56087),d=n(38442),u=n(87995),p=n(23814),f=n(27454),x=n(51270),j=n(79844),C=n(99670),h=n(80184);const D=e=>{let{idpType:t}=e;const n=(0,l.TL)(),D=(0,a.s0)(),[m,y]=(0,s.useState)(!1),[b,F]=(0,s.useState)(""),[_,A]=(0,s.useState)(!1),[I,T]=(0,s.useState)([]),g=(0,d.F)(c.C3,[c.Ft.ADMIN_CONFIG_UPDATE]),N=(0,d.F)(c.C3,[c.Ft.ADMIN_CONFIG_UPDATE]),E=(0,d.F)(c.C3,[c.Ft.ADMIN_CONFIG_UPDATE]);(0,s.useEffect)((()=>{P()}),[]),(0,s.useEffect)((()=>{_&&(E?o.h.idp.listConfigurations(t).then((e=>{A(!1),e.data.results&&T(e.data.results.map((e=>(e.name="_"===e.name?"Default":e.name,e.enabled=!0===e.enabled?"Enabled":"Disabled",e))))})).catch((e=>{A(!1),n((0,u.Ih)((0,r.g)(e.error)))})):A(!1))}),[_,A,T,n,E,t]);const P=()=>{A(!0)},k=[{type:"view",onClick:e=>{let n="Default"===e.name?"_":e.name;D("/identity/idp/".concat(t,"/configurations/").concat(n))},disableButtonFunction:()=>!N},{type:"delete",onClick:e=>{y(!0),F(e="Default"===e?"_":e)},sendOnlyId:!0,disableButtonFunction:e=>!g||"Default"===e}];return(0,s.useEffect)((()=>{n((0,u.Sc)("idp_configs"))}),[]),(0,h.jsxs)(s.Fragment,{children:[m&&(0,h.jsx)(x.Z,{deleteOpen:m,idp:b,idpType:t,closeDeleteModalAndRefresh:async e=>{y(!1),e&&P()}}),(0,h.jsx)(j.Z,{label:"".concat(t.toUpperCase()," Configurations"),actions:(0,h.jsx)(C.Z,{})}),(0,h.jsx)(i.Xgh,{children:(0,h.jsxs)(i.rjZ,{container:!0,children:[(0,h.jsxs)(i.rjZ,{item:!0,xs:12,sx:{...p.OR.actionsTray,justifyContent:"flex-end",gap:8},children:[(0,h.jsx)(d.s,{scopes:[c.Ft.ADMIN_CONFIG_UPDATE],resource:c.C3,errorProps:{disabled:!0},children:(0,h.jsx)(f.Z,{tooltip:"Refresh",children:(0,h.jsx)(i.zxk,{id:"refresh-keys",variant:"regular",icon:(0,h.jsx)(i.DuK,{}),onClick:()=>A(!0)})})}),(0,h.jsx)(d.s,{scopes:[c.Ft.ADMIN_CONFIG_UPDATE],resource:c.C3,errorProps:{disabled:!0},children:(0,h.jsx)(f.Z,{tooltip:"Create ".concat(t," configuration"),children:(0,h.jsx)(i.zxk,{id:"create-idp",label:"Create Configuration",variant:"callAction",icon:(0,h.jsx)(i.dtP,{}),onClick:()=>D("/identity/idp/".concat(t,"/configurations/add-idp"))})})})]}),(0,h.jsx)(i.rjZ,{item:!0,xs:12,children:(0,h.jsx)(d.s,{scopes:[c.Ft.ADMIN_CONFIG_UPDATE],resource:c.C3,errorProps:{disabled:!0},children:(0,h.jsx)(i.wQF,{itemActions:k,columns:[{label:"Name",elementKey:"name"},{label:"Type",elementKey:"type"},{label:"Enabled",elementKey:"enabled"}],isLoading:_,records:I,entityName:"Keys",idField:"name"})})})]})})]})},m=()=>(0,h.jsx)(D,{idpType:"openid"})}}]);
+//# sourceMappingURL=1329.b71d618a.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1329.b71d618a.chunk.js.map b/portal-ui/build/static/js/1329.b71d618a.chunk.js.map
new file mode 100644
index 000000000..962ced278
--- /dev/null
+++ b/portal-ui/build/static/js/1329.b71d618a.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1329.b71d618a.chunk.js","mappings":"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","sources":["screens/Console/IDP/DeleteIDPConfigurationModal.tsx","screens/Console/IDP/IDPConfigurations.tsx","screens/Console/IDP/IDPOpenIDConfigurations.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\n\ninterface IDeleteIDPConfigurationModalProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n idp: string;\n idpType: string;\n}\n\nconst DeleteIDPConfigurationModal = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n idp,\n idpType,\n}: IDeleteIDPConfigurationModalProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = (res: any) => {\n closeDeleteModalAndRefresh(true);\n dispatch(setServerNeedsRestart(res.restart === true));\n };\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!idp) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\"DELETE\", `/api/v1/idp/${idpType}/${idp}`);\n };\n\n const displayName = idp === \"_\" ? \"Default\" : idp;\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete IDP {displayName}{\" \"}\n configuration? \n \n }\n />\n );\n};\n\nexport default DeleteIDPConfigurationModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { AddIcon, Button, PageLayout, RefreshIcon, Grid, DataTable } from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { useAppDispatch } from \"../../../store\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport DeleteIDPConfigurationModal from \"./DeleteIDPConfigurationModal\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\ntype IDPConfigurationsProps = {\n idpType: string;\n};\n\nconst IDPConfigurations = ({ idpType }: IDPConfigurationsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedIDP, setSelectedIDP] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [records, setRecords] = useState([]);\n\n const deleteIDP = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_CONFIG_UPDATE,\n ]);\n\n const viewIDP = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_CONFIG_UPDATE,\n ]);\n\n const displayIDPs = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_CONFIG_UPDATE,\n ]);\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n if (loading) {\n if (displayIDPs) {\n api.idp\n .listConfigurations(idpType)\n .then((res) => {\n setLoading(false);\n if (res.data.results) {\n setRecords(\n res.data.results.map((r: any) => {\n r.name = r.name === \"_\" ? \"Default\" : r.name;\n r.enabled = r.enabled === true ? \"Enabled\" : \"Disabled\";\n return r;\n }),\n );\n }\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n } else {\n setLoading(false);\n }\n }\n }, [loading, setLoading, setRecords, dispatch, displayIDPs, idpType]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const confirmDeleteIDP = (idp: string) => {\n setDeleteOpen(true);\n idp = idp === \"Default\" ? \"_\" : idp;\n setSelectedIDP(idp);\n };\n\n const viewAction = (idp: any) => {\n let name = idp.name === \"Default\" ? \"_\" : idp.name;\n navigate(`/identity/idp/${idpType}/configurations/${name}`);\n };\n\n const closeDeleteModalAndRefresh = async (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !viewIDP,\n },\n {\n type: \"delete\",\n onClick: confirmDeleteIDP,\n sendOnlyId: true,\n disableButtonFunction: (idp: string) => !deleteIDP || idp === \"Default\",\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"idp_configs\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n \n )}\n }\n />\n \n \n \n \n \n }\n onClick={() => setLoading(true)}\n />\n \n \n \n \n }\n onClick={() =>\n navigate(`/identity/idp/${idpType}/configurations/add-idp`)\n }\n />\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default IDPConfigurations;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport IDPConfigurations from \"./IDPConfigurations\";\n\nconst IDPOpenIDConfigurations = () => {\n return ;\n};\n\nexport default IDPOpenIDConfigurations;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","idp","idpType","dispatch","useAppDispatch","deleteLoading","invokeDeleteApi","useApi","res","setServerNeedsRestart","restart","err","setErrorSnackMessage","displayName","_jsx","ConfirmDialog","title","concat","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","onClose","confirmButtonProps","disabled","confirmationContent","_jsxs","Fragment","children","navigate","useNavigate","setDeleteOpen","useState","selectedIDP","setSelectedIDP","loading","setLoading","records","setRecords","deleteIDP","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","ADMIN_CONFIG_UPDATE","viewIDP","displayIDPs","useEffect","fetchRecords","api","listConfigurations","then","data","results","map","r","name","enabled","catch","errorToHandler","error","tableActions","type","onClick","disableButtonFunction","sendOnlyId","setHelpName","DeleteIDPConfigurationModal","async","refresh","PageHeaderWrapper","label","toUpperCase","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","actionsTray","justifyContent","gap","SecureComponent","scopes","resource","errorProps","TooltipWrapper","tooltip","Button","id","variant","icon","RefreshIcon","AddIcon","DataTable","itemActions","columns","elementKey","entityName","idField","IDPOpenIDConfigurations","IDPConfigurations"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1329.df839007.chunk.js b/portal-ui/build/static/js/1329.df839007.chunk.js
deleted file mode 100644
index 353dbfc98..000000000
--- a/portal-ui/build/static/js/1329.df839007.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1329],{51270:function(e,n,t){var i=t(29439),r=t(72791),o=t(29945),s=t(87995),c=t(44690),a=t(9505),u=t(23508),l=t(80184);n.Z=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,d=e.idp,f=e.idpType,p=(0,c.TL)(),x=(0,a.Z)((function(e){n(!0),p((0,s.cN)(!0===e.restart))}),(function(e){return p((0,s.Ih)(e))})),j=(0,i.Z)(x,2),C=j[0],h=j[1];if(!d)return null;var D="_"===d?"Default":d;return(0,l.jsx)(u.Z,{title:"Delete ".concat(D),confirmText:"Delete",isOpen:t,titleIcon:(0,l.jsx)(o.NvT,{}),isLoading:C,onConfirm:function(){h("DELETE","/api/v1/idp/".concat(f,"/").concat(d))},onClose:function(){return n(!1)},confirmButtonProps:{disabled:C},confirmationContent:(0,l.jsxs)(r.Fragment,{children:["Are you sure you want to delete IDP ",(0,l.jsx)("b",{children:D})," ","configuration? ",(0,l.jsx)("br",{})]})})}},31329:function(e,n,t){t.r(n),t.d(n,{default:function(){return Z}});var i=t(72791),r=t(1413),o=t(74165),s=t(15861),c=t(29439),a=t(29945),u=t(57689),l=t(31776),d=t(82342),f=t(44690),p=t(56087),x=t(38442),j=t(87995),C=t(23814),h=t(27454),D=t(51270),m=t(47974),y=t(99670),b=t(80184),F=function(e){var n=e.idpType,t=(0,f.TL)(),F=(0,u.s0)(),Z=(0,i.useState)(!1),_=(0,c.Z)(Z,2),A=_[0],I=_[1],T=(0,i.useState)(""),g=(0,c.Z)(T,2),N=g[0],v=g[1],E=(0,i.useState)(!1),k=(0,c.Z)(E,2),P=k[0],O=k[1],M=(0,i.useState)([]),w=(0,c.Z)(M,2),U=w[0],G=w[1],K=(0,x.F)(p.C3,[p.Ft.ADMIN_CONFIG_UPDATE]),L=(0,x.F)(p.C3,[p.Ft.ADMIN_CONFIG_UPDATE]),S=(0,x.F)(p.C3,[p.Ft.ADMIN_CONFIG_UPDATE]);(0,i.useEffect)((function(){R()}),[]),(0,i.useEffect)((function(){P&&(S?l.h.idp.listConfigurations(n).then((function(e){O(!1),e.data.results&&G(e.data.results.map((function(e){return e.name="_"===e.name?"Default":e.name,e.enabled=!0===e.enabled?"Enabled":"Disabled",e})))})).catch((function(e){O(!1),t((0,j.Ih)((0,d.g)(e.error)))})):O(!1))}),[P,O,G,t,S,n]);var R=function(){O(!0)},B=function(){var e=(0,s.Z)((0,o.Z)().mark((function e(n){return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:I(!1),n&&R();case 2:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),z=[{type:"view",onClick:function(e){var t="Default"===e.name?"_":e.name;F("/identity/idp/".concat(n,"/configurations/").concat(t))},disableButtonFunction:function(){return!L}},{type:"delete",onClick:function(e){I(!0),v(e="Default"===e?"_":e)},sendOnlyId:!0,disableButtonFunction:function(e){return!K||"Default"===e}}];return(0,i.useEffect)((function(){t((0,j.Sc)("idp_configs"))}),[]),(0,b.jsxs)(i.Fragment,{children:[A&&(0,b.jsx)(D.Z,{deleteOpen:A,idp:N,idpType:n,closeDeleteModalAndRefresh:B}),(0,b.jsx)(m.Z,{label:"".concat(n.toUpperCase()," Configurations"),actions:(0,b.jsx)(y.Z,{})}),(0,b.jsx)(a.Xgh,{children:(0,b.jsxs)(a.rjZ,{container:!0,children:[(0,b.jsxs)(a.rjZ,{item:!0,xs:12,sx:(0,r.Z)((0,r.Z)({},C.OR.actionsTray),{},{justifyContent:"flex-end",gap:8}),children:[(0,b.jsx)(x.s,{scopes:[p.Ft.ADMIN_CONFIG_UPDATE],resource:p.C3,errorProps:{disabled:!0},children:(0,b.jsx)(h.Z,{tooltip:"Refresh",children:(0,b.jsx)(a.zxk,{id:"refresh-keys",variant:"regular",icon:(0,b.jsx)(a.DuK,{}),onClick:function(){return O(!0)}})})}),(0,b.jsx)(x.s,{scopes:[p.Ft.ADMIN_CONFIG_UPDATE],resource:p.C3,errorProps:{disabled:!0},children:(0,b.jsx)(h.Z,{tooltip:"Create ".concat(n," configuration"),children:(0,b.jsx)(a.zxk,{id:"create-idp",label:"Create Configuration",variant:"callAction",icon:(0,b.jsx)(a.dtP,{}),onClick:function(){return F("/identity/idp/".concat(n,"/configurations/add-idp"))}})})})]}),(0,b.jsx)(a.rjZ,{item:!0,xs:12,children:(0,b.jsx)(x.s,{scopes:[p.Ft.ADMIN_CONFIG_UPDATE],resource:p.C3,errorProps:{disabled:!0},children:(0,b.jsx)(a.wQF,{itemActions:z,columns:[{label:"Name",elementKey:"name"},{label:"Type",elementKey:"type"},{label:"Enabled",elementKey:"enabled"}],isLoading:P,records:U,entityName:"Keys",idField:"name"})})})]})})]})},Z=function(){return(0,b.jsx)(F,{idpType:"openid"})}}}]);
-//# sourceMappingURL=1329.df839007.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1329.df839007.chunk.js.map b/portal-ui/build/static/js/1329.df839007.chunk.js.map
deleted file mode 100644
index 108b5a525..000000000
--- a/portal-ui/build/static/js/1329.df839007.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1329.df839007.chunk.js","mappings":"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","sources":["screens/Console/IDP/DeleteIDPConfigurationModal.tsx","screens/Console/IDP/IDPConfigurations.tsx","screens/Console/IDP/IDPOpenIDConfigurations.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\n\ninterface IDeleteIDPConfigurationModalProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n idp: string;\n idpType: string;\n}\n\nconst DeleteIDPConfigurationModal = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n idp,\n idpType,\n}: IDeleteIDPConfigurationModalProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = (res: any) => {\n closeDeleteModalAndRefresh(true);\n dispatch(setServerNeedsRestart(res.restart === true));\n };\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!idp) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\"DELETE\", `/api/v1/idp/${idpType}/${idp}`);\n };\n\n const displayName = idp === \"_\" ? \"Default\" : idp;\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete IDP {displayName}{\" \"}\n configuration? \n \n }\n />\n );\n};\n\nexport default DeleteIDPConfigurationModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { AddIcon, Button, PageLayout, RefreshIcon, Grid, DataTable } from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { useAppDispatch } from \"../../../store\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport DeleteIDPConfigurationModal from \"./DeleteIDPConfigurationModal\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\ntype IDPConfigurationsProps = {\n idpType: string;\n};\n\nconst IDPConfigurations = ({ idpType }: IDPConfigurationsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedIDP, setSelectedIDP] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [records, setRecords] = useState([]);\n\n const deleteIDP = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_CONFIG_UPDATE,\n ]);\n\n const viewIDP = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_CONFIG_UPDATE,\n ]);\n\n const displayIDPs = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_CONFIG_UPDATE,\n ]);\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n if (loading) {\n if (displayIDPs) {\n api.idp\n .listConfigurations(idpType)\n .then((res) => {\n setLoading(false);\n if (res.data.results) {\n setRecords(\n res.data.results.map((r: any) => {\n r.name = r.name === \"_\" ? \"Default\" : r.name;\n r.enabled = r.enabled === true ? \"Enabled\" : \"Disabled\";\n return r;\n }),\n );\n }\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n } else {\n setLoading(false);\n }\n }\n }, [loading, setLoading, setRecords, dispatch, displayIDPs, idpType]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const confirmDeleteIDP = (idp: string) => {\n setDeleteOpen(true);\n idp = idp === \"Default\" ? \"_\" : idp;\n setSelectedIDP(idp);\n };\n\n const viewAction = (idp: any) => {\n let name = idp.name === \"Default\" ? \"_\" : idp.name;\n navigate(`/identity/idp/${idpType}/configurations/${name}`);\n };\n\n const closeDeleteModalAndRefresh = async (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !viewIDP,\n },\n {\n type: \"delete\",\n onClick: confirmDeleteIDP,\n sendOnlyId: true,\n disableButtonFunction: (idp: string) => !deleteIDP || idp === \"Default\",\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"idp_configs\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n \n )}\n }\n />\n \n \n \n \n \n }\n onClick={() => setLoading(true)}\n />\n \n \n \n \n }\n onClick={() =>\n navigate(`/identity/idp/${idpType}/configurations/add-idp`)\n }\n />\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default IDPConfigurations;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport IDPConfigurations from \"./IDPConfigurations\";\n\nconst IDPOpenIDConfigurations = () => {\n return ;\n};\n\nexport default IDPOpenIDConfigurations;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","idp","idpType","dispatch","useAppDispatch","_useApi","useApi","res","setServerNeedsRestart","restart","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","displayName","_jsx","ConfirmDialog","title","concat","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onClose","confirmButtonProps","disabled","confirmationContent","_jsxs","Fragment","children","navigate","useNavigate","_useState","useState","_useState2","setDeleteOpen","_useState3","_useState4","selectedIDP","setSelectedIDP","_useState5","_useState6","loading","setLoading","_useState7","_useState8","records","setRecords","deleteIDP","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","ADMIN_CONFIG_UPDATE","viewIDP","displayIDPs","useEffect","fetchRecords","api","listConfigurations","then","data","results","map","r","name","enabled","catch","errorToHandler","error","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","refresh","wrap","_context","prev","next","stop","_x","apply","arguments","tableActions","type","onClick","disableButtonFunction","sendOnlyId","setHelpName","DeleteIDPConfigurationModal","PageHeaderWrapper","label","toUpperCase","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","_objectSpread","actionsTray","justifyContent","gap","SecureComponent","scopes","resource","errorProps","TooltipWrapper","tooltip","Button","id","variant","icon","RefreshIcon","AddIcon","DataTable","itemActions","columns","elementKey","entityName","idField","IDPConfigurations"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1432.1b192c18.chunk.js b/portal-ui/build/static/js/1432.1b192c18.chunk.js
deleted file mode 100644
index 469964915..000000000
--- a/portal-ui/build/static/js/1432.1b192c18.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1432,4770],{59447:function(e,n,t){var i=t(93433),o=t(29439),a=t(72791),r=t(26181),l=t.n(r),s=t(29945),c=t(80184);n.Z=function(e){var n=e.elements,t=e.name,r=e.label,u=e.tooltip,d=void 0===u?"":u,f=e.commonPlaceholder,p=void 0===f?"":f,h=e.onChange,m=e.withBorder,v=void 0!==m&&m,x=(0,a.useState)([""]),g=(0,o.Z)(x,2),b=g[0],y=g[1],j=(0,a.createRef)();(0,a.useEffect)((function(){if(1===b.length&&""===b[0]&&n&&""!==n){var e=n.split(",");e.push(""),y(e)}}),[n,b]),(0,a.useEffect)((function(){if(b.length>1){var e=j.current;e&&e.scrollIntoView(!1)}}),[b,j]);var k=(0,a.useCallback)((function(e){h(e)}),[h]),_=(0,a.useRef)(!0);(0,a.useEffect)((function(){if(_.current)_.current=!1;else{var e=b.filter((function(e){return""!==e.trim()})).join(",");k(e)}}),[b]);var C=function(e){e.persist();var n=(0,i.Z)(b),t=l()(e.target,"dataset.index","0");n[parseInt(t)]=e.target.value,y(n)},S=b.map((function(e,n){return(0,c.jsx)(s.Wzg,{id:"".concat(t,"-").concat(n.toString()),label:"",name:"".concat(t,"-").concat(n.toString()),value:b[n],onChange:C,index:n,placeholder:p,overlayIcon:n===b.length-1?(0,c.jsx)(s.dtP,{}):null,overlayAction:function(){!function(e){if(""!==e[e.length-1].trim()){var n=(0,i.Z)(e);n.push(""),y(n)}}(b)}},"csv-multi-".concat(t,"-").concat(n.toString()))}));return(0,c.jsx)(a.Fragment,{children:(0,c.jsxs)(s.xuv,{sx:{display:"flex"},className:"inputItem",children:[(0,c.jsxs)(s.AZs,{sx:{alignItems:"flex-start"},children:[(0,c.jsx)("span",{children:r}),""!==d&&(0,c.jsx)(s.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,c.jsx)(s.ua7,{tooltip:d,placement:"top",children:(0,c.jsx)(s.xuv,{className:d,children:(0,c.jsx)(s.byK,{})})})})]}),(0,c.jsxs)(s.xuv,{withBorders:v,sx:{width:"100%",overflowY:"auto",height:150,position:"relative"},children:[S,(0,c.jsx)("div",{ref:j})]})]})})}},11432:function(e,n,t){t.r(n),t.d(n,{default:function(){return B}});var i=t(74165),o=t(15861),a=t(29439),r=t(72791),l=t(29945),s=t(58493),c=t(57689),u=t(26181),d=t.n(u),f=t(78687),p=t(31776),h=t(82342),m=t(87995),v=t(44690),x=t(93433),g=t(56028),b=t(23814),y=t(80184),j=function(e){var n=e.open,t=e.type,i=e.onCloseEndpoint,o=(0,r.useState)(""),s=(0,a.Z)(o,2),c=s[0],u=s[1],d=(0,r.useState)(""),f=(0,a.Z)(d,2),j=f[0],k=f[1],_=(0,r.useState)(""),C=(0,a.Z)(_,2),S=C[0],w=C[1],E=(0,r.useState)(!1),Z=(0,a.Z)(E,2),A=Z[0],I=Z[1],T=(0,r.useState)(["name","endpoint"]),q=(0,a.Z)(T,2),L=q[0],D=q[1],N=(0,r.useState)(["name","endpoint","auth-token"]),R=(0,a.Z)(N,2),z=R[0],W=R[1],P=(0,v.TL)(),F=function(e){W(z.filter((function(n){return n!==e})))},B=function(e,n){L.includes(e)&&n?D(L.filter((function(n){return n!==e}))):n||L.includes(e)||D([].concat((0,x.Z)(L),[e]))},M="Add new Webhook",O=(0,y.jsx)(l.tYf,{});switch(t){case"logger_webhook":M="New Logger Webhook",O=(0,y.jsx)(l.zD0,{});break;case"audit_webhook":M="New Audit Webhook",O=(0,y.jsx)(l.Pd4,{})}return(0,y.jsx)(r.Fragment,{children:(0,y.jsxs)(g.Z,{modalOpen:n,title:M,onClose:i,titleIcon:O,children:[(0,y.jsxs)(l.ltY,{containerPadding:!1,withBorders:!1,children:[(0,y.jsx)(l.Wzg,{id:"name",name:"name",onChange:function(e){F("name"),u(e.target.value),B("name",e.target.validity.valid)},error:L.includes("name")&&!z.includes("name")?"Invalid Name":"",label:"Name",value:c,pattern:"^(?=.*[a-zA-Z0-9]).{1,}$",required:!0}),(0,y.jsx)(l.Wzg,{id:"endpoint",name:"endpoint",onChange:function(e){F("endpoint"),k(e.target.value),B("endpoint",e.target.validity.valid)},error:L.includes("endpoint")&&!z.includes("endpoint")?"Invalid Endpoint set":"",label:"Endpoint",value:j,pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",required:!0}),(0,y.jsx)(l.Wzg,{id:"auth-token",name:"auth-token",onChange:function(e){F("auth-token"),w(e.target.value)},label:"Auth Token",value:S})]}),A&&(0,y.jsx)(l.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,y.jsx)(l.kod,{})}),(0,y.jsxs)(l.rjZ,{item:!0,xs:12,sx:b.ID.modalButtonBar,children:[(0,y.jsx)(l.zxk,{id:"reset",type:"button",variant:"regular",disabled:A,onClick:i,label:"Cancel",sx:{marginRight:10}}),(0,y.jsx)(l.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:A||0!==L.length,label:"Save",onClick:function(){if(!A&&0===L.length)if(""!==c.trim())if(""!==j.trim()){I(!0);var e={key_values:[{key:"endpoint",value:j},{key:"auth_token",value:S}],arn_resource_id:c};p.h.configs.setConfig(t,e).then((function(e){I(!1),P((0,m.cN)(e.data.restart||!1)),e.data.restart||P((0,m.y1)("Configuration saved successfully")),i(),P((0,m.Ie)(!0))})).catch((function(e){I(!1),P((0,m.Ih)((0,h.g)(e.error)))}))}else D([].concat((0,x.Z)(L),["endpoint"]));else D([].concat((0,x.Z)(L),["name"]))}})]})]})})},k=t(23508),_=function(e){var n=e.modalOpen,t=e.onClose,i=e.selectedARN,o=(0,r.useState)(!1),s=(0,a.Z)(o,2),c=s[0],u=s[1],d=(0,v.TL)();(0,r.useEffect)((function(){c&&p.h.configs.resetConfig(i).then((function(){u(!1),d((0,m.cN)(!0)),d((0,m.Ie)(!0)),t()})).catch((function(e){u(!1),d((0,m.Ih)((0,h.g)(e.error)))}))}),[c,d,t,i]);var f=!i.includes(":"),x="Are you sure you want to delete the Configured Endpoint";return f&&(x="Are you sure you want to reset the Default"),(0,y.jsx)(k.Z,{title:f?"Reset Default Webhook":"Delete Webhook",confirmText:f?"Reset":"Delete",isOpen:n,isLoading:c,onConfirm:function(){u(!0)},titleIcon:(0,y.jsx)(l.NvT,{}),onClose:t,confirmationContent:(0,y.jsxs)(r.Fragment,{children:["".concat(x," "),(0,y.jsx)("strong",{children:i}),"?"]})})},C=function(e){var n,t,i,o,c,u,d=e.open,f=e.type,j=e.endpointInfo,k=e.onCloseEndpoint,_=(0,r.useState)(""),C=(0,a.Z)(_,2),S=C[0],w=C[1],E=(0,r.useState)(""),Z=(0,a.Z)(E,2),A=Z[0],I=Z[1],T=(0,r.useState)(""),q=(0,a.Z)(T,2),L=q[0],D=q[1],N=(0,r.useState)("on"),R=(0,a.Z)(N,2),z=R[0],W=R[1],P=(0,r.useState)(!1),F=(0,a.Z)(P,2),B=F[0],M=F[1],O=(0,r.useState)([]),K=(0,a.Z)(O,2),Y=K[0],V=K[1],H=(0,v.TL)();(0,r.useEffect)((function(){if(j){var e=j.key_values.find((function(e){return"endpoint"===e.key})),n=j.key_values.find((function(e){return"auth_token"===e.key})),t=j.key_values.find((function(e){return"enable"===e.key})),i=[];if(e){var o=e.value;""===o?i.push("endpoint"):I(o)}if(n){var a=n.value;""===a?i.push("auth-token"):D(a)}t&&"off"===t.value&&W(t.value),w(j.name||""),V(i)}}),[j]);var U=!S.includes(":"),G=j.key_values.filter((function(e){return!!e.env_override})),$=(0,s.F_)(G),J="Edit Webhook",Q=(0,y.jsx)(l.tYf,{});switch(f){case"logger_webhook":J="Edit ".concat(U?" the Default ":"","Logger Webhook"),Q=(0,y.jsx)(l.zD0,{});break;case"audit_webhook":J="Edit ".concat(U?" the Default ":"","Audit Webhook"),Q=(0,y.jsx)(l.Pd4,{})}return G.length>0&&(J="View env variable Webhook"),(0,y.jsx)(r.Fragment,{children:(0,y.jsx)(g.Z,{modalOpen:d,title:"".concat(J).concat(U?"":" - ".concat(S)),onClose:k,titleIcon:Q,children:(0,y.jsx)(l.ltY,{withBorders:!1,containerPadding:!1,children:G.length>0?(0,y.jsxs)(r.Fragment,{children:[(0,y.jsx)(l.bSr,{label:"Enabled",sx:{width:"100%"},actionButton:(0,y.jsx)(l.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,y.jsx)(l.ua7,{tooltip:$.enable?"This value is set from the ".concat((null===(n=$.enable)||void 0===n?void 0:n.overrideEnv)||"N/A"," environment variable"):"",placement:"left",children:(0,y.jsx)(l.zD0,{style:{width:20}})})}),children:(null===(t=$.enable)||void 0===t?void 0:t.value)||"-"}),(0,y.jsx)(l.bSr,{label:"Endpoint",sx:{width:"100%"},actionButton:(0,y.jsx)(l.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,y.jsx)(l.ua7,{tooltip:$.enable?"This value is set from the ".concat((null===(i=$.endpoint)||void 0===i?void 0:i.overrideEnv)||"N/A"," environment variable"):"",placement:"left",children:(0,y.jsx)(l.zD0,{style:{width:20}})})}),children:(null===(o=$.endpoint)||void 0===o?void 0:o.value)||"-"}),(0,y.jsx)(l.bSr,{label:"Auth Token",sx:{width:"100%"},actionButton:(0,y.jsx)(l.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,y.jsx)(l.ua7,{tooltip:$.enable?"This value is set from the ".concat((null===(c=$.auth_token)||void 0===c?void 0:c.overrideEnv)||"N/A"," environment variable"):"",placement:"left",children:(0,y.jsx)(l.zD0,{style:{width:20}})})}),children:(null===(u=$.auth_token)||void 0===u?void 0:u.value)||"-"})]}):(0,y.jsxs)(r.Fragment,{children:[(0,y.jsx)(l.rsf,{onChange:function(e){var n=e.target.checked?"on":"off";W(n)},id:"endpoint_enabled",name:"endpoint_enabled",label:"Enabled",value:"switch_on",checked:"on"===z}),(0,y.jsx)(l.Wzg,{id:"endpoint",name:"endpoint",onChange:function(e){I(e.target.value),function(e,n){Y.includes(e)&&n?V(Y.filter((function(n){return n!==e}))):n||Y.includes(e)||V([].concat((0,x.Z)(Y),[e]))}("endpoint",e.target.validity.valid)},error:Y.includes("endpoint")?"Invalid Endpoint set":"",label:"Endpoint",value:A,pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",required:!0}),(0,y.jsx)(l.Wzg,{id:"auth-token",name:"auth-token",onChange:function(e){D(e.target.value)},label:"Auth Token",value:L}),B&&(0,y.jsx)(l.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,y.jsx)(l.kod,{})}),(0,y.jsxs)(l.rjZ,{item:!0,sx:b.ID.modalButtonBar,children:[(0,y.jsx)(l.zxk,{id:"reset",type:"button",variant:"regular",disabled:B,onClick:k,label:"Cancel"}),(0,y.jsx)(l.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:B||0!==Y.length,label:"Update",onClick:function(){if(!B&&0===Y.length)if(A&&""!==A.trim()){M(!0);var e={key_values:[{key:"endpoint",value:A},{key:"auth_token",value:L},{key:"enable",value:z}]};p.h.configs.setConfig(S,e).then((function(e){M(!1),H((0,m.cN)(e.data.restart||!1)),e.data.restart||H((0,m.y1)("Configuration saved successfully")),k(),H((0,m.Ie)(!0))})).catch((function(e){M(!1),H((0,m.Ih)((0,h.g)(e.error)))}))}else V([].concat((0,x.Z)(Y),["endpoint"]))}})]})]})})})})},S=function(e){e.setResetConfigurationOpen;var n=e.WebhookSettingslist,t=e.type,i=(0,r.useState)(!1),o=(0,a.Z)(i,2),s=o[0],c=o[1],u=(0,r.useState)(!1),d=(0,a.Z)(u,2),f=d[0],p=d[1],h=(0,r.useState)(!1),m=(0,a.Z)(h,2),v=m[0],x=m[1],g=(0,r.useState)(""),b=(0,a.Z)(g,2),k=b[0],S=b[1],w=(0,r.useState)(null),E=(0,a.Z)(w,2),Z=E[0],A=E[1],I=[{type:"view",onClick:function(e){e.name&&(x(!0),A(e))}},{type:"delete",onClick:function(e){e.name&&(p(!0),S(e.name))},disableButtonFunction:function(e){var t=n.find((function(n){return n.name===e}));if(t){var i,o=null===(i=t.key_values)||void 0===i?void 0:i.filter((function(e){return!!e.env_override}));return!!(o&&o.length>0)}return!1}}];return(0,y.jsxs)(l.rjZ,{container:!0,children:[s&&(0,y.jsx)(j,{open:s,type:t,onCloseEndpoint:function(){c(!1)}}),f&&(0,y.jsx)(_,{modalOpen:f,onClose:function(){p(!1),S("")},selectedARN:k,type:t}),v&&Z&&(0,y.jsx)(C,{open:v,type:t,endpointInfo:Z,onCloseEndpoint:function(){x(!1),A(null)}}),(0,y.jsx)(l.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,y.jsx)(l.zxk,{id:"newWebhook",variant:"callAction",onClick:function(){c(!0)},children:"New Endpoint"})}),(0,y.jsx)(l.rjZ,{item:!0,xs:12,sx:{padding:"0 10px 10px"},children:(0,y.jsxs)(r.Fragment,{children:[(0,y.jsx)("h3",{children:"Currently Configured Endpoints"}),(0,y.jsx)(l.wQF,{columns:[{label:"Status",elementKey:"key_values",renderFunction:function(e){var n=e.find((function(e){return"enable"===e.key}));if(null!==n&&void 0!==n&&n.env_override){var t=null!==n&&void 0!==n&&n.env_override.value&&"on"!==(null===n||void 0===n?void 0:n.env_override.value)&&null!==n&&void 0!==n&&n.env_override.value?"Disabled":"Enabled";return(0,y.jsxs)(l.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,y.jsx)(l.zD0,{style:{fill:"#052F51",width:"14px"}}),t?"Enabled":"Disabled"]})}return n&&"on"!==n.value&&n.value?(0,y.jsxs)(l.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,y.jsx)(l.qwj,{style:{fill:"#C83B51",width:14,height:14}}),"Disabled"]}):(0,y.jsxs)(l.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,y.jsx)(l.Yp9,{style:{fill:"#4CCB92",width:14,height:14}}),"Enabled"]})},width:50},{label:"Name",elementKey:"name"},{label:"Endpoint",elementKey:"key_values",renderFunction:function(e){var n=e.find((function(e){return"endpoint"===e.key}));return n?n.env_override?n.env_override.value:n.value:""}}],itemActions:I,idField:"name",isLoading:!1,records:n,entityName:"endpoints",customPaperHeight:"calc(100vh - 750px)"})]})})]})},w=t(94770),E=t(90767),Z=function(e){var n=e.selectedConfiguration,t=e.className,i=void 0===t?"":t,o=(0,v.TL)(),u=(0,c.s0)(),x=(0,c.TH)().pathname,g=void 0===x?"":x,b=g.substring(g.lastIndexOf("/")+1);b="settings"===b?"region":b;var j=(0,r.useState)([]),k=(0,a.Z)(j,2),_=k[0],C=k[1],Z=(0,r.useState)(!1),A=(0,a.Z)(Z,2),I=A[0],T=A[1],q=(0,r.useState)([]),L=(0,a.Z)(q,2),D=L[0],N=L[1],R=(0,r.useState)([]),z=(0,a.Z)(R,2),W=z[0],P=z[1],F=(0,r.useState)(!1),B=(0,a.Z)(F,2),M=B[0],O=B[1],K=(0,r.useState)({}),Y=(0,a.Z)(K,2),V=Y[0],H=Y[1],U=(0,f.v9)((function(e){return e.system.loadingConfigurations}));(0,r.useEffect)((function(){o((0,m.Ie)(!0))}),[b,o]),(0,r.useEffect)((function(){if(U){var e=d()(n,"configuration_id",!1);if(e)return void p.h.configs.configInfo(e).then((function(n){P(n.data);var t=d()(n.data[0],"key_values",[]),i=s.DP[e].map((function(e){var n=t.find((function(n){return n.key===e.name})),i=(null===n||void 0===n?void 0:n.value)||"";return{key:e.name,value:e.customValueProcess?e.customValueProcess(i):i,env_override:null===n||void 0===n?void 0:n.env_override}}));N(i),H((0,s.F_)(i)),o((0,m.Ie)(!1))})).catch((function(e){o((0,m.Ie)(!1)),o((0,m.Ih)((0,h.g)(e.error)))}));o((0,m.Ie)(!1))}}),[U,n,o]),(0,r.useEffect)((function(){if(I){var e={key_values:(0,s.DD)(_)};p.h.configs.setConfig(n.configuration_id,e).then((function(e){T(!1),o((0,m.cN)(e.data.restart||!1)),o((0,m.Ie)(!0)),e.data.restart||o((0,m.y1)("Configuration saved successfully"))})).catch((function(e){T(!1),o((0,m.Ih)((0,h.g)(e.error)))}))}}),[I,o,n,_,u]);var G=(0,r.useCallback)((function(e){C(e)}),[C]),$=function(){O(!0)};return(0,y.jsx)(r.Fragment,{children:(0,y.jsxs)("div",{onMouseMove:function(){o((0,m.Sc)("settings_".concat(n.configuration_label)))},children:[M&&(0,y.jsx)(E.Z,{configurationName:n.configuration_id,closeResetModalAndRefresh:function(e){O(!1),o((0,m.cN)(e)),e&&o((0,m.Ie)(!0))},resetOpen:M}),U?(0,y.jsx)(l.rjZ,{item:!0,xs:12,sx:{textAlign:"center",paddingTop:"15px"},children:(0,y.jsx)(l.aNw,{})}):(0,y.jsx)(l.xuv,{sx:{padding:"15px",height:"100%"},children:"logger_webhook"===n.configuration_id||"audit_webhook"===n.configuration_id?(0,y.jsx)(S,{WebhookSettingslist:W,setResetConfigurationOpen:$,type:n.configuration_id}):(0,y.jsx)(r.Fragment,{children:(0,y.jsxs)("form",{noValidate:!0,onSubmit:function(e){e.preventDefault(),T(!0)},className:i,style:{height:"100%",display:"flex",flexFlow:"column"},children:[(0,y.jsx)(l.rjZ,{item:!0,xs:12,sx:{display:"grid",gridTemplateColumns:"1fr",gap:"10px"},children:(0,y.jsx)(w.default,{fields:s.DP[n.configuration_id],onChange:G,defaultVals:D,overrideEnv:V})}),(0,y.jsxs)(l.rjZ,{item:!0,xs:12,sx:{paddingTop:"15px ",textAlign:"right",maxHeight:"60px",display:"flex",alignItems:"center",justifyContent:"flex-end"},children:[(0,y.jsx)(l.zxk,{type:"button",id:"restore-defaults",variant:"secondary",onClick:$,label:"Restore Defaults"}),"\xa0 \xa0",(0,y.jsx)(l.zxk,{id:"save",type:"submit",variant:"callAction",disabled:I,label:"Save"})]})]})})})]})})},A=function(){var e=(0,c.TH)().pathname,n=void 0===e?"":e,t=n.substring(n.lastIndexOf("/")+1),i=s.bx.find((function(e){return e.configuration_id===t})),o="".concat(t);return(0,y.jsx)(l.rjZ,{item:!0,xs:12,sx:{height:"100%","& .identity_ldap, .api":{"& label":{minWidth:220,marginRight:0}}},children:i&&(0,y.jsx)(Z,{className:"".concat(o),selectedConfiguration:i})})},I=t(56087),T=t(47974),q=t(9505),L=t(45248),D=t(99779),N=t(27454),R=function(){var e=(0,f.I0)(),n=(0,q.Z)((function(e){(0,L.zZ)(new Blob([window.atob(e.value)]),"minio-server-config-".concat(D.ou.now().toFormat("LL-dd-yyyy-HH-mm-ss"),".conf"))}),(function(n){e((0,m.Ih)(n))})),t=(0,a.Z)(n,2),i=t[0],o=t[1];return(0,y.jsx)(N.Z,{tooltip:"Warning! The resulting file will contain server configuration information in plain text",children:(0,y.jsx)(l.zxk,{id:"export-config",onClick:function(){o("GET","api/v1/configs/export")},icon:(0,y.jsx)(l.rG2,{}),label:"Export",variant:"regular",disabled:i})})},z=function(){var e=(0,c.s0)(),n=(0,f.I0)(),t=(0,f.v9)((function(e){return e.system.serverNeedsRestart})),i=(0,r.useState)(void 0),o=(0,a.Z)(i,2),s=o[0],u=o[1],d=(0,r.useRef)(null),p=(0,q.Z)((function(e){n((0,m.cN)(!0)),u(!0)}),(function(e){n((0,m.Ih)(e))})),h=(0,a.Z)(p,2),v=h[0],x=h[1];(0,r.useEffect)((function(){!t&&s&&e(0)}),[t,s,e]);return(0,y.jsxs)(r.Fragment,{children:[(0,y.jsx)("input",{type:"file",onChange:function(e){if(null!==e&&void 0!==e&&null!==e.target.files&&void 0!==e.target.files){e.preventDefault();var n=(0,a.Z)(e.target.files,1)[0],t=new FormData,i=new Blob([n],{type:n.type});t.append("file",i,n.name),x("POST","api/v1/configs/import",t),e.target.value=""}},style:{display:"none"},ref:d}),(0,y.jsx)(N.Z,{tooltip:"The file must be valid and should have valid config values",children:(0,y.jsx)(l.zxk,{id:"import-config",onClick:function(){d&&d.current&&d.current.click()},icon:(0,y.jsx)(l._8t,{}),label:"Import",variant:"regular",disabled:v})})]})},W=t(99670),P=["region"],F=["cache"],B=function(){var e=(0,c.TH)().pathname,n=void 0===e?"":e,t=(0,v.TL)(),u=(0,c.s0)(),d=(0,r.useState)([]),f=(0,a.Z)(d,2),x=f[0],g=f[1],b=(0,r.useCallback)((0,o.Z)((0,i.Z)().mark((function e(){return(0,i.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:p.h.configs.listConfig().then((function(e){var n;if(e&&null!==e&&void 0!==e&&e.data&&null!==e&&void 0!==e&&null!==(n=e.data)&&void 0!==n&&n.configurations){var t,i=((null===e||void 0===e||null===(t=e.data)||void 0===t?void 0:t.configurations)||[]).reduce((function(e,n){var t=n.key,i=void 0===t?"":t;return F.includes(i)||e.push(i),e}),[]);g(i)}})).catch((function(e){t((0,m.Ih)((0,h.g)(e)))}));case 1:case"end":return e.stop()}}),e)}))),[t]);(0,r.useEffect)((function(){b(),t((0,m.Sc)("settings_Region"))}),[]);var j=s.bx.filter((function(e){var n=e.configuration_id;return P.includes(n)||x.includes(n)||!x.length}));return(0,y.jsxs)(r.Fragment,{children:[(0,y.jsx)(T.Z,{label:"Settings",actions:(0,y.jsx)(W.Z,{})}),(0,y.jsxs)(l.Xgh,{children:[(0,y.jsxs)(l.rjZ,{item:!0,xs:12,id:"settings-container",children:[(0,y.jsx)(l.UHn,{icon:(0,y.jsx)(l.ewm,{}),title:"MinIO Configuration:",actions:(0,y.jsxs)(l.xuv,{sx:{display:"flex",gap:10},children:[(0,y.jsx)(z,{}),(0,y.jsx)(R,{})]}),sx:{marginBottom:15}}),(0,y.jsx)(l.mQc,{currentTabOrPath:n,onTabClick:function(e){u(e)},useRouteTabs:!0,options:j.map((function(e){var n,t=e.configuration_id,i=e.configuration_label,o=e.icon;return{tabConfig:{id:"settings-tab-".concat(i),label:i,value:t,icon:o,to:(n=t,"".concat(I.gA.SETTINGS,"/").concat(n))}}})),routes:(0,y.jsxs)(c.Z5,{children:[j.map((function(e){return(0,y.jsx)(c.AW,{path:"".concat(e.configuration_id),element:(0,y.jsx)(A,{})},"configItem-".concat(e.configuration_label))})),(0,y.jsx)(c.AW,{path:"/",element:(0,y.jsx)(c.Fg,{to:"".concat(I.gA.SETTINGS,"/region")})})]})})]}),(0,y.jsx)(l.rjZ,{item:!0,xs:12,sx:{paddingTop:"15px"},children:(0,y.jsx)(l.KfX,{title:"Learn more about Configurations",iconComponent:(0,y.jsx)(l.ewm,{}),help:(0,y.jsxs)(r.Fragment,{children:["MinIO supports a variety of configurations ranging from encryption, compression, region, notifications, etc.",(0,y.jsx)("br",{}),(0,y.jsx)("br",{}),"You can learn more at our"," ",(0,y.jsx)("a",{href:"https://min.io/docs/minio/linux/reference/minio-mc-admin/mc-admin-config.html?ref=con#id4",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]})]})}},58493:function(e,n,t){t.d(n,{DD:function(){return u},DP:function(){return c},F_:function(){return f},_0:function(){return d},bx:function(){return s}});var i=t(4942),o=t(1413),a=t(93433),r=(t(72791),t(29945)),l=t(80184),s=[{icon:(0,l.jsx)(r.N1D,{}),configuration_id:"region",configuration_label:"Region"},{icon:(0,l.jsx)(r.jG4,{}),configuration_id:"compression",configuration_label:"Compression"},{icon:(0,l.jsx)(r.dNJ,{}),configuration_id:"api",configuration_label:"API"},{icon:(0,l.jsx)(r.JOn,{}),configuration_id:"heal",configuration_label:"Heal"},{icon:(0,l.jsx)(r.oTr,{}),configuration_id:"scanner",configuration_label:"Scanner"},{icon:(0,l.jsx)(r._m8,{}),configuration_id:"etcd",configuration_label:"Etcd"},{icon:(0,l.jsx)(r.zD0,{}),configuration_id:"logger_webhook",configuration_label:"Logger Webhook"},{icon:(0,l.jsx)(r.Pd4,{}),configuration_id:"audit_webhook",configuration_label:"Audit Webhook"},{icon:(0,l.jsx)(r.I$E,{}),configuration_id:"audit_kafka",configuration_label:"Audit Kafka"}],c={region:[{name:"name",required:!0,label:"Server Location",tooltip:'Name of the location of the server e.g. "us-west-rack2"',type:"string",placeholder:"e.g. us-west-rack-2"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",placeholder:"Enter custom notes if any"}],compression:[{name:"extensions",required:!1,label:"Extensions",tooltip:'Extensions to compress e.g. ".txt", ".log" or ".csv" - you can write one per field',type:"csv",placeholder:"Enter an Extension",withBorder:!0},{name:"mime_types",required:!1,label:"Mime Types",tooltip:'Mime types e.g. "text/*", "application/json" or "application/xml" - you can write one per field',type:"csv",placeholder:"Enter a Mime Type",withBorder:!0}],api:[{name:"requests_max",required:!1,label:"Requests Max",tooltip:"Maximum number of concurrent requests, e.g. '1600'",type:"number",placeholder:"Enter Requests Max"},{name:"cors_allow_origin",required:!1,label:"Cors Allow Origin",tooltip:"List of origins allowed for CORS requests",type:"csv",placeholder:"Enter allowed origin e.g. https://example.com"},{name:"replication_workers",required:!1,label:"Replication Workers",tooltip:"Number of replication workers, defaults to 100",type:"number",placeholder:"Enter Replication Workers"},{name:"replication_failed_workers",required:!1,label:"Replication Failed Workers",tooltip:"Number of replication workers for recently failed replicas, defaults to 4",type:"number",placeholder:"Enter Replication Failed Workers"}],heal:[{name:"bitrotscan",required:!1,label:"Bitrot Scan",tooltip:"Perform bitrot scan on disks when checking objects during scanner",type:"on|off"},{name:"max_sleep",required:!1,label:"Max Sleep",tooltip:"Maximum sleep duration between objects to slow down heal operation, e.g. 2s",type:"duration",placeholder:"Enter Max Sleep Duration"},{name:"max_io",required:!1,label:"Max IO",tooltip:"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3",type:"number",placeholder:"Enter Max IO"}],scanner:[{name:"delay",required:!1,label:"Delay Multiplier",tooltip:"Scanner delay multiplier, defaults to '10.0'",type:"number",placeholder:"Enter Delay"},{name:"max_wait",required:!1,label:"Max Wait",tooltip:"Maximum wait time between operations, defaults to '15s'",type:"duration",placeholder:"Enter Max Wait"},{name:"cycle",required:!1,label:"Cycle",tooltip:"Time duration between scanner cycles, defaults to '1m'",type:"duration",placeholder:"Enter Cycle"}],etcd:[{name:"endpoints",required:!0,label:"Endpoints",tooltip:'List of etcd endpoints e.g. "http://localhost:2379" - you can write one per field',type:"csv",placeholder:"Enter Endpoint"},{name:"path_prefix",required:!1,label:"Path Prefix",tooltip:'Namespace prefix to isolate tenants e.g. "customer1/"',type:"string",placeholder:"Enter Path Prefix"},{name:"coredns_path",required:!1,label:"Coredns Path",tooltip:'Shared bucket DNS records, default is "/skydns"',type:"string",placeholder:"Enter Coredns Path"},{name:"client_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_cert_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",multiline:!0,placeholder:"Enter custom notes if any"}],logger_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_kafka:[{name:"enable",required:!1,label:"Enable",tooltip:"Enable audit_kafka target",type:"on|off",customValueProcess:function(e){return""===e||"on"===e?"on":"off"}},{name:"brokers",required:!0,label:"Brokers",type:"csv",placeholder:"Enter Kafka Broker"},{name:"topic",required:!1,label:"Topic",type:"string",placeholder:"Enter Kafka Topic",tooltip:"Kafka topic used for bucket notifications"},{name:"sasl",required:!1,label:"Use SASL",tooltip:"Enable SASL (Simple Authentication and Security Layer) authentication",type:"on|off"},{name:"sasl_username",required:!1,label:"SASL Username",type:"string",placeholder:"Enter SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_password",required:!1,label:"SASL Password",type:"password",placeholder:"Enter SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_mechanism",required:!1,label:"SASL Mechanism",type:"string",placeholder:"Enter SASL Mechanism",tooltip:"SASL authentication mechanism"},{name:"tls",required:!1,label:"Use TLS",tooltip:"Enable TLS (Transport Layer Security)",type:"on|off"},{name:"tls_skip_verify",required:!1,label:"Skip TLS Verification",tooltip:"Trust server TLS without verification",type:"on|off"},{name:"client_tls_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_tls_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"tls_client_auth",required:!1,label:"TLS Client Auth",tooltip:"ClientAuth determines the Kafka server's policy for TLS client authorization",type:"string"},{name:"version",required:!1,label:"Version",tooltip:"Specify the version of the Kafka cluster",type:"string"}]},u=function(e){return e.filter((function(e){return""!==e.value}))},d=function(e,n,t){var i=e.target,o=i.value,r=i.checked,l=(0,a.Z)(t);return r?l.push(o):l=l.filter((function(e){return e!==o})),n(l),l},f=function(e){var n={};return e.forEach((function(e){if(e.env_override){var t={value:e.env_override.value||"",overrideEnv:e.env_override.name||""};n=(0,o.Z)((0,o.Z)({},n),{},(0,i.Z)({},e.key,t))}})),n}},94770:function(e,n,t){t.r(n),t.d(n,{valueDef:function(){return c}});var i=t(93433),o=t(29439),a=t(72791),r=t(29945),l=t(59447),s=t(80184),c=function(e,n,t){var i="on|off"===n?"off":"";if(t.length>0){var o=t.find((function(n){return n.key===e}));o&&(i=o.value||"")}return i};n.default=function(e){var n=e.onChange,t=e.fields,u=e.defaultVals,d=e.overrideEnv,f=(0,a.useState)([]),p=(0,o.Z)(f,2),h=p[0],m=p[1],v=t||[],x=u||[];(0,a.useEffect)((function(){var e=t.map((function(e){return{key:e.name,value:c(e.name,e.type,x)}}));m(e)}),[t,u]),(0,a.useEffect)((function(){n(h)}),[h]);var g=function(e,n,t){var o=(0,i.Z)(h);n=n.trim(),o[t]={key:e,value:n},m(o)},b=function(e,n){var t=h[n];if(t){var i=null===d||void 0===d?void 0:d["".concat(t.key)];if(i)return(0,s.jsx)(r.bSr,{label:e.label,actionButton:(0,s.jsx)(r.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,s.jsx)(r.ua7,{tooltip:"This value is set from the ".concat(i.overrideEnv," environment variable"),placement:"left",children:(0,s.jsx)(r.zD0,{style:{width:20}})})}),sx:{width:"100%"},children:i.value})}switch(e.type){case"on|off":var o=t?t.value:"off";return(0,s.jsx)(r.rsf,{onChange:function(t){var i=t.target.checked?"on":"off";g(e.name,i,n)},id:e.name,name:e.name,label:e.label,value:"switch_on",tooltip:e.tooltip,checked:"on"===o});case"csv":return(0,s.jsx)(l.Z,{elements:t?t.value:"",label:e.label,name:e.name,onChange:function(t){var i="";i=Array.isArray(t)?t.join(","):t,g(e.name,i,n)},tooltip:e.tooltip,commonPlaceholder:e.placeholder,withBorder:!0});case"comment":return(0,s.jsx)(r.q5m,{id:e.name,name:e.name,label:e.label,tooltip:e.tooltip,value:t?t.value:"",onChange:function(t){return g(e.name,t.target.value,n)},placeholder:e.placeholder});default:return(0,s.jsx)(r.Wzg,{id:e.name,name:e.name,label:e.label,tooltip:e.tooltip,value:t?t.value:"",onChange:function(t){return g(e.name,t.target.value,n)},placeholder:e.placeholder})}};return(0,s.jsx)(r.ltY,{withBorders:!1,containerPadding:!1,children:v.map((function(e,n){return(0,s.jsx)(a.Fragment,{children:b(e,n)},e.name)}))})}},90767:function(e,n,t){var i=t(29439),o=t(72791),a=t(31776),r=t(82342),l=t(23508),s=t(29945),c=t(87995),u=t(44690),d=t(80184);n.Z=function(e){var n=e.configurationName,t=e.closeResetModalAndRefresh,f=e.resetOpen,p=(0,u.TL)(),h=(0,o.useState)(!1),m=(0,i.Z)(h,2),v=m[0],x=m[1];(0,o.useEffect)((function(){v&&a.h.configs.resetConfig(n).then((function(){x(!1),t(!0)})).catch((function(e){x(!1),p((0,c.Ih)((0,r.g)(e.error)))}))}),[t,n,v,p]);return(0,d.jsx)(l.Z,{title:"Restore Defaults",confirmText:"Yes, Reset Configuration",isOpen:f,titleIcon:(0,d.jsx)(s.NvT,{}),isLoading:v,onConfirm:function(){x(!0)},onClose:function(){t(!1)},confirmationContent:(0,d.jsxs)(o.Fragment,{children:[v&&(0,d.jsx)(s.kod,{}),(0,d.jsxs)(o.Fragment,{children:["Are you sure you want to restore these configurations to default values?",(0,d.jsx)("br",{}),(0,d.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:"Please note that this may cause your system to not be accessible"})]})]})})}}}]);
-//# sourceMappingURL=1432.1b192c18.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1432.1b192c18.chunk.js.map b/portal-ui/build/static/js/1432.1b192c18.chunk.js.map
deleted file mode 100644
index da71b61d3..000000000
--- a/portal-ui/build/static/js/1432.1b192c18.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1432.1b192c18.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CSVMultiSelector/CSVMultiSelector.tsx","screens/Console/EventDestinations/WebhookSettings/AddEndpointModal.tsx","screens/Console/EventDestinations/WebhookSettings/DeleteWebhookEndpoint.tsx","screens/Console/EventDestinations/WebhookSettings/EditWebhookEndpoint.tsx","screens/Console/EventDestinations/WebhookSettings/WebhookSettings.tsx","screens/Console/EventDestinations/CustomForms/EditConfiguration.tsx","screens/Console/Configurations/ConfigurationPanels/ConfigurationForm.tsx","screens/Console/Configurations/ConfigurationPanels/ExportConfigButton.tsx","screens/Console/Configurations/ConfigurationPanels/ImportConfigButton.tsx","screens/Console/Configurations/ConfigurationPanels/ConfigurationOptions.tsx","screens/Console/Configurations/utils.tsx","screens/Console/EventDestinations/ConfTargetGeneric.tsx","screens/Console/EventDestinations/CustomForms/ResetConfigurationModal.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, {\n ChangeEvent,\n createRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n Fragment,\n} from \"react\";\nimport get from \"lodash/get\";\nimport { AddIcon, Box, HelpIcon, InputBox, InputLabel, Tooltip } from \"mds\";\n\ninterface ICSVMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n commonPlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst CSVMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n commonPlaceholder = \"\",\n onChange,\n withBorder = false,\n}: ICSVMultiSelector) => {\n const [currentElements, setCurrentElements] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentElements.length === 1 &&\n currentElements[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\",\");\n elementsSplit.push(\"\");\n\n setCurrentElements(elementsSplit);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [elements, currentElements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n if (currentElements.length > 1) {\n const refScroll = bottomList.current;\n if (refScroll) {\n refScroll.scrollIntoView(false);\n }\n }\n }, [currentElements, bottomList]);\n\n const onChangeCallback = useCallback(\n (newString: string) => {\n onChange(newString);\n },\n [onChange],\n );\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n const elementsString = currentElements\n .filter((element) => element.trim() !== \"\")\n .join(\",\");\n\n onChangeCallback(elementsString);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentElements]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = (elementsUp: string[]) => {\n if (elementsUp[elementsUp.length - 1].trim() !== \"\") {\n const cpList = [...elementsUp];\n cpList.push(\"\");\n setCurrentElements(cpList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeElement = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentElements];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentElements(updatedElement);\n };\n\n const inputs = currentElements.map((element, index) => {\n return (\n : null}\n overlayAction={() => {\n addEmptyLine(currentElements);\n }}\n />\n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n \n \n )}\n \n \n {inputs}\n \n \n \n \n );\n};\nexport default CSVMultiSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport {\n Button,\n ConsoleIcon,\n FormLayout,\n Grid,\n InputBox,\n PendingItemsIcon,\n ProgressBar,\n WebhookIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\n\ninterface IEndpointModal {\n open: boolean;\n type: string;\n onCloseEndpoint: () => void;\n}\n\nconst AddEndpointModal = ({ open, type, onCloseEndpoint }: IEndpointModal) => {\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [authToken, setAuthToken] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [invalidInputs, setInvalidInput] = useState([\n \"name\",\n \"endpoint\",\n ]);\n const [initialInputs, setInitialInputs] = useState([\n \"name\",\n \"endpoint\",\n \"auth-token\",\n ]);\n\n const dispatch = useAppDispatch();\n\n const saveWebhook = () => {\n if (saving) {\n return;\n }\n\n if (invalidInputs.length !== 0) {\n return;\n }\n\n if (name.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"name\"]);\n\n return;\n }\n\n if (endpoint.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"endpoint\"]);\n\n return;\n }\n\n setSaving(true);\n\n const payload = {\n key_values: [\n {\n key: \"endpoint\",\n value: endpoint,\n },\n {\n key: \"auth_token\",\n value: authToken,\n },\n ],\n arn_resource_id: name,\n };\n\n api.configs\n .setConfig(type, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n\n onCloseEndpoint();\n dispatch(configurationIsLoading(true));\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const initializeInput = (name: string) => {\n setInitialInputs(initialInputs.filter((item) => item !== name));\n };\n\n const validateInput = (name: string, valid: boolean) => {\n if (invalidInputs.includes(name) && valid) {\n setInvalidInput(invalidInputs.filter((item) => item !== name));\n return;\n }\n\n if (!valid && !invalidInputs.includes(name)) {\n setInvalidInput([...invalidInputs, name]);\n }\n };\n\n let title = \"Add new Webhook\";\n let icon = ;\n\n switch (type) {\n case \"logger_webhook\":\n title = \"New Logger Webhook\";\n icon = ;\n break;\n case \"audit_webhook\":\n title = \"New Audit Webhook\";\n icon = ;\n break;\n }\n\n return (\n \n \n \n ) => {\n initializeInput(\"name\");\n setName(event.target.value);\n validateInput(\"name\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"name\") && !initialInputs.includes(\"name\")\n ? \"Invalid Name\"\n : \"\"\n }\n label=\"Name\"\n value={name}\n pattern={\"^(?=.*[a-zA-Z0-9]).{1,}$\"}\n required\n />\n ) => {\n initializeInput(\"endpoint\");\n setEndpoint(event.target.value);\n validateInput(\"endpoint\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"endpoint\") &&\n !initialInputs.includes(\"endpoint\")\n ? \"Invalid Endpoint set\"\n : \"\"\n }\n label=\"Endpoint\"\n value={endpoint}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n required\n />\n ) => {\n initializeInput(\"auth-token\");\n setAuthToken(event.target.value);\n }}\n label=\"Auth Token\"\n value={authToken}\n />\n \n {saving && (\n \n \n \n )}\n \n \n \n \n \n \n );\n};\n\nexport default AddEndpointModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState, Fragment } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeleteWebhookEndpoint {\n modalOpen: boolean;\n onClose: () => void;\n selectedARN: string;\n type: string;\n}\n\nconst DeleteWebhookEndpoint = ({\n modalOpen,\n onClose,\n selectedARN,\n}: IDeleteWebhookEndpoint) => {\n const [deleteLoading, setDeleteLoading] = useState(false);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (deleteLoading) {\n api.configs\n .resetConfig(selectedARN)\n .then(() => {\n setDeleteLoading(false);\n dispatch(setServerNeedsRestart(true));\n dispatch(configurationIsLoading(true));\n onClose();\n })\n .catch((err) => {\n setDeleteLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [deleteLoading, dispatch, onClose, selectedARN]);\n\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n const defaultWH = !selectedARN.includes(\":\");\n\n let message = \"Are you sure you want to delete the Configured Endpoint\";\n\n // Main webhook, we just reset\n if (defaultWH) {\n message = \"Are you sure you want to reset the Default\";\n }\n\n return (\n }\n onClose={onClose}\n confirmationContent={\n \n {`${message} `}\n {selectedARN}?\n \n }\n />\n );\n};\n\nexport default DeleteWebhookEndpoint;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Button,\n ConsoleIcon,\n FormLayout,\n Grid,\n InputBox,\n PendingItemsIcon,\n ProgressBar,\n ReadBox,\n Switch,\n Tooltip,\n WebhookIcon,\n} from \"mds\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nimport { IConfigurationSys } from \"../../Configurations/types\";\nimport { overrideFields } from \"../../Configurations/utils\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IEndpointModal {\n open: boolean;\n type: string;\n endpointInfo: IConfigurationSys;\n onCloseEndpoint: () => void;\n}\n\nconst EditEndpointModal = ({\n open,\n type,\n endpointInfo,\n onCloseEndpoint,\n}: IEndpointModal) => {\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [authToken, setAuthToken] = useState(\"\");\n const [endpointState, setEndpointState] = useState(\"on\");\n const [saving, setSaving] = useState(false);\n const [invalidInputs, setInvalidInput] = useState([]);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (endpointInfo) {\n const endpointLocate = endpointInfo.key_values.find(\n (key) => key.key === \"endpoint\",\n );\n const tokenLocate = endpointInfo.key_values.find(\n (key) => key.key === \"auth_token\",\n );\n const enable = endpointInfo.key_values.find(\n (key) => key.key === \"enable\",\n );\n\n let invalidInputs: string[] = [];\n\n if (endpointLocate) {\n const endpointValue = endpointLocate.value;\n\n if (endpointValue === \"\") {\n invalidInputs.push(\"endpoint\");\n } else {\n setEndpoint(endpointValue);\n }\n }\n\n if (tokenLocate) {\n const tokenValue = tokenLocate.value;\n\n if (tokenValue === \"\") {\n invalidInputs.push(\"auth-token\");\n } else {\n setAuthToken(tokenValue);\n }\n }\n\n if (enable) {\n if (enable.value === \"off\") {\n setEndpointState(enable.value);\n }\n }\n\n setName(endpointInfo.name || \"\");\n setInvalidInput(invalidInputs);\n }\n }, [endpointInfo]);\n\n const updateWebhook = () => {\n if (saving) {\n return;\n }\n\n if (invalidInputs.length !== 0) {\n return;\n }\n\n if (!endpoint || endpoint.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"endpoint\"]);\n\n return;\n }\n\n setSaving(true);\n\n const payload = {\n key_values: [\n {\n key: \"endpoint\",\n value: endpoint,\n },\n {\n key: \"auth_token\",\n value: authToken,\n },\n {\n key: \"enable\",\n value: endpointState,\n },\n ],\n };\n\n api.configs\n .setConfig(name, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n\n onCloseEndpoint();\n dispatch(configurationIsLoading(true));\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const validateInput = (name: string, valid: boolean) => {\n if (invalidInputs.includes(name) && valid) {\n setInvalidInput(invalidInputs.filter((item) => item !== name));\n return;\n }\n\n if (!valid && !invalidInputs.includes(name)) {\n setInvalidInput([...invalidInputs, name]);\n }\n };\n\n const defaultWH = !name.includes(\":\");\n const hasOverride = endpointInfo.key_values.filter(\n (itm) => !!itm.env_override,\n );\n\n const overrideValues = overrideFields(hasOverride);\n\n let title = \"Edit Webhook\";\n let icon = ;\n\n switch (type) {\n case \"logger_webhook\":\n title = `Edit ${defaultWH ? \" the Default \" : \"\"}Logger Webhook`;\n icon = ;\n break;\n case \"audit_webhook\":\n title = `Edit ${defaultWH ? \" the Default \" : \"\"}Audit Webhook`;\n icon = ;\n break;\n }\n\n if (hasOverride.length > 0) {\n title = \"View env variable Webhook\";\n }\n\n return (\n \n \n \n {hasOverride.length > 0 ? (\n \n \n \n \n \n \n }\n >\n {overrideValues.enable?.value || \"-\"}\n \n \n \n \n \n \n }\n >\n {overrideValues.endpoint?.value || \"-\"}\n \n \n \n \n \n \n }\n >\n {overrideValues.auth_token?.value || \"-\"}\n \n \n ) : (\n \n ) => {\n const value = e.target.checked ? \"on\" : \"off\";\n setEndpointState(value);\n }}\n id={\"endpoint_enabled\"}\n name={\"endpoint_enabled\"}\n label={\"Enabled\"}\n value={\"switch_on\"}\n checked={endpointState === \"on\"}\n />\n ) => {\n setEndpoint(event.target.value);\n validateInput(\"endpoint\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"endpoint\")\n ? \"Invalid Endpoint set\"\n : \"\"\n }\n label=\"Endpoint\"\n value={endpoint}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n required\n />\n ) => {\n setAuthToken(event.target.value);\n }}\n label=\"Auth Token\"\n value={authToken}\n />\n {saving && (\n \n \n \n )}\n \n \n \n \n \n )}\n \n \n \n );\n};\n\nexport default EditEndpointModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { IConfigurationSys, IElementValue } from \"../../Configurations/types\";\nimport {\n Button,\n ConsoleIcon,\n DataTable,\n Grid,\n TierOfflineIcon,\n TierOnlineIcon,\n} from \"mds\";\nimport AddEndpointModal from \"./AddEndpointModal\";\nimport DeleteWebhookEndpoint from \"./DeleteWebhookEndpoint\";\nimport EditWebhookEndpoint from \"./EditWebhookEndpoint\";\nimport { Configuration } from \"api/consoleApi\";\n\ninterface WebhookSettingsProps {\n WebhookSettingslist: Configuration[];\n setResetConfigurationOpen: () => void;\n type: string;\n}\n\nconst WebhookSettings = ({\n setResetConfigurationOpen,\n WebhookSettingslist,\n type,\n}: WebhookSettingsProps) => {\n const [newEndpointOpen, setNewEndpointOpen] = useState(false);\n const [deleteWebhookOpen, setDeleteWebhookOpen] = useState(false);\n const [editWebhookOpen, setEditWebhookOpen] = useState(false);\n const [selectedARN, setSelectedARN] = useState(\"\");\n const [selectedEndpoint, setSelectedEndpoint] =\n useState(null);\n\n const renderEndpoint = (item: IElementValue[]) => {\n const endpointFilter = item.find((itm) => itm.key === \"endpoint\");\n\n if (endpointFilter) {\n if (endpointFilter.env_override) {\n return endpointFilter.env_override.value;\n }\n\n return endpointFilter.value;\n }\n\n return \"\";\n };\n\n const renderWebhookStatus = (item: IElementValue[]) => {\n const EnableFilter = item.find((itm) => itm.key === \"enable\");\n\n if (EnableFilter?.env_override) {\n const overrideEnabled =\n !EnableFilter?.env_override.value ||\n EnableFilter?.env_override.value === \"on\" ||\n !EnableFilter?.env_override.value\n ? \"Enabled\"\n : \"Disabled\";\n return (\n \n \n {overrideEnabled ? \"Enabled\" : \"Disabled\"}\n \n );\n }\n\n // If enable is not set, then enabled by default\n if (!EnableFilter || EnableFilter.value === \"on\" || !EnableFilter.value) {\n return (\n \n \n Enabled\n \n );\n }\n\n return (\n \n \n Disabled\n \n );\n };\n\n const onCloseDelete = () => {\n setDeleteWebhookOpen(false);\n setSelectedARN(\"\");\n };\n\n const onCloseEditWebhook = () => {\n setEditWebhookOpen(false);\n setSelectedEndpoint(null);\n };\n\n const actions = [\n {\n type: \"view\",\n onClick: (item: IConfigurationSys) => {\n if (item.name) {\n setEditWebhookOpen(true);\n setSelectedEndpoint(item);\n }\n },\n },\n {\n type: \"delete\",\n onClick: (item: IConfigurationSys) => {\n if (item.name) {\n setDeleteWebhookOpen(true);\n setSelectedARN(item.name);\n }\n },\n disableButtonFunction: (item: string) => {\n const wHook = WebhookSettingslist.find(\n (element) => element.name === item,\n );\n\n if (wHook) {\n const hasOverride = wHook.key_values?.filter(\n (itm) => !!itm.env_override,\n );\n\n // Has override values, we cannot delete.\n if (hasOverride && hasOverride.length > 0) {\n return true;\n }\n\n return false;\n }\n return false;\n },\n },\n ];\n return (\n \n {newEndpointOpen && (\n {\n setNewEndpointOpen(false);\n }}\n />\n )}\n {deleteWebhookOpen && (\n \n )}\n {editWebhookOpen && selectedEndpoint && (\n \n )}\n \n \n \n \n \n
Currently Configured Endpoints
\n \n \n \n \n );\n};\nexport default WebhookSettings;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Box, Button, Grid, Loader } from \"mds\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { Configuration, ConfigurationKV } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n fieldsConfigurations,\n overrideFields,\n removeEmptyFields,\n} from \"../../Configurations/utils\";\nimport {\n IConfigurationElement,\n IElementValue,\n IOverrideEnv,\n KVField,\n} from \"../../Configurations/types\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setHelpName,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport WebhookSettings from \"../WebhookSettings/WebhookSettings\";\nimport ConfTargetGeneric from \"../ConfTargetGeneric\";\nimport ResetConfigurationModal from \"./ResetConfigurationModal\";\n\ninterface IAddNotificationEndpointProps {\n selectedConfiguration: IConfigurationElement;\n className?: string;\n}\n\nconst EditConfiguration = ({\n selectedConfiguration,\n className = \"\",\n}: IAddNotificationEndpointProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const { pathname = \"\" } = useLocation();\n\n let selConfigTab = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n selConfigTab = selConfigTab === \"settings\" ? \"region\" : selConfigTab;\n\n //Local States\n const [valuesObj, setValueObj] = useState([]);\n const [saving, setSaving] = useState(false);\n const [configValues, setConfigValues] = useState([]);\n const [configSubsysList, setConfigSubsysList] = useState([]);\n const [resetConfigurationOpen, setResetConfigurationOpen] =\n useState(false);\n const [overrideEnvs, setOverrideEnvs] = useState({});\n\n const loadingConfig = useSelector(\n (state: AppState) => state.system.loadingConfigurations,\n );\n\n useEffect(() => {\n dispatch(configurationIsLoading(true));\n }, [selConfigTab, dispatch]);\n\n useEffect(() => {\n if (loadingConfig) {\n const configId = get(selectedConfiguration, \"configuration_id\", false);\n\n if (configId) {\n api.configs\n .configInfo(configId)\n .then((res) => {\n setConfigSubsysList(res.data);\n let values: ConfigurationKV[] = get(res.data[0], \"key_values\", []);\n\n const fieldsConfig: KVField[] = fieldsConfigurations[configId];\n\n const keyVals: IElementValue[] = fieldsConfig.map((field) => {\n const includedValue = values.find(\n (element: ConfigurationKV) => element.key === field.name,\n );\n const customValue = includedValue?.value || \"\";\n\n return {\n key: field.name,\n value: field.customValueProcess\n ? field.customValueProcess(customValue)\n : customValue,\n env_override: includedValue?.env_override,\n };\n });\n\n setConfigValues(keyVals);\n setOverrideEnvs(overrideFields(keyVals));\n dispatch(configurationIsLoading(false));\n })\n .catch((err) => {\n dispatch(configurationIsLoading(false));\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n\n return;\n }\n dispatch(configurationIsLoading(false));\n }\n }, [loadingConfig, selectedConfiguration, dispatch]);\n\n useEffect(() => {\n if (saving) {\n const payload = {\n key_values: removeEmptyFields(valuesObj),\n };\n api.configs\n .setConfig(selectedConfiguration.configuration_id, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n dispatch(configurationIsLoading(true));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [saving, dispatch, selectedConfiguration, valuesObj, navigate]);\n\n //Fetch Actions\n const submitForm = (event: React.FormEvent) => {\n event.preventDefault();\n setSaving(true);\n };\n\n const onValueChange = useCallback(\n (newValue: IElementValue[]) => {\n setValueObj(newValue);\n },\n [setValueObj],\n );\n\n const continueReset = (restart: boolean) => {\n setResetConfigurationOpen(false);\n dispatch(setServerNeedsRestart(restart));\n if (restart) {\n dispatch(configurationIsLoading(true));\n }\n };\n\n const resetConfigurationMOpen = () => {\n setResetConfigurationOpen(true);\n };\n\n return (\n \n
\n \n );\n};\n\nexport default EditConfiguration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { Grid } from \"mds\";\nimport { configurationElements } from \"../utils\";\nimport EditConfiguration from \"../../EventDestinations/CustomForms/EditConfiguration\";\n\nconst ConfigurationsList = () => {\n const { pathname = \"\" } = useLocation();\n\n const configName = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n\n const validActiveConfig = configurationElements.find(\n (element) => element.configuration_id === configName,\n );\n const containerClassName = `${configName}`;\n return (\n \n {validActiveConfig && (\n \n )}\n \n );\n};\n\nexport default ConfigurationsList;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, UploadIcon } from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport { performDownload } from \"../../../../common/utils\";\nimport { DateTime } from \"luxon\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useDispatch } from \"react-redux\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst ExportConfigButton = () => {\n const dispatch = useDispatch();\n const [isReqLoading, invokeApi] = useApi(\n (res: any) => {\n //base64 encoded information so decode before downloading.\n performDownload(\n new Blob([window.atob(res.value)]),\n `minio-server-config-${DateTime.now().toFormat(\n \"LL-dd-yyyy-HH-mm-ss\",\n )}.conf`,\n );\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n return (\n \n \n );\n};\n\nexport default ExportConfigButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport { Button, DownloadIcon } from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../../systemSlice\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AppState } from \"../../../../store\";\n\nconst ImportConfigButton = () => {\n const navigate = useNavigate();\n const dispatch = useDispatch();\n\n const needsRestart = useSelector(\n (state: AppState) => state.system.serverNeedsRestart,\n );\n\n const [refreshPage, setRefreshPage] = useState(\n undefined,\n );\n const fileUpload = useRef(null);\n\n const [isReqLoading, invokeApi] = useApi(\n (res: any) => {\n //base64 encoded information so decode before downloading.\n dispatch(setServerNeedsRestart(true)); //import should refreshPage as per mc.\n setRefreshPage(true);\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n useEffect(() => {\n if (!needsRestart && refreshPage) {\n navigate(0); // refresh the page.\n }\n }, [needsRestart, refreshPage, navigate]);\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n const [fileToUpload] = e.target.files;\n\n const formData = new FormData();\n const blobFile = new Blob([fileToUpload], { type: fileToUpload.type });\n\n formData.append(\"file\", blobFile, fileToUpload.name);\n // @ts-ignore\n invokeApi(\"POST\", `api/v1/configs/import`, formData);\n\n e.target.value = \"\";\n };\n\n return (\n \n \n \n \n \n );\n};\n\nexport default ImportConfigButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport {\n Box,\n Grid,\n HelpBox,\n PageLayout,\n ScreenTitle,\n SettingsIcon,\n Tabs,\n} from \"mds\";\n\nimport { configurationElements } from \"../utils\";\nimport {\n Navigate,\n Route,\n Routes,\n useLocation,\n useNavigate,\n} from \"react-router-dom\";\n\nimport ConfigurationForm from \"./ConfigurationForm\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport ExportConfigButton from \"./ExportConfigButton\";\nimport ImportConfigButton from \"./ImportConfigButton\";\n\nimport HelpMenu from \"../../HelpMenu\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"../../../../api\";\nimport { IElement } from \"../types\";\nimport { errorToHandler } from \"../../../../api/errors\";\n\nconst getRoutePath = (path: string) => {\n return `${IAM_PAGES.SETTINGS}/${path}`;\n};\n\n// region is not part of config subsystem list.\nconst NON_SUB_SYS_CONFIG_ITEMS = [\"region\"];\nconst IGNORED_CONFIG_SUB_SYS = [\"cache\"]; // cache config is not supported.\n\nconst ConfigurationOptions = () => {\n const { pathname = \"\" } = useLocation();\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [configSubSysList, setConfigSubSysList] = useState([]);\n const fetchConfigSubSysList = useCallback(async () => {\n api.configs\n .listConfig() // get a list of available config subsystems.\n .then((res) => {\n if (res && res?.data && res?.data?.configurations) {\n const confSubSysList = (res?.data?.configurations || []).reduce(\n (acc: string[], { key = \"\" }) => {\n if (!IGNORED_CONFIG_SUB_SYS.includes(key)) {\n acc.push(key);\n }\n return acc;\n },\n [],\n );\n\n setConfigSubSysList(confSubSysList);\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n }, [dispatch]);\n\n useEffect(() => {\n fetchConfigSubSysList();\n dispatch(setHelpName(\"settings_Region\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const availableConfigSubSys = configurationElements.filter(\n ({ configuration_id }: IElement) => {\n return (\n NON_SUB_SYS_CONFIG_ITEMS.includes(configuration_id) ||\n configSubSysList.includes(configuration_id) ||\n !configSubSysList.length\n );\n },\n );\n\n return (\n \n } />\n \n \n }\n title={\"MinIO Configuration:\"}\n actions={\n \n \n \n \n }\n sx={{ marginBottom: 15 }}\n />\n {\n navigate(path);\n }}\n useRouteTabs\n options={availableConfigSubSys.map((element) => {\n const { configuration_id, configuration_label, icon } = element;\n return {\n tabConfig: {\n id: `settings-tab-${configuration_label}`,\n label: configuration_label,\n value: configuration_id,\n icon: icon,\n to: getRoutePath(configuration_id),\n },\n };\n })}\n routes={\n \n {availableConfigSubSys.map((element) => (\n }\n />\n ))}\n }\n />\n \n }\n />\n \n \n }\n help={\n \n MinIO supports a variety of configurations ranging from\n encryption, compression, region, notifications, etc.\n \n \n You can learn more at our{\" \"}\n \n documentation\n \n .\n \n }\n />\n \n \n \n );\n};\n\nexport default ConfigurationOptions;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\nimport {\n CodeIcon,\n CompressIcon,\n ConsoleIcon,\n FindReplaceIcon,\n FirstAidIcon,\n KeyIcon,\n LogsIcon,\n PendingItemsIcon,\n PublicIcon,\n} from \"mds\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_kafka\",\n configuration_label: \"Audit Kafka\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\", \".log\" or \".csv\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\", \"application/json\" or \"application/xml\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation, e.g. 2s\",\n type: \"duration\",\n placeholder: \"Enter Max Sleep Duration\",\n },\n {\n name: \"max_io\",\n required: false,\n label: \"Max IO\",\n tooltip:\n \"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3\",\n type: \"number\",\n placeholder: \"Enter Max IO\",\n },\n ],\n scanner: [\n {\n name: \"delay\",\n required: false,\n label: \"Delay Multiplier\",\n tooltip: \"Scanner delay multiplier, defaults to '10.0'\",\n type: \"number\",\n placeholder: \"Enter Delay\",\n },\n {\n name: \"max_wait\",\n required: false,\n label: \"Max Wait\",\n tooltip: \"Maximum wait time between operations, defaults to '15s'\",\n type: \"duration\",\n placeholder: \"Enter Max Wait\",\n },\n {\n name: \"cycle\",\n required: false,\n label: \"Cycle\",\n tooltip: \"Time duration between scanner cycles, defaults to '1m'\",\n type: \"duration\",\n placeholder: \"Enter Cycle\",\n },\n ],\n etcd: [\n {\n name: \"endpoints\",\n required: true,\n label: \"Endpoints\",\n tooltip:\n 'List of etcd endpoints e.g. \"http://localhost:2379\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"path_prefix\",\n required: false,\n label: \"Path Prefix\",\n tooltip: 'Namespace prefix to isolate tenants e.g. \"customer1/\"',\n type: \"string\",\n placeholder: \"Enter Path Prefix\",\n },\n {\n name: \"coredns_path\",\n required: false,\n label: \"Coredns Path\",\n tooltip: 'Shared bucket DNS records, default is \"/skydns\"',\n type: \"string\",\n placeholder: \"Enter Coredns Path\",\n },\n {\n name: \"client_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_cert_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n multiline: true,\n placeholder: \"Enter custom notes if any\",\n },\n ],\n logger_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_kafka: [\n {\n name: \"enable\",\n required: false,\n label: \"Enable\",\n tooltip: \"Enable audit_kafka target\",\n type: \"on|off\",\n customValueProcess: (origValue: string) => {\n return origValue === \"\" || origValue === \"on\" ? \"on\" : \"off\";\n },\n },\n {\n name: \"brokers\",\n required: true,\n label: \"Brokers\",\n type: \"csv\",\n placeholder: \"Enter Kafka Broker\",\n },\n {\n name: \"topic\",\n required: false,\n label: \"Topic\",\n type: \"string\",\n placeholder: \"Enter Kafka Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n },\n {\n name: \"sasl\",\n required: false,\n label: \"Use SASL\",\n tooltip:\n \"Enable SASL (Simple Authentication and Security Layer) authentication\",\n type: \"on|off\",\n },\n {\n name: \"sasl_username\",\n required: false,\n label: \"SASL Username\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_password\",\n required: false,\n label: \"SASL Password\",\n type: \"password\",\n placeholder: \"Enter SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_mechanism\",\n required: false,\n label: \"SASL Mechanism\",\n type: \"string\",\n placeholder: \"Enter SASL Mechanism\",\n tooltip: \"SASL authentication mechanism\",\n },\n {\n name: \"tls\",\n required: false,\n label: \"Use TLS\",\n tooltip: \"Enable TLS (Transport Layer Security)\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n required: false,\n label: \"Skip TLS Verification\",\n tooltip: \"Trust server TLS without verification\",\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_tls_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"tls_client_auth\",\n required: false,\n label: \"TLS Client Auth\",\n tooltip:\n \"ClientAuth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n },\n {\n name: \"version\",\n required: false,\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster\",\n type: \"string\",\n },\n ],\n};\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const selectSAs = (\n e: React.ChangeEvent,\n setSelectedSAs: Function,\n selectedSAs: string[],\n) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedSAs]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedSAs(elements);\n return elements;\n};\n\nexport const overrideFields = (formFields: IElementValue[]): IOverrideEnv => {\n let overrideReturn: IOverrideEnv = {};\n\n formFields.forEach((envItem) => {\n // it has override values, we construct the value\n if (envItem.env_override) {\n const value: OverrideValue = {\n value: envItem.env_override.value || \"\",\n overrideEnv: envItem.env_override.name || \"\",\n };\n\n overrideReturn = { ...overrideReturn, [envItem.key]: value };\n }\n });\n\n return overrideReturn;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n CommentBox,\n ConsoleIcon,\n FormLayout,\n Grid,\n InputBox,\n ReadBox,\n Switch,\n Tooltip,\n} from \"mds\";\nimport { IElementValue, IOverrideEnv, KVField } from \"../Configurations/types\";\nimport CSVMultiSelector from \"../Common/FormComponents/CSVMultiSelector/CSVMultiSelector\";\n\ninterface IConfGenericProps {\n onChange: (newValue: IElementValue[]) => void;\n fields: KVField[];\n defaultVals?: IElementValue[];\n overrideEnv?: IOverrideEnv;\n}\n\n// Function to get defined values,\n//we make this because the backed sometimes don't return all the keys when there is an initial configuration\nexport const valueDef = (\n key: string,\n type: string,\n defaults: IElementValue[],\n) => {\n let defValue = type === \"on|off\" ? \"off\" : \"\";\n\n if (defaults.length > 0) {\n const storedConfig = defaults.find((element) => element.key === key);\n\n if (storedConfig) {\n defValue = storedConfig.value || \"\";\n }\n }\n\n return defValue;\n};\n\nconst ConfTargetGeneric = ({\n onChange,\n fields,\n defaultVals,\n overrideEnv,\n}: IConfGenericProps) => {\n const [valueHolder, setValueHolder] = useState([]);\n const fieldsElements = !fields ? [] : fields;\n const defValList = !defaultVals ? [] : defaultVals;\n\n // Effect to create all the values to hold\n useEffect(() => {\n const values: IElementValue[] = fields.map((field) => {\n const stateInsert: IElementValue = {\n key: field.name,\n value: valueDef(field.name, field.type, defValList),\n };\n return stateInsert;\n });\n\n setValueHolder(values);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fields, defaultVals]);\n\n useEffect(() => {\n onChange(valueHolder);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [valueHolder]);\n\n const setValueElement = (key: string, value: string, index: number) => {\n const valuesDup = [...valueHolder];\n value = value.trim();\n valuesDup[index] = { key, value };\n\n setValueHolder(valuesDup);\n };\n\n const fieldDefinition = (field: KVField, item: number) => {\n const holderItem = valueHolder[item];\n\n if (holderItem) {\n // Override Value with env var, we display generic string component\n const override = overrideEnv?.[`${holderItem.key}`];\n\n if (override) {\n return (\n \n \n \n \n \n }\n sx={{ width: \"100%\" }}\n >\n {override.value}\n \n );\n }\n }\n\n switch (field.type) {\n case \"on|off\":\n const value = holderItem ? holderItem.value : \"off\";\n\n return (\n ) => {\n const value = e.target.checked ? \"on\" : \"off\";\n setValueElement(field.name, value, item);\n }}\n id={field.name}\n name={field.name}\n label={field.label}\n value={\"switch_on\"}\n tooltip={field.tooltip}\n checked={value === \"on\"}\n />\n );\n case \"csv\":\n return (\n {\n let valCh = \"\";\n\n if (Array.isArray(value)) {\n valCh = value.join(\",\");\n } else {\n valCh = value;\n }\n\n setValueElement(field.name, valCh, item);\n }}\n tooltip={field.tooltip}\n commonPlaceholder={field.placeholder}\n withBorder={true}\n />\n );\n case \"comment\":\n return (\n setValueElement(field.name, e.target.value, item)}\n placeholder={field.placeholder}\n />\n );\n default:\n return (\n ) =>\n setValueElement(field.name, e.target.value, item)\n }\n placeholder={field.placeholder}\n />\n );\n }\n };\n\n return (\n \n {fieldsElements.map((field, item) => (\n {fieldDefinition(field, item)}\n ))}\n \n );\n};\n\nexport default ConfTargetGeneric;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\n\nimport { ConfirmDeleteIcon, ProgressBar } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IResetConfiguration {\n configurationName: string;\n closeResetModalAndRefresh: (reloadConfiguration: boolean) => void;\n resetOpen: boolean;\n}\n\nconst ResetConfigurationModal = ({\n configurationName,\n closeResetModalAndRefresh,\n resetOpen,\n}: IResetConfiguration) => {\n const dispatch = useAppDispatch();\n const [resetLoading, setResetLoading] = useState(false);\n\n useEffect(() => {\n if (resetLoading) {\n api.configs\n .resetConfig(configurationName)\n .then(() => {\n setResetLoading(false);\n closeResetModalAndRefresh(true);\n })\n .catch((err) => {\n setResetLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [closeResetModalAndRefresh, configurationName, resetLoading, dispatch]);\n\n const resetConfiguration = () => {\n setResetLoading(true);\n };\n\n return (\n }\n isLoading={resetLoading}\n onConfirm={resetConfiguration}\n onClose={() => {\n closeResetModalAndRefresh(false);\n }}\n confirmationContent={\n \n {resetLoading && }\n \n Are you sure you want to restore these configurations to default\n values?\n \n \n Please note that this may cause your system to not be accessible\n \n \n \n }\n />\n );\n};\n\nexport default ResetConfigurationModal;\n"],"names":["_ref","elements","name","label","_ref$tooltip","tooltip","_ref$commonPlaceholde","commonPlaceholder","onChange","_ref$withBorder","withBorder","_useState","useState","_useState2","_slicedToArray","currentElements","setCurrentElements","bottomList","createRef","useEffect","length","elementsSplit","split","push","refScroll","current","scrollIntoView","onChangeCallback","useCallback","newString","firstUpdate","useRef","elementsString","filter","element","trim","join","onChangeElement","e","persist","updatedElement","_toConsumableArray","index","get","target","parseInt","value","inputs","map","_jsx","InputBox","id","concat","toString","placeholder","overlayIcon","AddIcon","overlayAction","elementsUp","cpList","addEmptyLine","Fragment","children","_jsxs","Box","sx","display","className","InputLabel","alignItems","marginLeft","width","Tooltip","placement","HelpIcon","withBorders","overflowY","height","position","ref","open","type","onCloseEndpoint","setName","_useState3","_useState4","endpoint","setEndpoint","_useState5","_useState6","authToken","setAuthToken","_useState7","_useState8","saving","setSaving","_useState9","_useState10","invalidInputs","setInvalidInput","_useState11","_useState12","initialInputs","setInitialInputs","dispatch","useAppDispatch","initializeInput","item","validateInput","valid","includes","title","icon","WebhookIcon","ConsoleIcon","PendingItemsIcon","ModalWrapper","modalOpen","onClose","titleIcon","FormLayout","containerPadding","event","validity","error","pattern","required","Grid","xs","marginBottom","ProgressBar","modalStyleUtils","modalButtonBar","Button","variant","disabled","onClick","marginRight","color","payload","key_values","key","arn_resource_id","api","configs","setConfig","then","res","setServerNeedsRestart","data","restart","setSnackBarMessage","configurationIsLoading","catch","err","setErrorSnackMessage","errorToHandler","selectedARN","deleteLoading","setDeleteLoading","resetConfig","defaultWH","message","ConfirmDialog","confirmText","isOpen","isLoading","onConfirm","ConfirmDeleteIcon","confirmationContent","_overrideValues$enabl","_overrideValues$enabl2","_overrideValues$endpo","_overrideValues$endpo2","_overrideValues$auth_","_overrideValues$auth_2","endpointInfo","endpointState","setEndpointState","endpointLocate","find","tokenLocate","enable","endpointValue","tokenValue","hasOverride","itm","env_override","overrideValues","overrideFields","ReadBox","actionButton","justifyContent","paddingRight","overrideEnv","style","auth_token","Switch","checked","setResetConfigurationOpen","WebhookSettingslist","newEndpointOpen","setNewEndpointOpen","deleteWebhookOpen","setDeleteWebhookOpen","editWebhookOpen","setEditWebhookOpen","setSelectedARN","selectedEndpoint","setSelectedEndpoint","actions","disableButtonFunction","wHook","_wHook$key_values","container","AddEndpointModal","DeleteWebhookEndpoint","EditWebhookEndpoint","padding","DataTable","columns","elementKey","renderFunction","EnableFilter","overrideEnabled","flexDirection","justifyItems","fontSize","fill","TierOfflineIcon","TierOnlineIcon","endpointFilter","itemActions","idField","records","entityName","customPaperHeight","selectedConfiguration","_ref$className","navigate","useNavigate","_useLocation$pathname","useLocation","pathname","selConfigTab","substring","lastIndexOf","valuesObj","setValueObj","configValues","setConfigValues","configSubsysList","setConfigSubsysList","resetConfigurationOpen","overrideEnvs","setOverrideEnvs","loadingConfig","useSelector","state","system","loadingConfigurations","configId","configInfo","values","keyVals","fieldsConfigurations","field","includedValue","customValue","customValueProcess","removeEmptyFields","configuration_id","onValueChange","newValue","resetConfigurationMOpen","onMouseMove","setHelpName","configuration_label","ResetConfigurationModal","configurationName","closeResetModalAndRefresh","resetOpen","textAlign","paddingTop","Loader","WebhookSettings","noValidate","onSubmit","preventDefault","flexFlow","gridTemplateColumns","gap","ConfTargetGeneric","fields","defaultVals","maxHeight","configName","validActiveConfig","configurationElements","containerClassName","minWidth","EditConfiguration","useDispatch","_useApi","useApi","performDownload","Blob","window","atob","DateTime","now","toFormat","_useApi2","isReqLoading","invokeApi","TooltipWrapper","UploadIcon","needsRestart","serverNeedsRestart","undefined","refreshPage","setRefreshPage","fileUpload","files","fileToUpload","formData","FormData","blobFile","append","click","DownloadIcon","NON_SUB_SYS_CONFIG_ITEMS","IGNORED_CONFIG_SUB_SYS","configSubSysList","setConfigSubSysList","fetchConfigSubSysList","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","listConfig","_res$data","configurations","_res$data2","confSubSysList","reduce","acc","_ref2","_ref2$key","stop","availableConfigSubSys","_ref3","PageHeaderWrapper","HelpMenu","PageLayout","ScreenTitle","SettingsIcon","ImportConfigButton","ExportConfigButton","Tabs","currentTabOrPath","onTabClick","path","useRouteTabs","options","tabConfig","to","IAM_PAGES","SETTINGS","routes","Routes","Route","ConfigurationForm","Navigate","HelpBox","iconComponent","help","href","rel","PublicIcon","CompressIcon","CodeIcon","FirstAidIcon","FindReplaceIcon","KeyIcon","LogsIcon","region","compression","heal","scanner","etcd","multiline","logger_webhook","audit_webhook","audit_kafka","origValue","formFields","selectSAs","setSelectedSAs","selectedSAs","targetD","overrideReturn","forEach","envItem","_objectSpread","_defineProperty","valueDef","defaults","defValue","storedConfig","valueHolder","setValueHolder","fieldsElements","defValList","setValueElement","valuesDup","fieldDefinition","holderItem","override","CSVMultiSelector","valCh","Array","isArray","CommentBox","resetLoading","setResetLoading","maxWidth","whiteSpace","wordWrap"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1432.4da0630f.chunk.js b/portal-ui/build/static/js/1432.4da0630f.chunk.js
new file mode 100644
index 000000000..dd9d05f7c
--- /dev/null
+++ b/portal-ui/build/static/js/1432.4da0630f.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1432,4770],{59447:(e,t,n)=>{n.d(t,{Z:()=>s});var i=n(72791),o=n(26181),a=n.n(o),l=n(29945),r=n(80184);const s=e=>{let{elements:t,name:n,label:o,tooltip:s="",commonPlaceholder:c="",onChange:d,withBorder:u=!1}=e;const[p,h]=(0,i.useState)([""]),f=(0,i.createRef)();(0,i.useEffect)((()=>{if(1===p.length&&""===p[0]&&t&&""!==t){const e=t.split(",");e.push(""),h(e)}}),[t,p]),(0,i.useEffect)((()=>{if(p.length>1){const e=f.current;e&&e.scrollIntoView(!1)}}),[p,f]);const m=(0,i.useCallback)((e=>{d(e)}),[d]),x=(0,i.useRef)(!0);(0,i.useEffect)((()=>{if(x.current)return void(x.current=!1);const e=p.filter((e=>""!==e.trim())).join(",");m(e)}),[p]);const g=e=>{e.persist();let t=[...p];const n=a()(e.target,"dataset.index","0");t[parseInt(n)]=e.target.value,h(t)},v=p.map(((e,t)=>(0,r.jsx)(l.Wzg,{id:"".concat(n,"-").concat(t.toString()),label:"",name:"".concat(n,"-").concat(t.toString()),value:p[t],onChange:g,index:t,placeholder:c,overlayIcon:t===p.length-1?(0,r.jsx)(l.dtP,{}):null,overlayAction:()=>{(e=>{if(""!==e[e.length-1].trim()){const t=[...e];t.push(""),h(t)}})(p)}},"csv-multi-".concat(n,"-").concat(t.toString()))));return(0,r.jsx)(i.Fragment,{children:(0,r.jsxs)(l.xuv,{sx:{display:"flex"},className:"inputItem",children:[(0,r.jsxs)(l.AZs,{sx:{alignItems:"flex-start"},children:[(0,r.jsx)("span",{children:o}),""!==s&&(0,r.jsx)(l.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,r.jsx)(l.ua7,{tooltip:s,placement:"top",children:(0,r.jsx)(l.xuv,{className:s,children:(0,r.jsx)(l.byK,{})})})})]}),(0,r.jsxs)(l.xuv,{withBorders:u,sx:{width:"100%",overflowY:"auto",height:150,position:"relative"},children:[v,(0,r.jsx)("div",{ref:f})]})]})})}},11432:(e,t,n)=>{n.r(t),n.d(t,{default:()=>z});var i=n(72791),o=n(29945),a=n(58493),l=n(57689),r=n(26181),s=n.n(r),c=n(78687),d=n(31776),u=n(82342),p=n(87995),h=n(44690),f=n(56028),m=n(23814),x=n(80184);const g=e=>{let{open:t,type:n,onCloseEndpoint:a}=e;const[l,r]=(0,i.useState)(""),[s,c]=(0,i.useState)(""),[g,v]=(0,i.useState)(""),[b,y]=(0,i.useState)(!1),[j,k]=(0,i.useState)(["name","endpoint"]),[_,C]=(0,i.useState)(["name","endpoint","auth-token"]),S=(0,h.TL)(),w=e=>{C(_.filter((t=>t!==e)))},E=(e,t)=>{j.includes(e)&&t?k(j.filter((t=>t!==e))):t||j.includes(e)||k([...j,e])};let A="Add new Webhook",I=(0,x.jsx)(o.tYf,{});switch(n){case"logger_webhook":A="New Logger Webhook",I=(0,x.jsx)(o.zD0,{});break;case"audit_webhook":A="New Audit Webhook",I=(0,x.jsx)(o.Pd4,{})}return(0,x.jsx)(i.Fragment,{children:(0,x.jsxs)(f.Z,{modalOpen:t,title:A,onClose:a,titleIcon:I,children:[(0,x.jsxs)(o.ltY,{containerPadding:!1,withBorders:!1,children:[(0,x.jsx)(o.Wzg,{id:"name",name:"name",onChange:e=>{w("name"),r(e.target.value),E("name",e.target.validity.valid)},error:j.includes("name")&&!_.includes("name")?"Invalid Name":"",label:"Name",value:l,pattern:"^(?=.*[a-zA-Z0-9]).{1,}$",required:!0}),(0,x.jsx)(o.Wzg,{id:"endpoint",name:"endpoint",onChange:e=>{w("endpoint"),c(e.target.value),E("endpoint",e.target.validity.valid)},error:j.includes("endpoint")&&!_.includes("endpoint")?"Invalid Endpoint set":"",label:"Endpoint",value:s,pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",required:!0}),(0,x.jsx)(o.Wzg,{id:"auth-token",name:"auth-token",onChange:e=>{w("auth-token"),v(e.target.value)},label:"Auth Token",value:g})]}),b&&(0,x.jsx)(o.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,x.jsx)(o.kod,{})}),(0,x.jsxs)(o.rjZ,{item:!0,xs:12,sx:m.ID.modalButtonBar,children:[(0,x.jsx)(o.zxk,{id:"reset",type:"button",variant:"regular",disabled:b,onClick:a,label:"Cancel",sx:{marginRight:10}}),(0,x.jsx)(o.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:b||0!==j.length,label:"Save",onClick:()=>{if(b)return;if(0!==j.length)return;if(""===l.trim())return void k([...j,"name"]);if(""===s.trim())return void k([...j,"endpoint"]);y(!0);const e={key_values:[{key:"endpoint",value:s},{key:"auth_token",value:g}],arn_resource_id:l};d.h.configs.setConfig(n,e).then((e=>{y(!1),S((0,p.cN)(e.data.restart||!1)),e.data.restart||S((0,p.y1)("Configuration saved successfully")),a(),S((0,p.Ie)(!0))})).catch((e=>{y(!1),S((0,p.Ih)((0,u.g)(e.error)))}))}})]})]})})};var v=n(23508);const b=e=>{let{modalOpen:t,onClose:n,selectedARN:a}=e;const[l,r]=(0,i.useState)(!1),s=(0,h.TL)();(0,i.useEffect)((()=>{l&&d.h.configs.resetConfig(a).then((()=>{r(!1),s((0,p.cN)(!0)),s((0,p.Ie)(!0)),n()})).catch((e=>{r(!1),s((0,p.Ih)((0,u.g)(e.error)))}))}),[l,s,n,a]);const c=!a.includes(":");let f="Are you sure you want to delete the Configured Endpoint";return c&&(f="Are you sure you want to reset the Default"),(0,x.jsx)(v.Z,{title:c?"Reset Default Webhook":"Delete Webhook",confirmText:c?"Reset":"Delete",isOpen:t,isLoading:l,onConfirm:()=>{r(!0)},titleIcon:(0,x.jsx)(o.NvT,{}),onClose:n,confirmationContent:(0,x.jsxs)(i.Fragment,{children:["".concat(f," "),(0,x.jsx)("strong",{children:a}),"?"]})})},y=e=>{var t,n,l,r,s,c;let{open:g,type:v,endpointInfo:b,onCloseEndpoint:y}=e;const[j,k]=(0,i.useState)(""),[_,C]=(0,i.useState)(""),[S,w]=(0,i.useState)(""),[E,A]=(0,i.useState)("on"),[I,T]=(0,i.useState)(!1),[q,L]=(0,i.useState)([]),Z=(0,h.TL)();(0,i.useEffect)((()=>{if(b){const e=b.key_values.find((e=>"endpoint"===e.key)),t=b.key_values.find((e=>"auth_token"===e.key)),n=b.key_values.find((e=>"enable"===e.key));let i=[];if(e){const t=e.value;""===t?i.push("endpoint"):C(t)}if(t){const e=t.value;""===e?i.push("auth-token"):w(e)}n&&"off"===n.value&&A(n.value),k(b.name||""),L(i)}}),[b]);const D=!j.includes(":"),N=b.key_values.filter((e=>!!e.env_override)),R=(0,a.F_)(N);let z="Edit Webhook",W=(0,x.jsx)(o.tYf,{});switch(v){case"logger_webhook":z="Edit ".concat(D?" the Default ":"","Logger Webhook"),W=(0,x.jsx)(o.zD0,{});break;case"audit_webhook":z="Edit ".concat(D?" the Default ":"","Audit Webhook"),W=(0,x.jsx)(o.Pd4,{})}return N.length>0&&(z="View env variable Webhook"),(0,x.jsx)(i.Fragment,{children:(0,x.jsx)(f.Z,{modalOpen:g,title:"".concat(z).concat(D?"":" - ".concat(j)),onClose:y,titleIcon:W,children:(0,x.jsx)(o.ltY,{withBorders:!1,containerPadding:!1,children:N.length>0?(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)(o.bSr,{label:"Enabled",sx:{width:"100%"},actionButton:(0,x.jsx)(o.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,x.jsx)(o.ua7,{tooltip:R.enable?"This value is set from the ".concat((null===(t=R.enable)||void 0===t?void 0:t.overrideEnv)||"N/A"," environment variable"):"",placement:"left",children:(0,x.jsx)(o.zD0,{style:{width:20}})})}),children:(null===(n=R.enable)||void 0===n?void 0:n.value)||"-"}),(0,x.jsx)(o.bSr,{label:"Endpoint",sx:{width:"100%"},actionButton:(0,x.jsx)(o.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,x.jsx)(o.ua7,{tooltip:R.enable?"This value is set from the ".concat((null===(l=R.endpoint)||void 0===l?void 0:l.overrideEnv)||"N/A"," environment variable"):"",placement:"left",children:(0,x.jsx)(o.zD0,{style:{width:20}})})}),children:(null===(r=R.endpoint)||void 0===r?void 0:r.value)||"-"}),(0,x.jsx)(o.bSr,{label:"Auth Token",sx:{width:"100%"},actionButton:(0,x.jsx)(o.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,x.jsx)(o.ua7,{tooltip:R.enable?"This value is set from the ".concat((null===(s=R.auth_token)||void 0===s?void 0:s.overrideEnv)||"N/A"," environment variable"):"",placement:"left",children:(0,x.jsx)(o.zD0,{style:{width:20}})})}),children:(null===(c=R.auth_token)||void 0===c?void 0:c.value)||"-"})]}):(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)(o.rsf,{onChange:e=>{const t=e.target.checked?"on":"off";A(t)},id:"endpoint_enabled",name:"endpoint_enabled",label:"Enabled",value:"switch_on",checked:"on"===E}),(0,x.jsx)(o.Wzg,{id:"endpoint",name:"endpoint",onChange:e=>{C(e.target.value),((e,t)=>{q.includes(e)&&t?L(q.filter((t=>t!==e))):t||q.includes(e)||L([...q,e])})("endpoint",e.target.validity.valid)},error:q.includes("endpoint")?"Invalid Endpoint set":"",label:"Endpoint",value:_,pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",required:!0}),(0,x.jsx)(o.Wzg,{id:"auth-token",name:"auth-token",onChange:e=>{w(e.target.value)},label:"Auth Token",value:S}),I&&(0,x.jsx)(o.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,x.jsx)(o.kod,{})}),(0,x.jsxs)(o.rjZ,{item:!0,sx:m.ID.modalButtonBar,children:[(0,x.jsx)(o.zxk,{id:"reset",type:"button",variant:"regular",disabled:I,onClick:y,label:"Cancel"}),(0,x.jsx)(o.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:I||0!==q.length,label:"Update",onClick:()=>{if(I)return;if(0!==q.length)return;if(!_||""===_.trim())return void L([...q,"endpoint"]);T(!0);const e={key_values:[{key:"endpoint",value:_},{key:"auth_token",value:S},{key:"enable",value:E}]};d.h.configs.setConfig(j,e).then((e=>{T(!1),Z((0,p.cN)(e.data.restart||!1)),e.data.restart||Z((0,p.y1)("Configuration saved successfully")),y(),Z((0,p.Ie)(!0))})).catch((e=>{T(!1),Z((0,p.Ih)((0,u.g)(e.error)))}))}})]})]})})})})},j=e=>{let{setResetConfigurationOpen:t,WebhookSettingslist:n,type:a}=e;const[l,r]=(0,i.useState)(!1),[s,c]=(0,i.useState)(!1),[d,u]=(0,i.useState)(!1),[p,h]=(0,i.useState)(""),[f,m]=(0,i.useState)(null),v=[{type:"view",onClick:e=>{e.name&&(u(!0),m(e))}},{type:"delete",onClick:e=>{e.name&&(c(!0),h(e.name))},disableButtonFunction:e=>{const t=n.find((t=>t.name===e));if(t){var i;const e=null===(i=t.key_values)||void 0===i?void 0:i.filter((e=>!!e.env_override));return!!(e&&e.length>0)}return!1}}];return(0,x.jsxs)(o.rjZ,{container:!0,children:[l&&(0,x.jsx)(g,{open:l,type:a,onCloseEndpoint:()=>{r(!1)}}),s&&(0,x.jsx)(b,{modalOpen:s,onClose:()=>{c(!1),h("")},selectedARN:p,type:a}),d&&f&&(0,x.jsx)(y,{open:d,type:a,endpointInfo:f,onCloseEndpoint:()=>{u(!1),m(null)}}),(0,x.jsx)(o.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,x.jsx)(o.zxk,{id:"newWebhook",variant:"callAction",onClick:()=>{r(!0)},children:"New Endpoint"})}),(0,x.jsx)(o.rjZ,{item:!0,xs:12,sx:{padding:"0 10px 10px"},children:(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)("h3",{children:"Currently Configured Endpoints"}),(0,x.jsx)(o.wQF,{columns:[{label:"Status",elementKey:"key_values",renderFunction:e=>{const t=e.find((e=>"enable"===e.key));if(null!==t&&void 0!==t&&t.env_override){const e=null!==t&&void 0!==t&&t.env_override.value&&"on"!==(null===t||void 0===t?void 0:t.env_override.value)&&null!==t&&void 0!==t&&t.env_override.value?"Disabled":"Enabled";return(0,x.jsxs)(o.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,x.jsx)(o.zD0,{style:{fill:"#052F51",width:"14px"}}),e?"Enabled":"Disabled"]})}return t&&"on"!==t.value&&t.value?(0,x.jsxs)(o.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,x.jsx)(o.qwj,{style:{fill:"#C83B51",width:14,height:14}}),"Disabled"]}):(0,x.jsxs)(o.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,x.jsx)(o.Yp9,{style:{fill:"#4CCB92",width:14,height:14}}),"Enabled"]})},width:50},{label:"Name",elementKey:"name"},{label:"Endpoint",elementKey:"key_values",renderFunction:e=>{const t=e.find((e=>"endpoint"===e.key));return t?t.env_override?t.env_override.value:t.value:""}}],itemActions:v,idField:"name",isLoading:!1,records:n,entityName:"endpoints",customPaperHeight:"calc(100vh - 750px)"})]})})]})};var k=n(94770),_=n(90767);const C=e=>{let{selectedConfiguration:t,className:n=""}=e;const r=(0,h.TL)(),f=(0,l.s0)(),{pathname:m=""}=(0,l.TH)();let g=m.substring(m.lastIndexOf("/")+1);g="settings"===g?"region":g;const[v,b]=(0,i.useState)([]),[y,C]=(0,i.useState)(!1),[S,w]=(0,i.useState)([]),[E,A]=(0,i.useState)([]),[I,T]=(0,i.useState)(!1),[q,L]=(0,i.useState)({}),Z=(0,c.v9)((e=>e.system.loadingConfigurations));(0,i.useEffect)((()=>{r((0,p.Ie)(!0))}),[g,r]),(0,i.useEffect)((()=>{if(Z){const e=s()(t,"configuration_id",!1);if(e)return void d.h.configs.configInfo(e).then((t=>{A(t.data);let n=s()(t.data[0],"key_values",[]);const i=a.DP[e].map((e=>{const t=n.find((t=>t.key===e.name)),i=(null===t||void 0===t?void 0:t.value)||"";return{key:e.name,value:e.customValueProcess?e.customValueProcess(i):i,env_override:null===t||void 0===t?void 0:t.env_override}}));w(i),L((0,a.F_)(i)),r((0,p.Ie)(!1))})).catch((e=>{r((0,p.Ie)(!1)),r((0,p.Ih)((0,u.g)(e.error)))}));r((0,p.Ie)(!1))}}),[Z,t,r]),(0,i.useEffect)((()=>{if(y){const e={key_values:(0,a.DD)(v)};d.h.configs.setConfig(t.configuration_id,e).then((e=>{C(!1),r((0,p.cN)(e.data.restart||!1)),r((0,p.Ie)(!0)),e.data.restart||r((0,p.y1)("Configuration saved successfully"))})).catch((e=>{C(!1),r((0,p.Ih)((0,u.g)(e.error)))}))}}),[y,r,t,v,f]);const D=(0,i.useCallback)((e=>{b(e)}),[b]),N=()=>{T(!0)};return(0,x.jsx)(i.Fragment,{children:(0,x.jsxs)("div",{onMouseMove:()=>{r((0,p.Sc)("settings_".concat(t.configuration_label)))},children:[I&&(0,x.jsx)(_.Z,{configurationName:t.configuration_id,closeResetModalAndRefresh:e=>{T(!1),r((0,p.cN)(e)),e&&r((0,p.Ie)(!0))},resetOpen:I}),Z?(0,x.jsx)(o.rjZ,{item:!0,xs:12,sx:{textAlign:"center",paddingTop:"15px"},children:(0,x.jsx)(o.aNw,{})}):(0,x.jsx)(o.xuv,{sx:{padding:"15px",height:"100%"},children:"logger_webhook"===t.configuration_id||"audit_webhook"===t.configuration_id?(0,x.jsx)(j,{WebhookSettingslist:E,setResetConfigurationOpen:N,type:t.configuration_id}):(0,x.jsx)(i.Fragment,{children:(0,x.jsxs)("form",{noValidate:!0,onSubmit:e=>{e.preventDefault(),C(!0)},className:n,style:{height:"100%",display:"flex",flexFlow:"column"},children:[(0,x.jsx)(o.rjZ,{item:!0,xs:12,sx:{display:"grid",gridTemplateColumns:"1fr",gap:"10px"},children:(0,x.jsx)(k.default,{fields:a.DP[t.configuration_id],onChange:D,defaultVals:S,overrideEnv:q})}),(0,x.jsxs)(o.rjZ,{item:!0,xs:12,sx:{paddingTop:"15px ",textAlign:"right",maxHeight:"60px",display:"flex",alignItems:"center",justifyContent:"flex-end"},children:[(0,x.jsx)(o.zxk,{type:"button",id:"restore-defaults",variant:"secondary",onClick:N,label:"Restore Defaults"}),"\xa0 \xa0",(0,x.jsx)(o.zxk,{id:"save",type:"submit",variant:"callAction",disabled:y,label:"Save"})]})]})})})]})})},S=()=>{const{pathname:e=""}=(0,l.TH)(),t=e.substring(e.lastIndexOf("/")+1),n=a.bx.find((e=>e.configuration_id===t)),i="".concat(t);return(0,x.jsx)(o.rjZ,{item:!0,xs:12,sx:{height:"100%","& .identity_ldap, .api":{"& label":{minWidth:220,marginRight:0}}},children:n&&(0,x.jsx)(C,{className:"".concat(i),selectedConfiguration:n})})};var w=n(56087),E=n(79844),A=n(9505),I=n(45248),T=n(99779),q=n(27454);const L=()=>{const e=(0,c.I0)(),[t,n]=(0,A.Z)((e=>{(0,I.zZ)(new Blob([window.atob(e.value)]),"minio-server-config-".concat(T.ou.now().toFormat("LL-dd-yyyy-HH-mm-ss"),".conf"))}),(t=>{e((0,p.Ih)(t))}));return(0,x.jsx)(q.Z,{tooltip:"Warning! The resulting file will contain server configuration information in plain text",children:(0,x.jsx)(o.zxk,{id:"export-config",onClick:()=>{n("GET","api/v1/configs/export")},icon:(0,x.jsx)(o.rG2,{}),label:"Export",variant:"regular",disabled:t})})},Z=()=>{const e=(0,l.s0)(),t=(0,c.I0)(),n=(0,c.v9)((e=>e.system.serverNeedsRestart)),[a,r]=(0,i.useState)(void 0),s=(0,i.useRef)(null),[d,u]=(0,A.Z)((e=>{t((0,p.cN)(!0)),r(!0)}),(e=>{t((0,p.Ih)(e))}));(0,i.useEffect)((()=>{!n&&a&&e(0)}),[n,a,e]);return(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)("input",{type:"file",onChange:e=>{if(null===e||void 0===e||null===e.target.files||void 0===e.target.files)return;e.preventDefault();const[t]=e.target.files,n=new FormData,i=new Blob([t],{type:t.type});n.append("file",i,t.name),u("POST","api/v1/configs/import",n),e.target.value=""},style:{display:"none"},ref:s}),(0,x.jsx)(q.Z,{tooltip:"The file must be valid and should have valid config values",children:(0,x.jsx)(o.zxk,{id:"import-config",onClick:()=>{s&&s.current&&s.current.click()},icon:(0,x.jsx)(o._8t,{}),label:"Import",variant:"regular",disabled:d})})]})};var D=n(99670);const N=["region"],R=["cache"],z=()=>{const{pathname:e=""}=(0,l.TH)(),t=(0,h.TL)(),n=(0,l.s0)(),[r,s]=(0,i.useState)([]),c=(0,i.useCallback)((async()=>{d.h.configs.listConfig().then((e=>{var t;if(e&&null!==e&&void 0!==e&&e.data&&null!==e&&void 0!==e&&null!==(t=e.data)&&void 0!==t&&t.configurations){var n;const t=((null===e||void 0===e||null===(n=e.data)||void 0===n?void 0:n.configurations)||[]).reduce(((e,t)=>{let{key:n=""}=t;return R.includes(n)||e.push(n),e}),[]);s(t)}})).catch((e=>{t((0,p.Ih)((0,u.g)(e)))}))}),[t]);(0,i.useEffect)((()=>{c(),t((0,p.Sc)("settings_Region"))}),[]);const f=a.bx.filter((e=>{let{configuration_id:t}=e;return N.includes(t)||r.includes(t)||!r.length}));return(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)(E.Z,{label:"Settings",actions:(0,x.jsx)(D.Z,{})}),(0,x.jsxs)(o.Xgh,{children:[(0,x.jsxs)(o.rjZ,{item:!0,xs:12,id:"settings-container",children:[(0,x.jsx)(o.UHn,{icon:(0,x.jsx)(o.ewm,{}),title:"MinIO Configuration:",actions:(0,x.jsxs)(o.xuv,{sx:{display:"flex",gap:10},children:[(0,x.jsx)(Z,{}),(0,x.jsx)(L,{})]}),sx:{marginBottom:15}}),(0,x.jsx)(o.mQc,{currentTabOrPath:e,onTabClick:e=>{n(e)},useRouteTabs:!0,options:f.map((e=>{const{configuration_id:t,configuration_label:n,icon:i}=e;return{tabConfig:{id:"settings-tab-".concat(n),label:n,value:t,icon:i,to:(o=t,"".concat(w.gA.SETTINGS,"/").concat(o))}};var o})),routes:(0,x.jsxs)(l.Z5,{children:[f.map((e=>(0,x.jsx)(l.AW,{path:"".concat(e.configuration_id),element:(0,x.jsx)(S,{})},"configItem-".concat(e.configuration_label)))),(0,x.jsx)(l.AW,{path:"/",element:(0,x.jsx)(l.Fg,{to:"".concat(w.gA.SETTINGS,"/region")})})]})})]}),(0,x.jsx)(o.rjZ,{item:!0,xs:12,sx:{paddingTop:"15px"},children:(0,x.jsx)(o.KfX,{title:"Learn more about Configurations",iconComponent:(0,x.jsx)(o.ewm,{}),help:(0,x.jsxs)(i.Fragment,{children:["MinIO supports a variety of configurations ranging from encryption, compression, region, notifications, etc.",(0,x.jsx)("br",{}),(0,x.jsx)("br",{}),"You can learn more at our"," ",(0,x.jsx)("a",{href:"https://min.io/docs/minio/linux/reference/minio-mc-admin/mc-admin-config.html?ref=con#id4",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]})]})}},58493:(e,t,n)=>{n.d(t,{DD:()=>r,DP:()=>l,F_:()=>c,_0:()=>s,bx:()=>a});n(72791);var i=n(29945),o=n(80184);const a=[{icon:(0,o.jsx)(i.N1D,{}),configuration_id:"region",configuration_label:"Region"},{icon:(0,o.jsx)(i.jG4,{}),configuration_id:"compression",configuration_label:"Compression"},{icon:(0,o.jsx)(i.dNJ,{}),configuration_id:"api",configuration_label:"API"},{icon:(0,o.jsx)(i.JOn,{}),configuration_id:"heal",configuration_label:"Heal"},{icon:(0,o.jsx)(i.oTr,{}),configuration_id:"scanner",configuration_label:"Scanner"},{icon:(0,o.jsx)(i._m8,{}),configuration_id:"etcd",configuration_label:"Etcd"},{icon:(0,o.jsx)(i.zD0,{}),configuration_id:"logger_webhook",configuration_label:"Logger Webhook"},{icon:(0,o.jsx)(i.Pd4,{}),configuration_id:"audit_webhook",configuration_label:"Audit Webhook"},{icon:(0,o.jsx)(i.I$E,{}),configuration_id:"audit_kafka",configuration_label:"Audit Kafka"}],l={region:[{name:"name",required:!0,label:"Server Location",tooltip:'Name of the location of the server e.g. "us-west-rack2"',type:"string",placeholder:"e.g. us-west-rack-2"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",placeholder:"Enter custom notes if any"}],compression:[{name:"extensions",required:!1,label:"Extensions",tooltip:'Extensions to compress e.g. ".txt", ".log" or ".csv" - you can write one per field',type:"csv",placeholder:"Enter an Extension",withBorder:!0},{name:"mime_types",required:!1,label:"Mime Types",tooltip:'Mime types e.g. "text/*", "application/json" or "application/xml" - you can write one per field',type:"csv",placeholder:"Enter a Mime Type",withBorder:!0}],api:[{name:"requests_max",required:!1,label:"Requests Max",tooltip:"Maximum number of concurrent requests, e.g. '1600'",type:"number",placeholder:"Enter Requests Max"},{name:"cors_allow_origin",required:!1,label:"Cors Allow Origin",tooltip:"List of origins allowed for CORS requests",type:"csv",placeholder:"Enter allowed origin e.g. https://example.com"},{name:"replication_workers",required:!1,label:"Replication Workers",tooltip:"Number of replication workers, defaults to 100",type:"number",placeholder:"Enter Replication Workers"},{name:"replication_failed_workers",required:!1,label:"Replication Failed Workers",tooltip:"Number of replication workers for recently failed replicas, defaults to 4",type:"number",placeholder:"Enter Replication Failed Workers"}],heal:[{name:"bitrotscan",required:!1,label:"Bitrot Scan",tooltip:"Perform bitrot scan on disks when checking objects during scanner",type:"on|off"},{name:"max_sleep",required:!1,label:"Max Sleep",tooltip:"Maximum sleep duration between objects to slow down heal operation, e.g. 2s",type:"duration",placeholder:"Enter Max Sleep Duration"},{name:"max_io",required:!1,label:"Max IO",tooltip:"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3",type:"number",placeholder:"Enter Max IO"}],scanner:[{name:"delay",required:!1,label:"Delay Multiplier",tooltip:"Scanner delay multiplier, defaults to '10.0'",type:"number",placeholder:"Enter Delay"},{name:"max_wait",required:!1,label:"Max Wait",tooltip:"Maximum wait time between operations, defaults to '15s'",type:"duration",placeholder:"Enter Max Wait"},{name:"cycle",required:!1,label:"Cycle",tooltip:"Time duration between scanner cycles, defaults to '1m'",type:"duration",placeholder:"Enter Cycle"}],etcd:[{name:"endpoints",required:!0,label:"Endpoints",tooltip:'List of etcd endpoints e.g. "http://localhost:2379" - you can write one per field',type:"csv",placeholder:"Enter Endpoint"},{name:"path_prefix",required:!1,label:"Path Prefix",tooltip:'Namespace prefix to isolate tenants e.g. "customer1/"',type:"string",placeholder:"Enter Path Prefix"},{name:"coredns_path",required:!1,label:"Coredns Path",tooltip:'Shared bucket DNS records, default is "/skydns"',type:"string",placeholder:"Enter Coredns Path"},{name:"client_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_cert_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",multiline:!0,placeholder:"Enter custom notes if any"}],logger_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_kafka:[{name:"enable",required:!1,label:"Enable",tooltip:"Enable audit_kafka target",type:"on|off",customValueProcess:e=>""===e||"on"===e?"on":"off"},{name:"brokers",required:!0,label:"Brokers",type:"csv",placeholder:"Enter Kafka Broker"},{name:"topic",required:!1,label:"Topic",type:"string",placeholder:"Enter Kafka Topic",tooltip:"Kafka topic used for bucket notifications"},{name:"sasl",required:!1,label:"Use SASL",tooltip:"Enable SASL (Simple Authentication and Security Layer) authentication",type:"on|off"},{name:"sasl_username",required:!1,label:"SASL Username",type:"string",placeholder:"Enter SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_password",required:!1,label:"SASL Password",type:"password",placeholder:"Enter SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_mechanism",required:!1,label:"SASL Mechanism",type:"string",placeholder:"Enter SASL Mechanism",tooltip:"SASL authentication mechanism"},{name:"tls",required:!1,label:"Use TLS",tooltip:"Enable TLS (Transport Layer Security)",type:"on|off"},{name:"tls_skip_verify",required:!1,label:"Skip TLS Verification",tooltip:"Trust server TLS without verification",type:"on|off"},{name:"client_tls_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_tls_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"tls_client_auth",required:!1,label:"TLS Client Auth",tooltip:"ClientAuth determines the Kafka server's policy for TLS client authorization",type:"string"},{name:"version",required:!1,label:"Version",tooltip:"Specify the version of the Kafka cluster",type:"string"}]},r=e=>e.filter((e=>""!==e.value)),s=(e,t,n)=>{const i=e.target,o=i.value;let a=[...n];return i.checked?a.push(o):a=a.filter((e=>e!==o)),t(a),a},c=e=>{let t={};return e.forEach((e=>{if(e.env_override){const n={value:e.env_override.value||"",overrideEnv:e.env_override.name||""};t={...t,[e.key]:n}}})),t}},94770:(e,t,n)=>{n.r(t),n.d(t,{default:()=>s,valueDef:()=>r});var i=n(72791),o=n(29945),a=n(59447),l=n(80184);const r=(e,t,n)=>{let i="on|off"===t?"off":"";if(n.length>0){const t=n.find((t=>t.key===e));t&&(i=t.value||"")}return i},s=e=>{let{onChange:t,fields:n,defaultVals:s,overrideEnv:c}=e;const[d,u]=(0,i.useState)([]),p=n||[],h=s||[];(0,i.useEffect)((()=>{const e=n.map((e=>({key:e.name,value:r(e.name,e.type,h)})));u(e)}),[n,s]),(0,i.useEffect)((()=>{t(d)}),[d]);const f=(e,t,n)=>{const i=[...d];t=t.trim(),i[n]={key:e,value:t},u(i)},m=(e,t)=>{const n=d[t];if(n){const t=null===c||void 0===c?void 0:c["".concat(n.key)];if(t)return(0,l.jsx)(o.bSr,{label:e.label,actionButton:(0,l.jsx)(o.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,l.jsx)(o.ua7,{tooltip:"This value is set from the ".concat(t.overrideEnv," environment variable"),placement:"left",children:(0,l.jsx)(o.zD0,{style:{width:20}})})}),sx:{width:"100%"},children:t.value})}switch(e.type){case"on|off":const i=n?n.value:"off";return(0,l.jsx)(o.rsf,{onChange:n=>{const i=n.target.checked?"on":"off";f(e.name,i,t)},id:e.name,name:e.name,label:e.label,value:"switch_on",tooltip:e.tooltip,checked:"on"===i});case"csv":return(0,l.jsx)(a.Z,{elements:n?n.value:"",label:e.label,name:e.name,onChange:n=>{let i="";i=Array.isArray(n)?n.join(","):n,f(e.name,i,t)},tooltip:e.tooltip,commonPlaceholder:e.placeholder,withBorder:!0});case"comment":return(0,l.jsx)(o.q5m,{id:e.name,name:e.name,label:e.label,tooltip:e.tooltip,value:n?n.value:"",onChange:n=>f(e.name,n.target.value,t),placeholder:e.placeholder});default:return(0,l.jsx)(o.Wzg,{id:e.name,name:e.name,label:e.label,tooltip:e.tooltip,value:n?n.value:"",onChange:n=>f(e.name,n.target.value,t),placeholder:e.placeholder})}};return(0,l.jsx)(o.ltY,{withBorders:!1,containerPadding:!1,children:p.map(((e,t)=>(0,l.jsx)(i.Fragment,{children:m(e,t)},e.name)))})}},90767:(e,t,n)=>{n.d(t,{Z:()=>u});var i=n(72791),o=n(31776),a=n(82342),l=n(23508),r=n(29945),s=n(87995),c=n(44690),d=n(80184);const u=e=>{let{configurationName:t,closeResetModalAndRefresh:n,resetOpen:u}=e;const p=(0,c.TL)(),[h,f]=(0,i.useState)(!1);(0,i.useEffect)((()=>{h&&o.h.configs.resetConfig(t).then((()=>{f(!1),n(!0)})).catch((e=>{f(!1),p((0,s.Ih)((0,a.g)(e.error)))}))}),[n,t,h,p]);return(0,d.jsx)(l.Z,{title:"Restore Defaults",confirmText:"Yes, Reset Configuration",isOpen:u,titleIcon:(0,d.jsx)(r.NvT,{}),isLoading:h,onConfirm:()=>{f(!0)},onClose:()=>{n(!1)},confirmationContent:(0,d.jsxs)(i.Fragment,{children:[h&&(0,d.jsx)(r.kod,{}),(0,d.jsxs)(i.Fragment,{children:["Are you sure you want to restore these configurations to default values?",(0,d.jsx)("br",{}),(0,d.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:"Please note that this may cause your system to not be accessible"})]})]})})}}}]);
+//# sourceMappingURL=1432.4da0630f.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1432.4da0630f.chunk.js.map b/portal-ui/build/static/js/1432.4da0630f.chunk.js.map
new file mode 100644
index 000000000..609d0fa4f
--- /dev/null
+++ b/portal-ui/build/static/js/1432.4da0630f.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1432.4da0630f.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CSVMultiSelector/CSVMultiSelector.tsx","screens/Console/EventDestinations/WebhookSettings/AddEndpointModal.tsx","screens/Console/EventDestinations/WebhookSettings/DeleteWebhookEndpoint.tsx","screens/Console/EventDestinations/WebhookSettings/EditWebhookEndpoint.tsx","screens/Console/EventDestinations/WebhookSettings/WebhookSettings.tsx","screens/Console/EventDestinations/CustomForms/EditConfiguration.tsx","screens/Console/Configurations/ConfigurationPanels/ConfigurationForm.tsx","screens/Console/Configurations/ConfigurationPanels/ExportConfigButton.tsx","screens/Console/Configurations/ConfigurationPanels/ImportConfigButton.tsx","screens/Console/Configurations/ConfigurationPanels/ConfigurationOptions.tsx","screens/Console/Configurations/utils.tsx","screens/Console/EventDestinations/ConfTargetGeneric.tsx","screens/Console/EventDestinations/CustomForms/ResetConfigurationModal.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, {\n ChangeEvent,\n createRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n Fragment,\n} from \"react\";\nimport get from \"lodash/get\";\nimport { AddIcon, Box, HelpIcon, InputBox, InputLabel, Tooltip } from \"mds\";\n\ninterface ICSVMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n commonPlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst CSVMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n commonPlaceholder = \"\",\n onChange,\n withBorder = false,\n}: ICSVMultiSelector) => {\n const [currentElements, setCurrentElements] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentElements.length === 1 &&\n currentElements[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\",\");\n elementsSplit.push(\"\");\n\n setCurrentElements(elementsSplit);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [elements, currentElements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n if (currentElements.length > 1) {\n const refScroll = bottomList.current;\n if (refScroll) {\n refScroll.scrollIntoView(false);\n }\n }\n }, [currentElements, bottomList]);\n\n const onChangeCallback = useCallback(\n (newString: string) => {\n onChange(newString);\n },\n [onChange],\n );\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n const elementsString = currentElements\n .filter((element) => element.trim() !== \"\")\n .join(\",\");\n\n onChangeCallback(elementsString);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentElements]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = (elementsUp: string[]) => {\n if (elementsUp[elementsUp.length - 1].trim() !== \"\") {\n const cpList = [...elementsUp];\n cpList.push(\"\");\n setCurrentElements(cpList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeElement = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentElements];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentElements(updatedElement);\n };\n\n const inputs = currentElements.map((element, index) => {\n return (\n : null}\n overlayAction={() => {\n addEmptyLine(currentElements);\n }}\n />\n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n \n \n )}\n \n \n {inputs}\n \n \n \n \n );\n};\nexport default CSVMultiSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport {\n Button,\n ConsoleIcon,\n FormLayout,\n Grid,\n InputBox,\n PendingItemsIcon,\n ProgressBar,\n WebhookIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\n\ninterface IEndpointModal {\n open: boolean;\n type: string;\n onCloseEndpoint: () => void;\n}\n\nconst AddEndpointModal = ({ open, type, onCloseEndpoint }: IEndpointModal) => {\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [authToken, setAuthToken] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [invalidInputs, setInvalidInput] = useState([\n \"name\",\n \"endpoint\",\n ]);\n const [initialInputs, setInitialInputs] = useState([\n \"name\",\n \"endpoint\",\n \"auth-token\",\n ]);\n\n const dispatch = useAppDispatch();\n\n const saveWebhook = () => {\n if (saving) {\n return;\n }\n\n if (invalidInputs.length !== 0) {\n return;\n }\n\n if (name.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"name\"]);\n\n return;\n }\n\n if (endpoint.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"endpoint\"]);\n\n return;\n }\n\n setSaving(true);\n\n const payload = {\n key_values: [\n {\n key: \"endpoint\",\n value: endpoint,\n },\n {\n key: \"auth_token\",\n value: authToken,\n },\n ],\n arn_resource_id: name,\n };\n\n api.configs\n .setConfig(type, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n\n onCloseEndpoint();\n dispatch(configurationIsLoading(true));\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const initializeInput = (name: string) => {\n setInitialInputs(initialInputs.filter((item) => item !== name));\n };\n\n const validateInput = (name: string, valid: boolean) => {\n if (invalidInputs.includes(name) && valid) {\n setInvalidInput(invalidInputs.filter((item) => item !== name));\n return;\n }\n\n if (!valid && !invalidInputs.includes(name)) {\n setInvalidInput([...invalidInputs, name]);\n }\n };\n\n let title = \"Add new Webhook\";\n let icon = ;\n\n switch (type) {\n case \"logger_webhook\":\n title = \"New Logger Webhook\";\n icon = ;\n break;\n case \"audit_webhook\":\n title = \"New Audit Webhook\";\n icon = ;\n break;\n }\n\n return (\n \n \n \n ) => {\n initializeInput(\"name\");\n setName(event.target.value);\n validateInput(\"name\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"name\") && !initialInputs.includes(\"name\")\n ? \"Invalid Name\"\n : \"\"\n }\n label=\"Name\"\n value={name}\n pattern={\"^(?=.*[a-zA-Z0-9]).{1,}$\"}\n required\n />\n ) => {\n initializeInput(\"endpoint\");\n setEndpoint(event.target.value);\n validateInput(\"endpoint\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"endpoint\") &&\n !initialInputs.includes(\"endpoint\")\n ? \"Invalid Endpoint set\"\n : \"\"\n }\n label=\"Endpoint\"\n value={endpoint}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n required\n />\n ) => {\n initializeInput(\"auth-token\");\n setAuthToken(event.target.value);\n }}\n label=\"Auth Token\"\n value={authToken}\n />\n \n {saving && (\n \n \n \n )}\n \n \n \n \n \n \n );\n};\n\nexport default AddEndpointModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState, Fragment } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeleteWebhookEndpoint {\n modalOpen: boolean;\n onClose: () => void;\n selectedARN: string;\n type: string;\n}\n\nconst DeleteWebhookEndpoint = ({\n modalOpen,\n onClose,\n selectedARN,\n}: IDeleteWebhookEndpoint) => {\n const [deleteLoading, setDeleteLoading] = useState(false);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (deleteLoading) {\n api.configs\n .resetConfig(selectedARN)\n .then(() => {\n setDeleteLoading(false);\n dispatch(setServerNeedsRestart(true));\n dispatch(configurationIsLoading(true));\n onClose();\n })\n .catch((err) => {\n setDeleteLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [deleteLoading, dispatch, onClose, selectedARN]);\n\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n const defaultWH = !selectedARN.includes(\":\");\n\n let message = \"Are you sure you want to delete the Configured Endpoint\";\n\n // Main webhook, we just reset\n if (defaultWH) {\n message = \"Are you sure you want to reset the Default\";\n }\n\n return (\n }\n onClose={onClose}\n confirmationContent={\n \n {`${message} `}\n {selectedARN}?\n \n }\n />\n );\n};\n\nexport default DeleteWebhookEndpoint;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Button,\n ConsoleIcon,\n FormLayout,\n Grid,\n InputBox,\n PendingItemsIcon,\n ProgressBar,\n ReadBox,\n Switch,\n Tooltip,\n WebhookIcon,\n} from \"mds\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nimport { IConfigurationSys } from \"../../Configurations/types\";\nimport { overrideFields } from \"../../Configurations/utils\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IEndpointModal {\n open: boolean;\n type: string;\n endpointInfo: IConfigurationSys;\n onCloseEndpoint: () => void;\n}\n\nconst EditEndpointModal = ({\n open,\n type,\n endpointInfo,\n onCloseEndpoint,\n}: IEndpointModal) => {\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [authToken, setAuthToken] = useState(\"\");\n const [endpointState, setEndpointState] = useState(\"on\");\n const [saving, setSaving] = useState(false);\n const [invalidInputs, setInvalidInput] = useState([]);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (endpointInfo) {\n const endpointLocate = endpointInfo.key_values.find(\n (key) => key.key === \"endpoint\",\n );\n const tokenLocate = endpointInfo.key_values.find(\n (key) => key.key === \"auth_token\",\n );\n const enable = endpointInfo.key_values.find(\n (key) => key.key === \"enable\",\n );\n\n let invalidInputs: string[] = [];\n\n if (endpointLocate) {\n const endpointValue = endpointLocate.value;\n\n if (endpointValue === \"\") {\n invalidInputs.push(\"endpoint\");\n } else {\n setEndpoint(endpointValue);\n }\n }\n\n if (tokenLocate) {\n const tokenValue = tokenLocate.value;\n\n if (tokenValue === \"\") {\n invalidInputs.push(\"auth-token\");\n } else {\n setAuthToken(tokenValue);\n }\n }\n\n if (enable) {\n if (enable.value === \"off\") {\n setEndpointState(enable.value);\n }\n }\n\n setName(endpointInfo.name || \"\");\n setInvalidInput(invalidInputs);\n }\n }, [endpointInfo]);\n\n const updateWebhook = () => {\n if (saving) {\n return;\n }\n\n if (invalidInputs.length !== 0) {\n return;\n }\n\n if (!endpoint || endpoint.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"endpoint\"]);\n\n return;\n }\n\n setSaving(true);\n\n const payload = {\n key_values: [\n {\n key: \"endpoint\",\n value: endpoint,\n },\n {\n key: \"auth_token\",\n value: authToken,\n },\n {\n key: \"enable\",\n value: endpointState,\n },\n ],\n };\n\n api.configs\n .setConfig(name, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n\n onCloseEndpoint();\n dispatch(configurationIsLoading(true));\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const validateInput = (name: string, valid: boolean) => {\n if (invalidInputs.includes(name) && valid) {\n setInvalidInput(invalidInputs.filter((item) => item !== name));\n return;\n }\n\n if (!valid && !invalidInputs.includes(name)) {\n setInvalidInput([...invalidInputs, name]);\n }\n };\n\n const defaultWH = !name.includes(\":\");\n const hasOverride = endpointInfo.key_values.filter(\n (itm) => !!itm.env_override,\n );\n\n const overrideValues = overrideFields(hasOverride);\n\n let title = \"Edit Webhook\";\n let icon = ;\n\n switch (type) {\n case \"logger_webhook\":\n title = `Edit ${defaultWH ? \" the Default \" : \"\"}Logger Webhook`;\n icon = ;\n break;\n case \"audit_webhook\":\n title = `Edit ${defaultWH ? \" the Default \" : \"\"}Audit Webhook`;\n icon = ;\n break;\n }\n\n if (hasOverride.length > 0) {\n title = \"View env variable Webhook\";\n }\n\n return (\n \n \n \n {hasOverride.length > 0 ? (\n \n \n \n \n \n \n }\n >\n {overrideValues.enable?.value || \"-\"}\n \n \n \n \n \n \n }\n >\n {overrideValues.endpoint?.value || \"-\"}\n \n \n \n \n \n \n }\n >\n {overrideValues.auth_token?.value || \"-\"}\n \n \n ) : (\n \n ) => {\n const value = e.target.checked ? \"on\" : \"off\";\n setEndpointState(value);\n }}\n id={\"endpoint_enabled\"}\n name={\"endpoint_enabled\"}\n label={\"Enabled\"}\n value={\"switch_on\"}\n checked={endpointState === \"on\"}\n />\n ) => {\n setEndpoint(event.target.value);\n validateInput(\"endpoint\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"endpoint\")\n ? \"Invalid Endpoint set\"\n : \"\"\n }\n label=\"Endpoint\"\n value={endpoint}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n required\n />\n ) => {\n setAuthToken(event.target.value);\n }}\n label=\"Auth Token\"\n value={authToken}\n />\n {saving && (\n \n \n \n )}\n \n \n \n \n \n )}\n \n \n \n );\n};\n\nexport default EditEndpointModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { IConfigurationSys, IElementValue } from \"../../Configurations/types\";\nimport {\n Button,\n ConsoleIcon,\n DataTable,\n Grid,\n TierOfflineIcon,\n TierOnlineIcon,\n} from \"mds\";\nimport AddEndpointModal from \"./AddEndpointModal\";\nimport DeleteWebhookEndpoint from \"./DeleteWebhookEndpoint\";\nimport EditWebhookEndpoint from \"./EditWebhookEndpoint\";\nimport { Configuration } from \"api/consoleApi\";\n\ninterface WebhookSettingsProps {\n WebhookSettingslist: Configuration[];\n setResetConfigurationOpen: () => void;\n type: string;\n}\n\nconst WebhookSettings = ({\n setResetConfigurationOpen,\n WebhookSettingslist,\n type,\n}: WebhookSettingsProps) => {\n const [newEndpointOpen, setNewEndpointOpen] = useState(false);\n const [deleteWebhookOpen, setDeleteWebhookOpen] = useState(false);\n const [editWebhookOpen, setEditWebhookOpen] = useState(false);\n const [selectedARN, setSelectedARN] = useState(\"\");\n const [selectedEndpoint, setSelectedEndpoint] =\n useState(null);\n\n const renderEndpoint = (item: IElementValue[]) => {\n const endpointFilter = item.find((itm) => itm.key === \"endpoint\");\n\n if (endpointFilter) {\n if (endpointFilter.env_override) {\n return endpointFilter.env_override.value;\n }\n\n return endpointFilter.value;\n }\n\n return \"\";\n };\n\n const renderWebhookStatus = (item: IElementValue[]) => {\n const EnableFilter = item.find((itm) => itm.key === \"enable\");\n\n if (EnableFilter?.env_override) {\n const overrideEnabled =\n !EnableFilter?.env_override.value ||\n EnableFilter?.env_override.value === \"on\" ||\n !EnableFilter?.env_override.value\n ? \"Enabled\"\n : \"Disabled\";\n return (\n \n \n {overrideEnabled ? \"Enabled\" : \"Disabled\"}\n \n );\n }\n\n // If enable is not set, then enabled by default\n if (!EnableFilter || EnableFilter.value === \"on\" || !EnableFilter.value) {\n return (\n \n \n Enabled\n \n );\n }\n\n return (\n \n \n Disabled\n \n );\n };\n\n const onCloseDelete = () => {\n setDeleteWebhookOpen(false);\n setSelectedARN(\"\");\n };\n\n const onCloseEditWebhook = () => {\n setEditWebhookOpen(false);\n setSelectedEndpoint(null);\n };\n\n const actions = [\n {\n type: \"view\",\n onClick: (item: IConfigurationSys) => {\n if (item.name) {\n setEditWebhookOpen(true);\n setSelectedEndpoint(item);\n }\n },\n },\n {\n type: \"delete\",\n onClick: (item: IConfigurationSys) => {\n if (item.name) {\n setDeleteWebhookOpen(true);\n setSelectedARN(item.name);\n }\n },\n disableButtonFunction: (item: string) => {\n const wHook = WebhookSettingslist.find(\n (element) => element.name === item,\n );\n\n if (wHook) {\n const hasOverride = wHook.key_values?.filter(\n (itm) => !!itm.env_override,\n );\n\n // Has override values, we cannot delete.\n if (hasOverride && hasOverride.length > 0) {\n return true;\n }\n\n return false;\n }\n return false;\n },\n },\n ];\n return (\n \n {newEndpointOpen && (\n {\n setNewEndpointOpen(false);\n }}\n />\n )}\n {deleteWebhookOpen && (\n \n )}\n {editWebhookOpen && selectedEndpoint && (\n \n )}\n \n \n \n \n \n