summaryrefslogtreecommitdiffstats
path: root/src/web/gui/v2/8842.406028f523a00acb97bd.chunk.js
blob: 9b8e3549f3227787b89ed09b269969e5e17723a6 (plain)
1
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="6df49833-3fc2-4c7b-8bc8-5da3e2bc850d",e._sentryDebugIdIdentifier="sentry-dbid-6df49833-3fc2-4c7b-8bc8-5da3e2bc850d")}catch(e){}}();var _global="undefined"!==typeof window?window:"undefined"!==typeof global?global:"undefined"!==typeof self?self:{};_global.SENTRY_RELEASE={id:"30b1ba65cc8722be7e184f4a401fb43e6b21634d"},(self.webpackChunkcloud_frontend=self.webpackChunkcloud_frontend||[]).push([[8842],{8842:(e,t,n)=>{n.r(t),n.d(t,{default:()=>W});var a=n(96540),l=n(83199),o=(n(3064),n(98992),n(72577),n(26655));var r=n(3914),i=n(18061),c=n(47444);const s={items:[],error:"",id:null,loading:!0,loaded:!1,oidcID:null},d=(0,c.Iz)({key:"spaceOIDCKey",default:0}),u=(0,c.Iz)({key:"spaceOIDC",default:e=>(e=>({...s,id:e}))(e)}),m=(0,c.Iz)({key:"spaceOIDCConfiguration",default:null});n(62953);const g=(0,c.K0)({key:"spaceOIDCState",get:e=>{let{id:t,key:n}=e;return e=>{let{get:a}=e;const l=a(u(t));return n?l[n]:l}},set:e=>{let{id:t,key:n}=e;return(e,a)=>{let{set:l}=e;l(u(t),(e=>n?{...e,[n]:a}:{...e,...a}))}}}),f=e=>((e,t)=>(0,c.vc)(g({id:e,key:t})))((0,r.vt)(),e),p=e=>(0,c.L4)(m(e)),E=e=>{const t=(0,r.vt)(),[n,l]=p(t),i=(0,a.useCallback)((function(){return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o.A.post("/api/v3/spaces/".concat(e,"/oidc"),{...t})}(t,arguments.length>0&&void 0!==arguments[0]?arguments[0]:{})}),[t]),c=(0,a.useCallback)((function(){return function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return o.A.patch("/api/v3/spaces/".concat(t,"/oidc/").concat(e),n)}(e,t,arguments.length>0&&void 0!==arguments[0]?arguments[0]:{})}),[e,t]),s=(0,a.useCallback)((()=>((e,t)=>o.A.delete("/api/v3/spaces/".concat(t,"/oidc/").concat(e)))(e,t).then((()=>(l(null),Promise.resolve())))),[e,t,l]);return{config:n,isEdit:!!e,save:e?c:i,remove:s}},b=()=>{const e=(0,r.vt)(),t=((e,t)=>(0,c.lZ)(g({id:e,key:t})))(e),n=(()=>{const e=(0,r.vt)();return(0,c.vc)(d(e))})();(0,i.A)((()=>({enabled:!!e,fetch:()=>(e=>o.A.get("/api/v3/spaces/".concat(e,"/oidc")))(e),onFail:e=>{var n;return t({...s,error:(null===e||void 0===e||null===(n=e.response)||void 0===n?void 0:n.data)||e})},onSettle:()=>t({loading:!1,loaded:!0}),onSuccess:e=>{const{oidcID:n}=e.find((e=>{let{oidcID:t}=e;return!!t}))||{};t({...s,items:e,...n?{oidcID:n}:{}})}})),[n,e])};var h=n(58168),v=(n(17333),n(41393),n(54520),n(81454),n(4659)),C=n(87659);n(9391),n(74648),n(23215);const y=e=>{const t=(0,r.vt)(),[,n]=p(t);(0,i.A)((()=>({enabled:!!t,fetch:()=>((e,t)=>e?o.A.get("/api/v3/spaces/".concat(t,"/oidc/").concat(e)):Promise.resolve({data:null}))(e,t),onSuccess:e=>{n(e)}})),[t])},k={okta:{name:"okta",color:"bright"},"auth-server":{name:"openid",color:"bright"}},D=e=>{let{title:t,onConfirm:n,onDecline:o,isConfirmLoading:r}=e;return a.createElement(l.ConfirmationDialog,{confirmLabel:"Yes, delete",handleConfirm:n,handleDecline:o,message:a.createElement(a.Fragment,null,"You are about to delete ",a.createElement("strong",null,t)," configuration.",a.createElement("br",null),"Are you sure you want to continue?"),title:"Delete configuration",isConfirmLoading:r})};var A=n(46741),x=n(47130),w=n(92155),I=n(50876);const F=(0,x.A)((0,w.A)(l.Button)),S=e=>{let{title:t,isLoading:n,isEditable:o,validFields:r,onSave:i,onConfirmDelete:c}=e;const[s,,d,u]=(0,C.A)(),m=(0,A.JT)("oidc:Manage"),{sendLog:g}=(0,I.A)(),f=(0,a.useCallback)((()=>{c(),u(),g({feature:"OidcModalConfirmDeleteButton",title:t})}),[c,u]),p=(0,a.useMemo)((()=>({feature:"OidcModalSaveButton",label:"Save",onClick:i,disabled:!r||!m||n,tooltip:m?r?"Save the configuration":"Please provide values to the required fields":"You don't have permission to manage single sign-on configurations."})),[i,r,m,n]),E=(0,a.useMemo)((()=>({feature:"OidcModalDeleteButton",label:"Delete",flavour:"hollow",danger:!0,onClick:d,disabled:!m||n,tooltip:m?"Delete the configuration":"You don't have permission to manage single sign-on configurations."})),[d,n,m]);return a.createElement(a.Fragment,null,a.createElement(l.ModalFooter,{gap:2},o?a.createElement(F,E):null,a.createElement(F,p)),s?a.createElement(D,{title:t,onConfirm:f,onDecline:u,isConfirmLoading:n}):null)},L={string:e=>{let{propKey:t,title:n,setFormData:o,...r}=e;const i=(0,a.useCallback)((e=>{let{target:n}=e;o((e=>({...e,[t]:n.value})))}),[t,o]);return a.createElement(l.TextInput,(0,h.A)({label:n,onChange:i},r))},default:()=>null},M=e=>{let{propKey:t,type:n,setFormData:l,...o}=e;const r=L[n]||L.default,i=(0,a.useCallback)((e=>{let{target:n}=e;l((e=>({...e,[t]:n.value})))}),[l]);return a.createElement(r,(0,h.A)({onChange:i},o))},T=e=>{let{properties:t={},errors:n={},formData:o,required:r,setFormData:i}=e;return a.createElement(l.Flex,{column:!0,gap:2},Object.entries(t).map((e=>{let[t,l]=e;return a.createElement(M,(0,h.A)({key:t,propKey:t,isRequired:r.includes(t)},l,{value:o[t]||"",setFormData:i,error:n[t]}))})))};var _=n(28738),B=n(71835);n(14905),n(8872),n(3296),n(27208),n(48408);const O={string:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{format:n}=t;return"uri"!=n||(e=>{try{const{host:t}=new URL(e);return/^(?!-)[a-zA-Z0-9-]{1,63}(?<!-)(\.[a-zA-Z0-9]{1,63})+$/.test(t)}catch{return!1}})(e)?null:"Invalid URL format"},default:()=>null};var K=n(63314);const q=e=>{let{id:t,oidcID:n,title:o,slug:i,description:s,properties:u={},required:m=[],isEditable:g,docsUrl:f,onClose:p}=e;y(n);const{config:b,isEdit:h,save:D,remove:A}=E(n),[x,w]=(0,a.useState)({}),[I,,F,L]=(0,C.A)(),M=(()=>{const e=(0,r.vt)(),t=(0,c.lZ)(d(e));return(0,a.useCallback)((()=>t((e=>e+1))),[t])})(),[q,N]=(0,B.A)(),[U,Y]=(0,a.useState)({}),j=m.every((e=>!!x[e]));(0,a.useEffect)((()=>{w(b||{})}),[b]),(0,a.useEffect)((()=>{Y(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.entries(e).reduce(((e,n)=>{let[a,l]=n;const o=t[a]||{},r=(O[o.type]||O.default)(l,o);return r&&(e[a]=r),e}),{})}(x,u))}),[x,u,Y]);const z=(0,a.useCallback)((()=>{F(),D({...h?{}:{integrationID:t},...x}).then((()=>{q({header:"Success",text:"Successfully configured ".concat(o)}),p(),M()})).catch(N).finally((()=>{L()}))}),[D,x,h,q,N,p,M,F,L]),P=(0,a.useCallback)((()=>{F(),A().then((()=>{q({header:"Success",text:"Successfully deleted ".concat(o," configuration")}),p(),M()})).catch(N).finally((()=>{L()}))}),[A,q,N,p,M,F,L]);return a.createElement(K.Ay,{feature:"OidcModal",title:o},a.createElement(l.Modal,{backdropProps:{backdropBlur:!0},onEsc:p},a.createElement(l.ModalContent,{width:{min:100,base:140}},a.createElement(l.ModalHeader,{border:{side:"bottom",color:"disabled"},column:!0,gap:.5,padding:[6,4,3]},a.createElement(l.Flex,{alignItems:"center"},a.createElement(l.Flex,{gap:1,alignItems:"center"},a.createElement(l.Icon,k[i]||{}),a.createElement(l.H3,null,o)),p&&a.createElement(l.ModalCloseButton,{onClose:p,tooltip:"Close modal"})),a.createElement(l.TextSmall,{as:l.Box},s,f?a.createElement(a.Fragment,null,"\xa0",a.createElement(v.A,{Component:l.TextSmall,href:f,target:"_blank",whiteSpace:"nowrap"},"Learn how to configure it.")):null)),a.createElement(l.ModalBody,{height:{min:60,base:60},overflow:{vertical:"auto"}},I?a.createElement(_.A,{height:60,title:"Loading..."}):a.createElement(T,{formData:x,required:m,setFormData:w,properties:u,errors:U})),a.createElement(S,{title:o,isLoading:I,isEditable:g,validFields:j||!!Object.keys(U).length,onSave:z,onConfirmDelete:P}))))};var N=n(29217),U=n(63450);const Y=e=>{let{title:t,isEditable:n,isDisabled:l,onClick:o}=e;const{tooltipContent:r,buttonLabel:i}=(0,a.useMemo)((()=>l?{}:{tooltipContent:n?"Edit ".concat(t," configuration"):"Configure ".concat(t),buttonLabel:n?"Edit":"Configure"}),[n,l,t]);return l?null:a.createElement(N.A,{align:"bottom",content:r,plain:!0},a.createElement(U.ro,{label:i,icon:"gear",small:!0,onClick:o}))},j=e=>{let{id:t,slug:n,title:o,description:r,"data-testid":i="card",configuredItemExists:c,oidcID:s,schema:d={},...u}=e;const m=k[n],[g,,f,p]=(0,C.A)(),E=c&&!s,b=c&&!!s,{annotations:y={},properties:D={},required:A=[]}=d,{docsUrl:x}=y;return a.createElement(a.Fragment,null,a.createElement(l.Flex,(0,h.A)({background:"elementBackground",column:!0,"data-testid":i,justifyContent:"between",flex:!1,height:37,padding:[3,2,2,3],margin:[0,0,4,0],position:"relative",overflow:"hidden",round:.5,width:75},u),a.createElement(U.MU,(0,h.A)({"data-testid":"".concat(i,"-blurredIcon")},m)),a.createElement(l.Flex,{column:!0,"data-testid":"".concat(i,"-details"),gap:3,margin:[0,0,3,0]},a.createElement(l.Flex,{"data-testid":"".concat(i,"-header"),justifyContent:"between"},a.createElement(l.Flex,{alignItems:"center","data-testid":"".concat(i,"-titleContainer"),gap:1},a.createElement(l.Icon,(0,h.A)({"data-testid":"".concat(i,"-icon")},m)),a.createElement(l.Text,{"data-testid":"".concat(i,"-title")},o)),a.createElement(Y,{title:o,isEditable:b,isDisabled:E,onClick:f})),a.createElement(l.TextSmall,{color:"textDescription","data-testid":"".concat(i,"-description")},r," ",x&&a.createElement(v.A,{Component:U.W6,"data-testid":"".concat(i,"-docsLink"),href:x,target:"_blank",whiteSpace:"nowrap"},"Learn more.")))),g&&a.createElement(q,{id:t,oidcID:s,slug:n,title:o,description:r,docsUrl:x,properties:D,required:A,onClose:p,isEditable:b}))};var z=n(98496),P=n(12602);const R={ErrForbidden:{title:"No permissions",Content:()=>a.createElement(a.Fragment,null,a.createElement(l.Text,null,"You don't have permissions to view the authentication methods."),a.createElement(l.Text,null,"Please contact the Space administrators if this is unexpected."))},ErrNotAvailable:{title:"No available integrations",Content:()=>a.createElement(a.Fragment,null,a.createElement(l.Text,null,"No available single sign-on integrations found."),a.createElement(l.Text,null,"To enable this feature, please"," ",a.createElement(P.A,null,a.createElement(l.Text,{color:"primary"},"upgrade to the Business plan")),"."))},default:{title:"Error",Content:()=>a.createElement(a.Fragment,null,a.createElement(l.Text,null,"Something went wrong, please check again later."),a.createElement(l.Text,null,"If the problem persists feel free to contact us with a"," ",a.createElement(v.A,{href:"https://github.com/netdata/netdata-cloud/issues/new/choose",target:"_blank",rel:"noopener noreferrer"},"ticket")))}},Z=function(){let{error:e={}}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{errorMsgKey:t}=e,{title:n,Content:o}=R[t]||R.default;return a.createElement(K.DL,{feature:"DyncfgMainTabs",errorMsgKey:t},a.createElement(z.A,{title:n},a.createElement(l.Flex,{column:!0,gap:1},a.createElement(o,null))))},H=()=>{const{loading:e,loaded:t,items:n=[],oidcID:o,error:r}=f(),i=n.filter((e=>{let{available:t}=e;return!!t}));return e?a.createElement(_.A,{title:"Loading items"}):t?r?a.createElement(Z,{error:r}):i.length?a.createElement(l.Flex,{flexWrap:!0,padding:[0,4],gap:4},i.map((e=>a.createElement(j,(0,h.A)({key:e.id,configuredItemExists:!!o},e))))):a.createElement(Z,{error:{errorMsgKey:"ErrNotAvailable"}}):a.createElement(Z,{error:"Something went wroong"})},W=()=>(b(),a.createElement(l.Flex,{column:!0,gap:8,height:"100%"},a.createElement(l.Flex,{column:!0,gap:2,padding:[0,0,0,4]},a.createElement(l.H3,null,"Authentication"),a.createElement(l.TextBig,null,"See the available single sign-on integrations and configure the one that your company supports.")),a.createElement(H,null)))}}]);