/*! Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one or more contributor license agreements. * Licensed under the Elastic License 2.0; you may not use this file except in compliance with the Elastic License 2.0. */ (window.security_bundle_jsonpfunction=window.security_bundle_jsonpfunction||[]).push([[14],{305:function(e,t,s){"use strict";s.r(t),s.d(t,"RolesGridPage",(function(){return roles_grid_page_RolesGridPage}));var a=s(13),o=s.n(a),n=s(1),l=s.n(n),i=s(3),r=s(18),c=s.n(r),d=s(2),u=s.n(d),m=s(4),g=s(6),j=s(5),b=s(0);class confirm_delete_ConfirmDelete extends d.Component{constructor(e){super(e),l()(this,"onConfirmDelete",(()=>{this.setState({deleteInProgress:!0},(()=>{this.deleteRoles()}))})),l()(this,"deleteRoles",(async()=>{const{rolesToDelete:e,callback:t,rolesAPIClient:s,notifications:a}=this.props,o=[],n=e.map((e=>(async()=>{try{await s.deleteRole(e),a.toasts.addSuccess(m.i18n.translate("xpack.security.management.roles.confirmDelete.roleSuccessfullyDeletedNotificationMessage",{defaultMessage:"Deleted role {roleName}",values:{roleName:e}}))}catch(t){o.push(e),a.toasts.addDanger(m.i18n.translate("xpack.security.management.roles.confirmDelete.roleDeletingErrorNotificationMessage",{defaultMessage:"Error deleting role {roleName}",values:{roleName:e}}))}})()));await Promise.all(n),t(e,o)})),this.state={deleteInProgress:!1}}render(){const{rolesToDelete:e}=this.props,t=e.length>1,s=m.i18n.translate("xpack.security.management.roles.deleteRoleTitle",{defaultMessage:"Delete role{value, plural, one {{roleName}} other {s}}",values:{value:e.length,roleName:` ${e[0]}`}});return Object(b.jsx)(i.EuiModal,{onClose:this.props.onCancel},Object(b.jsx)(i.EuiModalHeader,null,Object(b.jsx)(i.EuiModalHeaderTitle,{"data-test-subj":"confirmModalTitleText"},s)),Object(b.jsx)(i.EuiModalBody,null,Object(b.jsx)(i.EuiText,null,t?Object(b.jsx)(d.Fragment,null,Object(b.jsx)("p",null,Object(b.jsx)(g.FormattedMessage,{id:"xpack.security.management.roles.confirmDelete.removingRolesDescription",defaultMessage:"You are about to delete these roles:"})),Object(b.jsx)("ul",null,e.map((e=>Object(b.jsx)("li",{key:e},e))))):null,Object(b.jsx)("p",null,Object(b.jsx)(g.FormattedMessage,{id:"xpack.security.management.roles.deletingRolesWarningMessage",defaultMessage:"You can't undo this operation."})))),Object(b.jsx)(i.EuiModalFooter,null,Object(b.jsx)(i.EuiButtonEmpty,{"data-test-subj":"confirmModalCancelButton",onClick:this.props.onCancel,isDisabled:this.state.deleteInProgress},Object(b.jsx)(g.FormattedMessage,{id:"xpack.security.management.roles.confirmDelete.cancelButtonLabel",defaultMessage:"Cancel"})),Object(b.jsx)(i.EuiButton,{"data-test-subj":"confirmModalConfirmButton",onClick:this.onConfirmDelete,fill:!0,color:"danger",isLoading:this.state.deleteInProgress},Object(b.jsx)(g.FormattedMessage,{id:"xpack.security.management.roles.confirmDelete.deleteButtonLabel",defaultMessage:"Delete"}))))}}const p=()=>Object(b.jsx)(i.EuiPageContent_Deprecated,{verticalPosition:"center",horizontalPosition:"center",color:"danger"},Object(b.jsx)(i.EuiEmptyPrompt,{iconType:"securityApp",title:Object(b.jsx)("h2",null,Object(b.jsx)(g.FormattedMessage,{id:"xpack.security.management.roles.deniedPermissionTitle",defaultMessage:"You need permission to manage roles"})),body:Object(b.jsx)("p",{"data-test-subj":"permissionDeniedMessage"},Object(b.jsx)(g.FormattedMessage,{id:"xpack.security.management.roles.noPermissionToManageRolesDescription",defaultMessage:"Contact your system administrator."}))}));var h=s(22),x=s(71),f=s(91);const O=(e,t)=>`/${e}${t?`/${encodeURIComponent(t)}`:""}`;class roles_grid_page_RolesGridPage extends d.Component{constructor(e){super(e),l()(this,"tableRef",void 0),l()(this,"getPageContent",(()=>{const{roles:e}=this.state;return Object(b.jsx)(u.a.Fragment,null,Object(b.jsx)(i.EuiPageHeader,{bottomBorder:!0,pageTitle:Object(b.jsx)(g.FormattedMessage,{id:"xpack.security.management.roles.roleTitle",defaultMessage:"Roles"}),description:Object(b.jsx)(g.FormattedMessage,{id:"xpack.security.management.roles.subtitle",defaultMessage:"Apply roles to groups of users and manage permissions across the stack."}),rightSideItems:this.props.readOnly?void 0:[Object(b.jsx)(i.EuiButton,o()({"data-test-subj":"createRoleButton"},Object(j.reactRouterNavigate)(this.props.history,O("edit")),{fill:!0,iconType:"plusInCircleFilled"}),Object(b.jsx)(g.FormattedMessage,{id:"xpack.security.management.roles.createRoleButtonLabel",defaultMessage:"Create role"}))]}),Object(b.jsx)(i.EuiSpacer,{size:"l"}),this.state.showDeleteConfirmation?Object(b.jsx)(confirm_delete_ConfirmDelete,{onCancel:this.onCancelDelete,rolesToDelete:this.state.selection.map((e=>e.name)),callback:this.handleDelete,notifications:this.props.notifications,rolesAPIClient:this.props.rolesAPIClient}):null,Object(b.jsx)(f.a,null,Object(b.jsx)(i.EuiInMemoryTable,{itemId:"name",responsive:!1,columns:this.getColumnConfig(),hasActions:!0,selection:this.props.readOnly?void 0:{selectable:e=>!e.metadata||!e.metadata._reserved,selectableMessage:e=>e?"":"Role is reserved",onSelectionChange:e=>this.setState({selection:e})},pagination:{initialPageSize:20,pageSizeOptions:[10,20,30,50,100]},items:this.state.visibleRoles,loading:0===e.length,search:{toolsLeft:this.renderToolsLeft(),toolsRight:this.renderToolsRight(),box:{incremental:!0,"data-test-subj":"searchRoles"},onChange:e=>{this.setState({filter:e.queryText,visibleRoles:this.getVisibleRoles(this.state.roles,e.queryText,this.state.includeReservedRoles)})}},sorting:{sort:{field:"name",direction:"asc"}},ref:this.tableRef,rowProps:e=>({"data-test-subj":"roleRow"}),isSelectable:!0})))})),l()(this,"getColumnConfig",(()=>{const e=[{field:"name",name:m.i18n.translate("xpack.security.management.roles.nameColumnName",{defaultMessage:"Role"}),sortable:!0,render:(e,t)=>Object(b.jsx)(i.EuiText,{color:"subdued",size:"s"},Object(b.jsx)(i.EuiLink,o()({"data-test-subj":"roleRowName"},Object(j.reactRouterNavigate)(this.props.history,O("edit",e))),e))},{field:"metadata",name:m.i18n.translate("xpack.security.management.roles.statusColumnName",{defaultMessage:"Status"}),sortable:e=>Object(h.k)(e)&&!Object(h.j)(e),render:(e,t)=>this.getRoleStatusBadges(t)}];return this.props.readOnly||e.push({name:m.i18n.translate("xpack.security.management.roles.actionsColumnName",{defaultMessage:"Actions"}),width:"150px",actions:[{available:e=>!Object(h.m)(e),isPrimary:!0,render:e=>{const t=m.i18n.translate("xpack.security.management.roles.cloneRoleActionName",{defaultMessage:"Clone"}),s=m.i18n.translate("xpack.security.management.roles.cloneRoleActionLabel",{defaultMessage:"Clone {roleName}",values:{roleName:e.name}});return Object(b.jsx)(i.EuiToolTip,{content:t},Object(b.jsx)(i.EuiButtonEmpty,o()({"aria-label":s,color:"primary","data-test-subj":`clone-role-action-${e.name}`,disabled:this.state.selection.length>=1,iconType:"copy"},Object(j.reactRouterNavigate)(this.props.history,O("clone",e.name))),t))}},{available:e=>!e.metadata||!e.metadata._reserved,render:e=>{const t=m.i18n.translate("xpack.security.management.roles.deleteRoleActionName",{defaultMessage:"Delete"}),s=m.i18n.translate("xpack.security.management.roles.deleteRoleActionLabel",{defaultMessage:"Delete {roleName}",values:{roleName:e.name}});return Object(b.jsx)(i.EuiToolTip,{content:t},Object(b.jsx)(i.EuiButtonEmpty,{"aria-label":s,color:"danger","data-test-subj":`delete-role-action-${e.name}`,disabled:this.state.selection.length>=1,iconType:"trash",onClick:()=>this.deleteOneRole(e)},t))}},{available:e=>!Object(h.l)(e),enabled:()=>0===this.state.selection.length,isPrimary:!0,render:e=>{const t=m.i18n.translate("xpack.security.management.roles.editRoleActionName",{defaultMessage:"Edit"}),s=m.i18n.translate("xpack.security.management.roles.editRoleActionLabel",{defaultMessage:"Edit {roleName}",values:{roleName:e.name}});return Object(b.jsx)(i.EuiToolTip,{content:t},Object(b.jsx)(i.EuiButtonEmpty,o()({"aria-label":s,color:"primary","data-test-subj":`edit-role-action-${e.name}`,disabled:this.state.selection.length>=1,iconType:"pencil"},Object(j.reactRouterNavigate)(this.props.history,O("edit",e.name))),t))}}]}),e})),l()(this,"getVisibleRoles",((e,t,s)=>e.filter((e=>{const a=`${e.name}`.toLowerCase(),o=t.toLowerCase();return-1!==a.indexOf(o)&&(s||!Object(h.m)(e))})))),l()(this,"onIncludeReservedRolesChange",(e=>{this.setState({includeReservedRoles:e.target.checked,visibleRoles:this.getVisibleRoles(this.state.roles,this.state.filter,e.target.checked)})})),l()(this,"getRoleStatusBadges",(e=>{const t=Object(h.k)(e),s=Object(h.j)(e),a=Object(h.m)(e),o=[];return t||o.push(Object(b.jsx)(x.b,{"data-test-subj":"roleDisabled"})),a&&o.push(Object(b.jsx)(x.d,{"data-test-subj":"roleReserved",tooltipContent:Object(b.jsx)(g.FormattedMessage,{id:"xpack.security.management.roles.reservedRoleBadgeTooltip",defaultMessage:"Reserved roles are built-in and cannot be edited or removed."})})),s&&o.push(Object(b.jsx)(x.a,{"data-test-subj":"roleDeprecated",tooltipContent:Object(h.e)(e)})),Object(b.jsx)(i.EuiFlexGroup,{gutterSize:"s"},o.map(((e,t)=>Object(b.jsx)(i.EuiFlexItem,{key:t,grow:!1},e))))})),l()(this,"handleDelete",(()=>{this.setState({selection:[],showDeleteConfirmation:!1}),this.loadRoles()})),l()(this,"deleteOneRole",(e=>{this.setState({selection:[e],showDeleteConfirmation:!0})})),l()(this,"onCancelDelete",(()=>{var e;this.setState({showDeleteConfirmation:!1,selection:[]}),null===(e=this.tableRef.current)||void 0===e||e.setSelection([])})),this.state={roles:[],visibleRoles:[],selection:[],filter:"",showDeleteConfirmation:!1,permissionDenied:!1,includeReservedRoles:!0},this.tableRef=u.a.createRef()}componentDidMount(){this.loadRoles()}render(){const{permissionDenied:e}=this.state;return e?Object(b.jsx)(p,null):this.getPageContent()}async loadRoles(){try{const e=await this.props.rolesAPIClient.getRoles();this.setState({roles:e,visibleRoles:this.getVisibleRoles(e,this.state.filter,this.state.includeReservedRoles)})}catch(e){403===c.a.get(e,"body.statusCode")?this.setState({permissionDenied:!0}):this.props.notifications.toasts.addDanger(m.i18n.translate("xpack.security.management.roles.fetchingRolesErrorMessage",{defaultMessage:"Error fetching roles: {message}",values:{message:c.a.get(e,"body.message","")}}))}}renderToolsLeft(){const{selection:e}=this.state;if(0===e.length)return;const t=e.length;return Object(b.jsx)(i.EuiButton,{"data-test-subj":"deleteRoleButton",color:"danger",onClick:()=>this.setState({showDeleteConfirmation:!0})},Object(b.jsx)(g.FormattedMessage,{id:"xpack.security.management.roles.deleteSelectedRolesButtonLabel",defaultMessage:"Delete {numSelected} role{numSelected, plural, one { } other {s}}",values:{numSelected:t}}))}renderToolsRight(){return Object(b.jsx)(i.EuiSwitch,{"data-test-subj":"showReservedRolesSwitch",label:Object(b.jsx)(g.FormattedMessage,{id:"xpack.security.management.roles.showReservedRolesLabel",defaultMessage:"Show reserved roles"}),checked:this.state.includeReservedRoles,onChange:this.onIncludeReservedRolesChange})}}l()(roles_grid_page_RolesGridPage,"defaultProps",{readOnly:!1})},71:function(e,t,s){"use strict";s.d(t,"a",(function(){return i})),s.d(t,"b",(function(){return r})),s.d(t,"c",(function(){return c})),s.d(t,"d",(function(){return d}));var a=s(3),o=(s(2),s(6)),n=s(0);const l=e=>e.tooltipContent?Object(n.jsx)(a.EuiToolTip,{content:e.tooltipContent},e.children):e.children,i=e=>Object(n.jsx)(l,{tooltipContent:e.tooltipContent},Object(n.jsx)(a.EuiBadge,{"data-test-subj":e["data-test-subj"],color:"warning"},Object(n.jsx)(o.FormattedMessage,{id:"xpack.security.management.deprecatedBadge",defaultMessage:"Deprecated"}))),r=e=>Object(n.jsx)(l,{tooltipContent:e.tooltipContent},Object(n.jsx)(a.EuiBadge,{"data-test-subj":e["data-test-subj"],color:"hollow"},Object(n.jsx)(o.FormattedMessage,{id:"xpack.security.management.disabledBadge",defaultMessage:"Disabled"}))),c=e=>Object(n.jsx)(l,{tooltipContent:e.tooltipContent},Object(n.jsx)(a.EuiBadge,{"data-test-subj":e["data-test-subj"],color:"success"},Object(n.jsx)(o.FormattedMessage,{id:"xpack.security.management.enabledBadge",defaultMessage:"Enabled"}))),d=e=>Object(n.jsx)(l,{tooltipContent:e.tooltipContent},Object(n.jsx)(a.EuiBadge,{"data-test-subj":e["data-test-subj"],color:"primary"},Object(n.jsx)(o.FormattedMessage,{id:"xpack.security.management.reservedBadge",defaultMessage:"Reserved"})))},91:function(e,t,s){"use strict";s.d(t,"a",(function(){return l}));var a=s(0),o=s(2),n={name:"4i54pj",styles:".euiTableRowCell--hasActions .euiButtonEmpty{padding:0;.euiButtonEmpty__text{display:none;}}"};const l=s.n(o).a.memo((({children:e})=>Object(a.jsx)("div",{css:n},e)))}}]);