UNPKG

harperdb

Version:

HarperDB is a distributed database, caching service, streaming broker, and application development platform focused on performance and ease of use.

1 lines 16.1 kB
"use strict";(self.webpackChunkharperdb_studio=self.webpackChunkharperdb_studio||[]).push([[522],{7591:(e,t,r)=>{r.r(t),r.d(t,{default:()=>E});var n=r(9379),o=r(9950),s=r(5077),i=r(7176),a=r(6114),c=r(3452),l=r(4084),u=r(8156),f=r(6713),p=r(5269),d=r(9435),m=r(9708),h=r(5488),y=r(7348),b=r(2765),g=r(2415),j=r(6196),v=r(4414);const x=function(e){let{itemType:t,toggleDropItem:r,toggleCreate:l,baseUrl:u}=e;const{compute_stack_id:d,customer_id:x}=(0,s.g)(),A=(0,s.Zp)(),O=(0,y.MW)(),w=(0,f.O$)(p.A,(e=>e.auth)),N=(0,f.O$)(p.A,(e=>e.url)),_=(0,f.O$)(p.A,(e=>e.is_local)),k=(0,f.O$)(p.A,(e=>e.roles&&e.roles.map((e=>e.role)))),[R,S]=(0,o.useState)({});return(0,o.useEffect)((()=>{r()}),[r]),(0,v.jsx)(m.A,{onSubmit:async e=>{if(e.preventDefault(),!R.name)return S((0,n.A)((0,n.A)({},R),{},{error:!0})),O.error("You must provide a role name");if(k.includes(R.name))return S((0,n.A)((0,n.A)({},R),{},{error:!0})),O.error("Role with that name already exists");if(!(0,j.A)(R.name))return S((0,n.A)((0,n.A)({},R),{},{error:!0})),O.error("Role names must have only letters and underscores");const r="cluster user"===t?{cluster_user:!0}:"super user"===t?{super_user:!0}:{},o=await(0,b.A)({auth:w,url:N,is_local:_,compute_stack_id:d,customer_id:x,role:R.name,permission:r});return o.error?(S((0,n.A)((0,n.A)({},R),{},{error:!0})),O.error(o.message)):(S({}),await(0,g.A)({auth:w,url:N}),A("".concat(u,"/").concat(o.id)))},children:(0,v.jsxs)(i.A,{className:"item-row form",children:[(0,v.jsx)(a.A,{className:"input-holder",children:(0,v.jsx)(h.A,{id:"name",invalid:R.error,onChange:e=>S({name:e.target.value.toString()}),type:"text",name:"name",placeholder:"name"})}),(0,v.jsxs)(a.A,{className:"item-action",children:[(0,v.jsx)(c.A,{id:"createRole",color:"success",className:"round me-1",children:(0,v.jsx)("i",{className:"fa fa-check text-white"})}),(0,v.jsx)(c.A,{color:"black",className:"round",onClick:()=>l(!1),children:(0,v.jsx)("i",{className:"fa fa-times text-white"})})]})]})})};var A=r(127);const O=function(e){let{item:t,baseUrl:r,isActive:n,toggleDropItem:l,isDropping:u}=e;const d=(0,s.Zp)(),m=(0,y.MW)(),[h,b]=(0,o.useState)(!1),j=(0,f.O$)(p.A,(e=>e.auth)),x=(0,f.O$)(p.A,(e=>e.url)),O=async()=>{if(!h)return!1;const e=await(async e=>{let{auth:t,id:r,url:n}=e;return(0,A.A)({operation:{operation:"drop_role",id:r},auth:t,url:n})})({auth:j,url:x,id:t.id});return e.error?m.error(e.message):((0,g.A)({auth:j,url:x}),!!n&&setTimeout((()=>d(r)),100))};return(0,v.jsxs)(i.A,{className:"item-row ".concat(n?"active":""),onClick:()=>!(n||u||h)&&d("".concat(r,"/").concat(t.id)),children:[(0,v.jsx)(a.A,{className:"item-label ".concat(h?"text-danger text-nowrap":""),children:h?"drop ".concat(t.role,"?"):t.role}),(0,v.jsx)(a.A,{className:"item-action",children:h?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(c.A,{id:"confirmDropRole",color:"danger",className:"round me-1",title:"confirm drop ".concat(t.role),onClick:()=>{b(!1),O()},children:(0,v.jsx)("i",{className:"fa fa-check text-white"})}),(0,v.jsx)(c.A,{color:"black",className:"round",title:"Cancel drop ".concat(t.role),onClick:()=>{b(!1)},children:(0,v.jsx)("i",{className:"fa fa-times text-white"})})]}):u?(0,v.jsx)(c.A,{id:"drop".concat(t.role),color:"danger",className:"round",title:"Drop ".concat(t.role),onClick:()=>{b(t),l(!1)},children:(0,v.jsx)("i",{className:"fa fa-minus text-white"})}):n?(0,v.jsx)(c.A,{color:"purple",className:"round",title:"Viewing ".concat(t.role),children:(0,v.jsx)("i",{className:"fa fa-chevron-right"})}):null})]},t)};const w=function(e){let{items:t,itemType:r,toggleDropItem:n,isDropping:o,toggleCreate:s,isCreating:l,showForm:u}=e;return(0,v.jsxs)(i.A,{className:"floating-card-header",children:[(0,v.jsxs)(a.A,{children:[r,"s"]}),u&&t&&t.length?(0,v.jsxs)(a.A,{className:"text-end",children:[(0,v.jsx)(c.A,{color:"link",title:"Remove ".concat(r,"s"),className:"add-remove me-3",onClick:()=>{n(!o),s(!1)},children:(0,v.jsx)("i",{className:"fa fa-minus"})}),(0,v.jsx)(c.A,{color:"link",title:"Add ".concat(r),className:"add-remove me-1",onClick:()=>{s(!l),n(!1)},children:(0,v.jsx)("i",{className:"fa fa-plus"})})]}):null]})};var N=r(3150),_=r(3628);const k=function(e){let{items:t,activeItem:r,showForm:n,baseUrl:s,itemType:i}=e;const[a,c]=(0,o.useState)(!1),[f,p]=(0,o.useState)(!1);(0,o.useEffect)((()=>{p(),c()}),[r,t]);const m=t&&[...t].sort(((e,t)=>e.role<t.role?-1:1));return(0,v.jsx)(d.tH,{onError:(e,t)=>(0,_.A)({error:{message:e.message,componentStack:t}}),FallbackComponent:N.A,children:(0,v.jsxs)("div",{className:"entity-manager",children:[(0,v.jsx)(w,{items:t,itemType:i,isDropping:a,toggleDropItem:c,isCreating:f,toggleCreate:p,showForm:n}),(0,v.jsx)(l.A,{className:"my-3",children:(0,v.jsxs)(u.A,{children:[m&&m.length?m.map((e=>(0,v.jsx)(O,{item:e,baseUrl:s,isActive:r===e.id,isDropping:a,toggleDropItem:c},e.id))):null,(t&&!t.length||f)&&(0,v.jsx)(x,{itemType:i,baseUrl:s,isDropping:a,toggleDropItem:c,isCreating:f,toggleCreate:p})]})})]})})};var R=r(4979),S=r(717);const C=(0,o.lazy)((()=>Promise.all([r.e(239),r.e(831)]).then(r.bind(r,3109)))),P={roleName:!1,canEdit:!1,superUsers:[],clusterUsers:[],standardUsers:[],showAttributes:!1};const E=function(){const{role_id:e,customer_id:t}=(0,s.g)(),r=(0,f.O$)(p.A,(e=>e.compute_stack_id)),d=(0,f.O$)(p.A,(e=>e.auth)),m=(0,f.O$)(p.A,(e=>e.url)),h=(0,f.O$)(p.A,(e=>e.roles),[r]),[y,b]=(0,o.useState)(!1),[j,x]=(0,o.useState)(P),A="/o/".concat(t,"/i/").concat(r,"/roles"),O=(0,f.O$)(p.A,(e=>{var t;return null===(t=e.registration)||void 0===t?void 0:t.version})),[w,N]=(null===O||void 0===O?void 0:O.split("."))||[],_=parseFloat("".concat(w,".").concat(N)),E=(0,o.useCallback)((async()=>{b(!0),await(0,g.A)({auth:d,url:m}),await(0,S.A)({auth:d,url:m}),b(!1)}),[d,m]);return(0,o.useEffect)((()=>{if(h){const t=e&&h.find((t=>t.id===e));x((0,n.A)((0,n.A)({},j),{},{roleName:t&&t.role,canEdit:t&&!t.permission.cluster_user&&!t.permission.super_user,clusterUsers:h.filter((e=>e.permission.cluster_user)),superUsers:h.filter((e=>e.permission.super_user)),standardUsers:h.filter((e=>!e.permission.super_user&&!e.permission.cluster_user)),showAttributes:!1}))}else x(P)}),[e,h]),(0,o.useEffect)((()=>{E()}),[E,r]),(0,v.jsxs)(i.A,{id:"roles",children:[(0,v.jsxs)(a.A,{xl:"3",lg:"4",md:"5",xs:"12",children:[(0,v.jsx)(k,{showForm:!0,activeItem:e,items:j.superUsers,baseUrl:A,itemType:"super user"}),(0,v.jsx)(k,{showForm:!0,activeItem:e,items:j.clusterUsers,baseUrl:A,itemType:"cluster user"}),(0,v.jsx)(k,{showForm:!0,activeItem:e,items:j.standardUsers,baseUrl:A,itemType:"standard role"})]}),(0,v.jsxs)(a.A,{xl:"9",lg:"8",md:"7",xs:"12",children:[(0,v.jsxs)(i.A,{className:"floating-card-header",children:[j.canEdit&&(0,v.jsxs)(a.A,{children:["edit role > ",j.roleName]}),(0,v.jsxs)(a.A,{className:"text-md-end",children:[j.canEdit&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(c.A,{color:"link",tabIndex:"0",title:"Show Attributes",onClick:()=>x((0,n.A)((0,n.A)({},j),{},{showAttributes:!j.showAttributes})),children:[(0,v.jsx)("span",{className:"me-2",children:"show all attributes"}),(0,v.jsx)("i",{className:"fa fa-lg fa-toggle-".concat(j.showAttributes?"on":"off")})]}),(0,v.jsx)("span",{className:"mx-3 text",children:"|"})]}),(0,v.jsxs)(c.A,{color:"link",onClick:E,className:"me-2",children:[(0,v.jsx)("span",{className:"me-2",children:"refresh roles"}),(0,v.jsx)("i",{title:"Refresh Roles",className:"fa ".concat(y?"fa-spinner fa-spin":"fa-sync-alt")})]})]})]}),j.canEdit?(0,v.jsx)(l.A,{className:"my-3",children:(0,v.jsx)(u.A,{className:"full-height",children:(0,v.jsx)(o.Suspense,{fallback:(0,v.jsx)(R.A,{header:" ",spinner:!0}),children:(0,v.jsx)(C,{showAttributes:j.showAttributes,fetchRoles:E})})})}):(0,v.jsx)(l.A,{className:"my-3",children:(0,v.jsx)(u.A,{children:e?(0,v.jsxs)("div",{className:"empty-prompt",children:["Super Users and Cluster Users have full access to all"," ",_>=4.2?"databases":"schemas",", tables, and attributes."]}):(0,v.jsx)("div",{className:"empty-prompt",children:"Please choose or add a role to manage it."})})})]})]})}},2765:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(127);const o=async e=>{let{auth:t,url:r,role:o,permission:s}=e;return(0,n.A)({operation:{operation:"add_role",role:o,permission:s},auth:t,url:r})}},2415:(e,t,r)=>{r.d(t,{A:()=>s});var n=r(127),o=r(5269);const s=async e=>{let{auth:t,url:r}=e;const s=await(0,n.A)({operation:{operation:"list_roles"},auth:t,url:r}),i=[...Array.isArray(s)?s:[]].sort(((e,t)=>e.role.toLowerCase()>t.role.toLowerCase()?1:-1));return o.A.update((e=>{e.roles=i})),i}},6196:(e,t,r)=>{r.d(t,{A:()=>n});const n=e=>e.match(/^[a-zA-Z_]+$/)},9708:(e,t,r)=>{r.d(t,{A:()=>g});var n=r(9950),o=r(1942),s=r.n(o),i=r(1497);function a(e){return a="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},a(e)}var c=["className","cssModule","tag","innerRef"];function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},l.apply(this,arguments)}function u(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},s=Object.keys(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function f(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function p(e,t){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},p(e,t)}function d(e){var t=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=h(e);if(t){var o=h(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return function(e,t){if(t&&("object"===a(t)||"function"===typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return m(e)}(this,r)}}function m(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},h(e)}var y={children:s().node,tag:i.Wx,innerRef:s().oneOfType([s().object,s().func,s().string]),className:s().string,cssModule:s().object},b=function(e){!function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}(a,e);var t,r,o,s=d(a);function a(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a),(t=s.call(this,e)).getRef=t.getRef.bind(m(t)),t.submit=t.submit.bind(m(t)),t}return t=a,(r=[{key:"getRef",value:function(e){this.props.innerRef&&this.props.innerRef(e),this.ref=e}},{key:"submit",value:function(){this.ref&&this.ref.submit()}},{key:"render",value:function(){var e=this.props,t=e.className,r=e.cssModule,o=e.tag,s=void 0===o?"form":o,a=e.innerRef,f=u(e,c),p=(0,i.qO)(t,r);return n.createElement(s,l({},f,{ref:a,className:p}))}}])&&f(t.prototype,r),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),a}(n.Component);b.propTypes=y;const g=b},5488:(e,t,r)=>{r.d(t,{A:()=>v});var n=r(9950),o=r(1942),s=r.n(o),i=r(8738),a=r.n(i),c=r(1497);function l(e){return l="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},l(e)}var u=["className","cssModule","type","bsSize","valid","invalid","tag","addon","plaintext","innerRef"];function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},f.apply(this,arguments)}function p(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},s=Object.keys(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function d(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function m(e,t){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},m(e,t)}function h(e){var t=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=b(e);if(t){var o=b(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return function(e,t){if(t&&("object"===l(t)||"function"===typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return y(e)}(this,r)}}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function b(e){return b=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},b(e)}var g={children:s().node,type:s().string,size:s().oneOfType([s().number,s().string]),bsSize:s().string,valid:s().bool,invalid:s().bool,tag:c.Wx,innerRef:s().oneOfType([s().object,s().func,s().string]),plaintext:s().bool,addon:s().bool,className:s().string,cssModule:s().object},j=function(e){!function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&m(e,t)}(i,e);var t,r,o,s=h(i);function i(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,i),(t=s.call(this,e)).getRef=t.getRef.bind(y(t)),t.focus=t.focus.bind(y(t)),t}return t=i,(r=[{key:"getRef",value:function(e){this.props.innerRef&&this.props.innerRef(e),this.ref=e}},{key:"focus",value:function(){this.ref&&this.ref.focus()}},{key:"render",value:function(){var e=this.props,t=e.className,r=e.cssModule,o=e.type,s=void 0===o?"text":o,i=e.bsSize,l=e.valid,d=e.invalid,m=e.tag,h=e.addon,y=e.plaintext,b=e.innerRef,g=p(e,u),j=["switch","radio","checkbox"].indexOf(s)>-1,v="select"===s,x="range"===s,A=m||(v||"textarea"===s?s:"input"),O="form-control";y?(O="".concat(O,"-plaintext"),A=m||"input"):x?O="form-range":v?O="form-select":j&&(O=h?null:"form-check-input"),g.size&&/\D/g.test(g.size)&&((0,c.mc)('Please use the prop "bsSize" instead of the "size" to bootstrap\'s input sizing.'),i=g.size,delete g.size);var w=(0,c.qO)(a()(t,d&&"is-invalid",l&&"is-valid",!!i&&(v?"form-select-".concat(i):"form-control-".concat(i)),O),r);return("input"===A||m&&"function"===typeof m)&&(g.type="switch"===s?"checkbox":s),g.children&&!y&&"select"!==s&&"string"===typeof A&&"select"!==A&&((0,c.mc)('Input with a type of "'.concat(s,'" cannot have children. Please use "value"/"defaultValue" instead.')),delete g.children),n.createElement(A,f({},g,{ref:b,className:w,"aria-invalid":d}))}}])&&d(t.prototype,r),o&&d(t,o),Object.defineProperty(t,"prototype",{writable:!1}),i}(n.Component);j.propTypes=g;const v=j}}]);