@nocobase/plugin-acl 1.5.0-beta.1 → 1.6.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/733.index.js +10 -0
- package/dist/client/748.index.js +10 -0
- package/dist/client/818.index.js +10 -0
- package/dist/client/871.index.js +10 -0
- package/dist/client/index.js +1 -9
- package/dist/externalVersion.js +8 -9
- package/dist/server/model/RoleResourceModel.d.ts +1 -1
- package/dist/server/server.d.ts +1 -0
- package/dist/server/server.js +28 -3
- package/package.json +2 -3
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
"use strict";(self.webpackChunk_nocobase_plugin_acl=self.webpackChunk_nocobase_plugin_acl||[]).push([["733"],{594:function(e,t,r){r.r(t),r.d(t,{RolesManagement:function(){return M}});var n=r("156"),o=r.n(n),a=r("721"),l=r("772"),i=r("505"),c=r("482"),u=r("888"),s=r("746"),f=r("875"),p=r("467");function m(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var y={type:"object",properties:m({},(0,f.uid)(),{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:function(e){var t,r,o=(0,l.useRecord)();var a=(0,l.useRequest)(function(){return Promise.resolve({data:(0,p.pick)(o,["title","name","default"])})},(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){m(e,t,r[t])})}return e}({},e),r=(r={manual:!0},r),Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t)),i=(0,l.useActionContext)();return(0,n.useEffect)(function(){i.visible&&a.run()},[i.visible]),a}},title:'{{t("Edit role")}}',properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem"},name:{"x-component":"CollectionField","x-decorator":"FormItem","x-disabled":!0},default:{title:"","x-component":"CollectionField","x-decorator":"FormItem","x-content":'{{t("Default role")}}',"x-reactions":function(e){e.initialValue?e.disabled=!0:e.disabled=!1}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useUpdateAction }}"}}}}}})};function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var b=function(e){var t,r,o=e.loadMore;var a=(t=(0,n.useState)(null),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r,n,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{!l&&null!=o.return&&o.return()}finally{if(i)throw n}}return a}}(t,2)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return d(e,t)}}(t,r)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=a[0],i=a[1],c=(0,n.useRef)(null),u=(0,n.useCallback)(function(e){if(!!e)c.current&&c.current.disconnect(),c.current=new IntersectionObserver(function(t){t.forEach(function(t){if(t.target===e.current)t.isIntersecting&&(c.current&&c.current.unobserve(e.current),o())})}),e.current&&c.current&&c.current.observe(e.current)},[o]);return(0,n.useEffect)(function(){return u(l),function(){c.current&&c.current.disconnect()}},[l,u]),{lastItem:l,setLastItem:i}};function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function h(e,t,r,n,o,a,l){try{var i=e[a](l),c=i.value}catch(e){r(e);return}i.done?t(c):Promise.resolve(c).then(n,o)}function g(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function l(e){h(a,n,o,l,i,"next",e)}function i(e){h(a,n,o,l,i,"throw",e)}l(void 0)})}}function O(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{!l&&null!=o.return&&o.return()}finally{if(i)throw n}}return a}}(e,t)||x(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function w(e){return function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||x(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(e,t){if(e){if("string"==typeof e)return v(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return v(e,t)}}function E(e,t){var r,n,o,a,l={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){return function(a){if(r)throw TypeError("Generator is already executing.");for(;l;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return l.label++,{value:a[1],done:!1};case 5:l.label++,n=a[1],a=[0];continue;case 7:a=l.ops.pop(),l.trys.pop();continue;default:if(!(o=(o=l.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){l=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){l.label=a[1];break}if(6===a[0]&&l.label<o[1]){l.label=o[1],o=a;break}if(o&&l.label<o[2]){l.label=o[2],l.ops.push(a);break}o[2]&&l.ops.pop(),l.trys.pop();continue}a=t.call(e,l)}catch(e){a=[6,e],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,i])}}}var A=function(){var e=(0,u.g)().t,t=(0,l.useResourceActionContext)(),r=t.data,i=t.mutate,c=O((0,n.useState)(!1),2),f=c[0],p=c[1],m=O((0,n.useState)(null),2),d=m[0],v=m[1],h=(0,n.useContext)(s.T),x=h.role,S=h.setRole,j=O((0,n.useState)([]),2),P=j[0],C=j[1],I=O((0,n.useState)(!1),2),k=I[0],D=I[1],R=(0,l.useAPIClient)(),T=b({loadMore:(0,n.useCallback)(g(function(){var e,t;return E(this,function(n){switch(n.label){case 0:if(!(e=null==r?void 0:r.meta)||e.page>=e.totalPage)return[2];return D(!0),[4,R.resource("roles").list({page:e.page+1,pageSize:e.pageSize,filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]})];case 1:return i((null==(t=n.sent())?void 0:t.data)||{}),D(!1),[2]}})}),[r])}),F=T.lastItem,M=T.setLastItem;(0,n.useEffect)(function(){if(!!P[0])S(P[0])},[P,S]),(0,n.useEffect)(function(){var e,t;if(!!(null==r?void 0:null===(e=r.data)||void 0===e?void 0:e.length))M(o().createRef()),(null===(t=r.meta)||void 0===t?void 0:t.page)>1?C(function(e){return e.concat(r.data)}):C(r.data)},[r,M]);var U=(0,n.useMemo)(function(){return P.map(function(e,t){return{key:e.name,label:t===P.length-1?o().createElement("div",{ref:F},o().createElement(A.Item,{item:e,onEdit:function(){p(!0),v(e)}})):o().createElement(A.Item,{item:e,onEdit:function(){p(!0),v(e)}})}})},[P,F]);return o().createElement(o().Fragment,null,P.length?o().createElement(a.Menu,{style:{border:"none",maxHeight:"65vh",overflowY:"auto"},items:w(U).concat(w(k?[{key:"loading",label:o().createElement(a.Spin,null)}]:[])),selectedKeys:[null==x?void 0:x.name],onSelect:function(e){var t=e.key;S(P.find(function(e){return e.name===t}))}}):o().createElement(a.Empty,{image:a.Empty.PRESENTED_IMAGE_SIMPLE}),o().createElement(l.ActionContextProvider,{value:{visible:f,setVisible:p}},o().createElement(l.RecordProvider,{record:d,collectionName:"departments"},o().createElement(l.SchemaComponent,{scope:{t:e},schema:y}))))};A.Item=function(e){var t=e.item,r=e.onEdit,n=(0,u.g)().t,s=(0,l.useResourceActionContext)().refreshAsync,f=a.App.useApp(),p=f.modal,m=f.message,y=(0,l.useAPIClient)(),d=function(){p.confirm({title:n("Delete"),content:n("Are you sure you want to delete it?"),onOk:g(function(){return E(this,function(e){switch(e.label){case 0:return[4,y.resource("roles").destroy({filterByTk:t.name})];case 1:return e.sent(),m.success(n("Deleted successfully")),[4,s()];case 2:return e.sent(),[2]}})})})},b=i.Schema.compile(t.title,{t:n});return o().createElement(a.Row,null,o().createElement(a.Col,{flex:3,style:{display:"inline-flex",alignItems:"center"}},o().createElement("span",{style:{whiteSpace:"nowrap",width:"120px",overflow:"hidden",textOverflow:"ellipsis"}},o().createElement(c.TagOutlined,null),o().createElement("span",{style:{marginLeft:"10px"},title:b},b))),o().createElement(a.Col,null,t.default?o().createElement(a.Tag,{color:"success",bordered:!1},n("Default")):null,o().createElement(a.Dropdown,{menu:{items:[{label:n("Edit"),key:"edit"},{label:n("Delete"),key:"delete"}],onClick:function(e){var t=e.key;switch(e.domEvent.stopPropagation(),t){case"edit":r();break;case"delete":d()}}}},o().createElement(c.MoreOutlined,null))))};var S=r("590"),j=r("844");function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var C=function(e){return o().createElement("div",{style:{maxHeight:"60vh",overflowY:"auto"}},e.children)},I=function(e){var t,r,i=e.active,c=(0,u.g)().t;var f=(t=o().useState("general"),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r,n,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{!l&&null!=o.return&&o.return()}finally{if(i)throw n}}return a}}(t,2)||function(e,t){if(e){if("string"==typeof e)return P(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return P(e,t)}}(t,r)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),p=f[0],m=f[1],y=(0,n.useContext)(s.T),d=y.role,b=y.setRole,v=(0,l.usePlugin)(S.default),h=(0,l.useACLRoleContext)(),g=(0,n.useMemo)(function(){return v.settingsUI.getPermissionsTabs({t:c,activeKey:p,TabLayout:C,activeRole:d,currentUserRole:h}).filter(Boolean)},[p,v.settingsUI,d,c,h]),O=(0,l.useAPIClient)(),w=(0,l.useRequest)(function(){return O.resource("roles").get({filterByTk:null==d?void 0:d.name}).then(function(e){var t,r,n=null==e?void 0:null===(t=e.data)||void 0===t?void 0:t.data;return null===(r=n.snippets)||void 0===r||r.forEach(function(e){n[e]=!0}),n})},{ready:i&&!!d,refreshDeps:[null==d?void 0:d.name]}).data;return(0,n.useEffect)(function(){m("general")},[null==d?void 0:d.name]),(0,n.useEffect)(function(){b(w)},[w,b]),o().createElement(j.U,null,o().createElement(a.Tabs,{type:"card",activeKey:p,onChange:function(e){return m(e)},items:g}))},k=function(){var e=(0,u.g)().t;return o().createElement(l.SchemaComponent,{scope:{t:e},schema:{type:"void",properties:{newRole:{type:"void",title:e("New role"),"x-component":"Action","x-component-props":{type:"text",icon:"PlusOutlined",style:{width:"100%",textAlign:"left"}},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:function(e){var t,r,n=(0,l.useActionContext)();return(0,l.useRequest)(function(){return Promise.resolve({data:{name:"r_".concat((0,f.uid)()),snippets:["!ui.*","!pm","!pm.*"]}})},(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n,o,a;n=e,o=t,a=r[t],o in n?Object.defineProperty(n,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[o]=a})}return e}({},e),r=(r={refreshDeps:[n.visible]},r),Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))}},title:e("New role"),properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem"},name:{"x-component":"CollectionField","x-decorator":"FormItem",description:'{{t("Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.")}}'},default:{"x-component":"CollectionField","x-decorator":"FormItem",title:"","x-content":'{{t("Default role")}}'},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useCreateAction }}"}}}}}}}}}}})};function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function R(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{!l&&null!=o.return&&o.return()}finally{if(i)throw n}}return a}}(e,t)||T(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(e,t){if(e){if("string"==typeof e)return D(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return D(e,t)}}var F={name:"roles",filterTargetKey:"name",targetKey:"name",fields:[{type:"string",name:"title",interface:"input",uiSchema:{title:'{{t("Role display name")}}',type:"number","x-component":"Input",required:!0}},{type:"string",name:"name",interface:"input",uiSchema:{title:'{{t("Role UID")}}',type:"string","x-component":"Input"}},{type:"boolean",name:"default",interface:"boolean",uiSchema:{title:'{{t("Default role")}}',type:"boolean","x-component":"Checkbox"}}]},M=function(){var e,t,r,c=(0,u.g)().t,f=(0,l.usePlugin)(S.default),p=R(o().useState("permissions"),2),m=p[0],y=p[1],d=Array.from(f.rolesManager.list()).map(function(e){var t=R(e,2),r=t[0],n=t[1];return{key:r,label:i.Schema.compile(n.title,{t:c}),children:n.Component?o().createElement(n.Component,{active:m===r}):null}}),b=R((0,n.useState)(null),2),v=b[0],h=b[1],g=(0,l.useSchemaComponentContext)();return o().createElement(l.SchemaComponentContext.Provider,{value:(e=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n,o,a;n=e,o=t,a=r[t],o in n?Object.defineProperty(n,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[o]=a})}return e}({},g),t=(t={designable:!1},t),Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e)},o().createElement(s.T.Provider,{value:{role:v,setRole:h}},o().createElement(a.Card,null,o().createElement(a.Row,{gutter:24,style:{flexWrap:"nowrap"}},o().createElement(a.Col,{flex:"280px",style:{borderRight:"1px solid #eee",minWidth:"250px"}},o().createElement(l.ResourceActionProvider,{collection:F,request:{resource:"roles",action:"list",params:{filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]}}},o().createElement(l.CollectionProvider_deprecated,{collection:F},o().createElement(a.Row,null,o().createElement(k,null)),o().createElement(a.Divider,{style:{margin:"12px 0"}}),o().createElement(A,null)))),o().createElement(a.Col,{flex:"auto",style:{overflow:"hidden"}},o().createElement(a.Tabs,{activeKey:m,onChange:function(e){return y(e)},items:[{key:"permissions",label:c("Permissions"),children:o().createElement(I,{active:"permissions"===m})}].concat(function(e){if(Array.isArray(e))return D(e)}(r=d)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||T(r)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())}))))))}},844:function(e,t,r){r.d(t,{U:function(){return c},r:function(){return u}});var n=r(772),o=r(721),a=r(156),l=r.n(a),i=(0,a.createContext)([]);i.displayName="AvailableActionsContext";var c=function(e){var t=(0,n.useRequest)({resource:"availableActions",action:"list"}),r=t.data;return t.loading?l().createElement(o.Spin,null):l().createElement(i.Provider,{value:null==r?void 0:r.data},e.children)},u=function(){return(0,a.useContext)(i)}},888:function(e,t,r){r.d(t,{g:function(){return o}});var n=r(238);function o(){return(0,n.useTranslation)(["@nocobase/plugin-acl","client"],{nsMode:"fallback"})}}}]);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
"use strict";(self.webpackChunk_nocobase_plugin_acl=self.webpackChunk_nocobase_plugin_acl||[]).push([["748"],{844:function(e,n,t){t.d(n,{U:function(){return u},r:function(){return c}});var r=t(772),o=t(721),a=t(156),l=t.n(a),i=(0,a.createContext)([]);i.displayName="AvailableActionsContext";var u=function(e){var n=(0,r.useRequest)({resource:"availableActions",action:"list"}),t=n.data;return n.loading?l().createElement(o.Spin,null):l().createElement(i.Provider,{value:null==t?void 0:t.data},e.children)},c=function(){return(0,a.useContext)(i)}},294:function(e,n,t){t.r(n),t.d(n,{GeneralPermissions:function(){return _}});var r=t("563"),o=t("505"),a=t("875"),l=t("772"),i=t("749"),u=t("721"),c=t("467"),s=t.n(c),f=t("156"),p=t.n(f),d=t("238"),m=t("888"),y=t("746"),v=t("368");function b(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function h(e,n,t,r,o,a,l){try{var i=e[a](l),u=i.value}catch(e){t(e);return}i.done?n(u):Promise.resolve(u).then(r,o)}function g(e){return function(){var n=this,t=arguments;return new Promise(function(r,o){var a=e.apply(n,t);function l(e){h(a,r,o,l,i,"next",e)}function i(e){h(a,r,o,l,i,"throw",e)}l(void 0)})}}function w(e,n){if(e){if("string"==typeof e)return b(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return b(e,n)}}function S(e,n){var t,r,o,a,l={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){return function(a){if(t)throw TypeError("Generator is already executing.");for(;l;)try{if(t=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return l.label++,{value:a[1],done:!1};case 5:l.label++,r=a[1],a=[0];continue;case 7:a=l.ops.pop(),l.trys.pop();continue;default:if(!(o=(o=l.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){l=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){l.label=a[1];break}if(6===a[0]&&l.label<o[1]){l.label=o[1],o=a;break}if(o&&l.label<o[2]){l.label=o[2],l.ops.push(a);break}o[2]&&l.ops.pop(),l.trys.pop();continue}a=n.call(e,l)}catch(e){a=[6,e],r=0}finally{t=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,i])}}}var x=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=!0,r=!1,o=void 0;try{for(var a,l=e[Symbol.iterator]();!(t=(a=l.next()).done);t=!0){var i=a.value;n.push(i.aclSnippet),i.children&&i.children.length&&x(i.children,n)}}catch(e){r=!0,o=e}finally{try{!t&&null!=l.return&&l.return()}finally{if(r)throw o}}return n},O=function(e){var n,t,r,o=e.active,a=(0,l.useApp)(),i=(0,v.y)().styles,m=(0,f.useContext)(y.T).role,h=(0,l.useAPIClient)(),O=(0,l.useCompile)(),A=a.pluginSettingsManager.getList(!1),k=a.pluginSettingsManager.getAclSnippets();var C=(n=(0,f.useState)((null==m?void 0:m.snippets)||[]),t=2,function(e){if(Array.isArray(e))return e}(n)||function(e,n){var t,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(t=o.next()).done)&&(a.push(t.value),!n||a.length!==n);l=!0);}catch(e){i=!0,r=e}finally{try{!l&&null!=o.return&&o.return()}finally{if(i)throw r}}return a}}(n,2)||w(n,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),j=C[0],E=C[1],P=(0,f.useMemo)(function(){return(0,c.flatMap)(A,function(e){var n;if(!e.children)return e;return[e].concat(function(e){if(Array.isArray(e))return b(e)}(n=e.children)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||w(n)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())})},[A]),T=(0,f.useMemo)(function(){return j.includes("pm.*")&&j.every(function(e){return!e.startsWith("!pm.")})},[j]),I=(0,d.useTranslation)().t,M=(0,l.useRequest)({resource:"roles.snippets",resourceOf:null==m?void 0:m.name,action:"list",params:{paginate:!1}},{ready:!!m&&o,refreshDeps:[null==m?void 0:m.name],manual:!0,onSuccess:function(e){E((null==e?void 0:e.data.filter(function(e){return P.find(function(n){return e.includes("!".concat(n.aclSnippet))||!e.startsWith("!pm.")})}))||[])}}),F=M.loading,D=M.refresh;if(!!m){var _=h.resource("roles.snippets",null==m?void 0:m.name);var z=(r=g(function(e,n){var t;return S(this,function(r){switch(r.label){case 0:if(t=x(null==n?void 0:n.children,[]).concat(n.aclSnippet),e)return[3,2];return[4,_.remove({values:t.map(function(e){return"!"+e})})];case 1:return r.sent(),D(),[3,4];case 2:return[4,_.add({values:t.map(function(e){return"!"+e})})];case 3:r.sent(),D(),r.label=4;case 4:return u.message.success(I("Saved successfully")),[2]}})}),function(e,n){return r.apply(this,arguments)});return p().createElement(u.Table,{className:i,loading:F,rowKey:"key",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:I("Plugin name"),render:function(e){return O(e)}},{dataIndex:"accessible",title:p().createElement(p().Fragment,null,p().createElement(u.Checkbox,{checked:T,onChange:g(function(){var e;return S(this,function(n){switch(n.label){case 0:if(e=k.map(function(e){return"!"+e}),T)return[3,2];return[4,_.remove({values:e})];case 1:return n.sent(),[3,4];case 2:return[4,_.add({values:e})];case 3:n.sent(),n.label=4;case 4:return D(),u.message.success(I("Saved successfully")),[2]}})})}),I("Accessible")),render:function(e,n){var t=!j.includes("!"+n.aclSnippet);return p().createElement(u.Checkbox,{checked:t,onChange:function(){return z(t,n)}})}}],dataSource:A.filter(function(e){return!1!==e.isTopLevel}).map(function(e){return!1!==e.showTabs?e:s().omit(e,"children")})})}},A=t("844");function k(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}var C=function(e){if(!e)return{};var n,t={};return null==e||null===(n=e.forEach)||void 0===n||n.call(e,function(e){var n,r,o=(n=e.split(":"),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,n){var t,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(t=o.next()).done)&&(a.push(t.value),!n||a.length!==n);l=!0);}catch(e){i=!0,r=e}finally{try{!l&&null!=o.return&&o.return()}finally{if(i)throw r}}return a}}(n,2)||function(e,n){if(e){if("string"==typeof e)return k(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return k(e,n)}}(n,r)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=o[0],l=o[1];t[a]=l||"all"}),t},j=function(e){var n=[];for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)){var r=e[t];"all"===r?n.push(t):n.push("".concat(t,":").concat(r))}return n},E=(0,o.connect)(function(e){var n=e.onChange,t=(0,A.r)(),r=(0,l.useCompile)(),a=(0,d.useTranslation)().t,i=C((0,o.useField)().value);return p().createElement("div",null,p().createElement(u.Table,{rowKey:"name",size:"small",pagination:!1,columns:[{dataIndex:"displayName",title:a("Action display name"),render:function(e){return r(e)}},{dataIndex:"onNewRecord",title:a("Action type"),render:function(e){return e?p().createElement(u.Tag,{color:"green"},a("Action on new records")):p().createElement(u.Tag,{color:"geekblue"},a("Action on existing records"))}},{dataIndex:"enabled",title:a("Allow"),render:function(e,t){return p().createElement(u.Checkbox,{checked:e,"aria-label":"".concat(t.name,"_checkbox"),onChange:function(r){e?delete i[t.name]:i[t.name]="all",n(j(i))}})}},{dataIndex:"scope",title:a("Data scope"),render:function(e,t){return!t.onNewRecord&&p().createElement(u.Select,{"data-testid":"select-data-scope",popupMatchSelectWidth:!1,size:"small",value:e,options:[{label:a("All records"),value:"all"},{label:a("Own records"),value:"own"}],onChange:function(e){i[t.name]=e,n(j(i))}})}}],dataSource:null==t?void 0:t.map(function(e){var n,t,r="all",o=!1;return i[e.name]&&(o=!0,r=i[e.name]),n=function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){var r,o,a;r=e,o=n,a=t[n],o in r?Object.defineProperty(r,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):r[o]=a})}return e}({},e),t=(t={enabled:o,scope:r},t),Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):(function(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}),n})}))});function P(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function T(e,n,t,r,o,a,l){try{var i=e[a](l),u=i.value}catch(e){t(e);return}i.done?n(u):Promise.resolve(u).then(r,o)}function I(e){return function(){var n=this,t=arguments;return new Promise(function(r,o){var a=e.apply(n,t);function l(e){T(a,r,o,l,i,"next",e)}function i(e){T(a,r,o,l,i,"throw",e)}l(void 0)})}}function M(e){return function(e){if(Array.isArray(e))return P(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,n){if(e){if("string"==typeof e)return P(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return P(e,n)}}(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function F(e,n){var t,r,o,a,l={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){return function(a){if(t)throw TypeError("Generator is already executing.");for(;l;)try{if(t=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return l.label++,{value:a[1],done:!1};case 5:l.label++,r=a[1],a=[0];continue;case 7:a=l.ops.pop(),l.trys.pop();continue;default:if(!(o=(o=l.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){l=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){l.label=a[1];break}if(6===a[0]&&l.label<o[1]){l.label=o[1],o=a;break}if(o&&l.label<o[2]){l.label=o[2],l.ops.push(a);break}o[2]&&l.ops.pop(),l.trys.pop();continue}a=n.call(e,l)}catch(e){a=[6,e],r=0}finally{t=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,i])}}}var D=(0,o.connect)(function(e){var n=(0,d.useTranslation)().t;return p().createElement(u.Checkbox.Group,{style:{width:"100%",display:"block"},value:e.value,onChange:function(n){var t=["ui.*","pm","pm.*","app"],r=t.map(function(e){return"!".concat(e)}),o=(0,c.uniq)(M(e.value||[]).concat(M(n))).filter(function(e){return e&&!r.includes(e)}).map(function(e){return!t.includes(e)||(null==n?void 0:n.includes(e))?e:"!".concat(e)}),a=!0,l=!1,i=void 0;try{for(var u,s=t[Symbol.iterator]();!(a=(u=s.next()).done);a=!0){var f=u.value;!o.includes(f)&&!o.includes("!".concat(f))&&o.push("!".concat(f))}}catch(e){l=!0,i=e}finally{try{!a&&null!=s.return&&s.return()}finally{if(l)throw i}}e.onChange(o)}},p().createElement("div",{style:{marginTop:16}},p().createElement(u.Checkbox,{value:"ui.*"},n("Allows to configure interface"))),p().createElement("div",{style:{marginTop:8}},p().createElement(u.Checkbox,{value:"pm"},n("Allows to install, activate, disable plugins"))),p().createElement("div",{style:{marginTop:8}},p().createElement(u.Checkbox,{value:"pm.*"},n("Allows to configure plugins"))),p().createElement("div",{style:{marginTop:8}},p().createElement(u.Checkbox,{value:"app"},n("Allows to clear cache, reboot application"))))}),_=function(){var e,n,t=(0,f.useContext)(y.T),o=t.role,c=t.setRole,s=(0,m.g)().t,d=(0,l.useAPIClient)(),v=null==o?void 0:null===(n=o.snippets)||void 0===n?void 0:n.includes("pm.*");var b=(0,i.useMemoizedFn)((e=I(function(e){return F(this,function(n){switch(n.label){case 0:return[4,d.resource("roles").update({filterByTk:o.name,values:{snippets:e.values.snippets}})];case 1:return n.sent(),c(function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){var r,o,a;r=e,o=n,a=t[n],o in r?Object.defineProperty(r,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):r[o]=a})}return e}({},o,e.values)),u.message.success(s("Saved successfully")),[2]}})}),function(n){return e.apply(this,arguments)})),h=(0,f.useMemo)(function(){return(0,r.createForm)({values:o,effects:function(){var e;(0,r.onFormValuesChange)((e=I(function(e){return F(this,function(n){switch(n.label){case 0:return[4,b(e)];case 1:return n.sent(),[2]}})}),function(n){return e.apply(this,arguments)}))}})},[o,b]);return p().createElement(l.SchemaComponent,{components:{SnippetCheckboxGroup:D,StrategyActions:E,PluginPermissions:O},scope:{pm:v},schema:{type:"void",name:(0,a.uid)(),"x-component":"div",properties:{general:{"x-component":"FormV2","x-component-props":{form:h},properties:{snippets:{title:s("Configure permissions"),type:"boolean","x-decorator":"FormItem","x-component":"SnippetCheckboxGroup"}}},plugins:{"x-component":"FormV2",properties:{pluginSettings:{title:s("Plugin settings"),"x-decorator":"FormItem","x-component":"PluginPermissions","x-visible":"{{pm}}"}}}}}})}},888:function(e,n,t){t.d(n,{g:function(){return o}});var r=t(238);function o(){return(0,r.useTranslation)(["@nocobase/plugin-acl","client"],{nsMode:"fallback"})}},368:function(e,n,t){t.d(n,{y:function(){return a}});var r=t(202);function o(){var e,n,t=(e=["\n .ant-table-cell {\n > .ant-space-horizontal {\n .ant-space-item-split:has(+ .ant-space-item:empty) {\n display: none;\n }\n }\n }\n "],!n&&(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}})));return o=function(){return t},t}var a=(0,r.createStyles)(function(e){return(0,e.css)(o())})}}]);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
"use strict";(self.webpackChunk_nocobase_plugin_acl=self.webpackChunk_nocobase_plugin_acl||[]).push([["818"],{105:function(e,t,n){n.r(t),n.d(t,{MenuItemsProvider:function(){return s},toItems:function(){return l},useMenuItems:function(){return c}});var r=n(772),i=n(721),u=n(156),o=n.n(u),a=(0,u.createContext)(null);a.displayName="MenuItemsContext";var l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=[];for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=e[n],i={title:r.title,uid:r["x-uid"]};r.properties&&(i.children=l(r.properties)),t.push(i)}return t},c=function(){return(0,u.useContext)(a)},s=function(e){var t,n,u=(0,r.useAdminSchemaUid)(),c=(0,r.useRequest)({url:"uiSchemas:getProperties/".concat(u)});if(c.loading)return o().createElement(i.Spin,null);var s=l(null===(n=c.data)||void 0===n?void 0:null===(t=n.data)||void 0===t?void 0:t.properties);return o().createElement(a.Provider,{value:{service:c,items:s}},e.children)}}}]);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
"use strict";(self.webpackChunk_nocobase_plugin_acl=self.webpackChunk_nocobase_plugin_acl||[]).push([["871"],{105:function(e,t,n){n.r(t),n.d(t,{MenuItemsProvider:function(){return s},toItems:function(){return l},useMenuItems:function(){return c}});var r=n(772),u=n(721),o=n(156),a=n.n(o),i=(0,o.createContext)(null);i.displayName="MenuItemsContext";var l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=[];for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=e[n],u={title:r.title,uid:r["x-uid"]};r.properties&&(u.children=l(r.properties)),t.push(u)}return t},c=function(){return(0,o.useContext)(i)},s=function(e){var t,n,o=(0,r.useAdminSchemaUid)(),c=(0,r.useRequest)({url:"uiSchemas:getProperties/".concat(o)});if(c.loading)return a().createElement(u.Spin,null);var s=l(null===(n=c.data)||void 0===n?void 0:null===(t=n.data)||void 0===t?void 0:t.properties);return a().createElement(i.Provider,{value:{service:c,items:s}},e.children)}},509:function(e,t,n){n.r(t),n.d(t,{MenuPermissions:function(){return k}});var r=n(563),u=n(875),o=n(772),a=n(749),i=n(721),l=n(467),c=n(156),s=n.n(c),f=n(238),d=n(746),p=n(105),h=n(368);function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function y(e,t,n,r,u,o,a){try{var i=e[o](a),l=i.value}catch(e){n(e);return}i.done?t(l):Promise.resolve(l).then(r,u)}function m(e){return function(){var t=this,n=arguments;return new Promise(function(r,u){var o=e.apply(t,n);function a(e){y(o,r,u,a,i,"next",e)}function i(e){y(o,r,u,a,i,"throw",e)}a(void 0)})}}function b(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r,u,o;r=e,u=t,o=n[t],u in r?Object.defineProperty(r,u,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[u]=o})}return e}function g(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function w(e){return function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||O(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(e,t){if(e){if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return v(e,t)}}function S(e,t){var n,r,u,o,a={label:0,sent:function(){if(1&u[0])throw u[1];return u[1]},trys:[],ops:[]};return o={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function i(o){return function(i){return function(o){if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(u=2&o[0]?r.return:o[0]?r.throw||((u=r.return)&&u.call(r),0):r.next)&&!(u=u.call(r,o[1])).done)return u;switch(r=0,u&&(o=[2&o[0],u.value]),o[0]){case 0:case 1:u=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(u=(u=a.trys).length>0&&u[u.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!u||o[1]>u[0]&&o[1]<u[3])){a.label=o[1];break}if(6===o[0]&&a.label<u[1]){a.label=u[1],u=o;break}if(u&&a.label<u[2]){a.label=u[2],a.ops.push(o);break}u[2]&&a.ops.pop(),a.trys.pop();continue}o=t.call(e,a)}catch(e){o=[6,e],r=0}finally{n=u=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,i])}}}var x=function(e){if(!Array.isArray(e))return[];var t=[],n=!0,r=!1,u=void 0;try{for(var o,a=e[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){var i=o.value;t.push(i.uid),t.push.apply(t,w(x(i.children)))}}catch(e){r=!0,u=e}finally{try{!n&&null!=a.return&&a.return()}finally{if(r)throw u}}return t},j=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(!e)return[];var r=!0,u=!1,o=void 0;try{for(var a,i=e[Symbol.iterator]();!(r=(a=i.next()).done);r=!0){var l=a.value;if(n.push(l.uid),t(l))return n;if(l.children){var c=j(l.children,t,n);if(c.length)return c}n.pop()}}catch(e){u=!0,o=e}finally{try{!r&&null!=i.return&&i.return()}finally{if(u)throw o}}return[]},P=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=!0,r=!1,u=void 0;try{for(var o,a=e[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){var i=o.value;t.push(i.uid),i.children&&i.children.length&&P(i.children,t)}}catch(e){r=!0,u=e}finally{try{!n&&null!=a.return&&a.return()}finally{if(r)throw u}}return t},k=function(e){var t,n,v,y,k,A=e.active,C=(0,h.y)().styles,E=(0,c.useContext)(d.T),I=E.role,M=E.setRole,F=(0,o.useAPIClient)(),T=(0,p.useMenuItems)().items,_=(0,f.useTranslation)().t,D=x(T);var z=(t=(0,c.useState)([]),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n,r,u=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=u){var o=[],a=!0,i=!1;try{for(u=u.call(e);!(a=(n=u.next()).done)&&(o.push(n.value),!t||o.length!==t);a=!0);}catch(e){i=!0,r=e}finally{try{!a&&null!=u.return&&u.return()}finally{if(i)throw r}}return o}}(t,2)||O(t,n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),N=z[0],R=z[1],U=(0,o.useRequest)({resource:"roles.menuUiSchemas",resourceOf:I.name,action:"list",params:{paginate:!1}},{ready:!!I&&A,refreshDeps:[null==I?void 0:I.name],onSuccess:function(e){var t;R((null==e?void 0:null===(t=e.data)||void 0===t?void 0:t.map(function(e){return e["x-uid"]}))||[])}}),q=U.loading,V=U.refresh,B=F.resource("roles.menuUiSchemas",I.name),G=D.length===N.length;var K=(v=m(function(e,t){var n,r,u,o;return S(this,function(a){switch(a.label){case 0:if(n=j(T,function(e){return e.uid===t.uid}),r=P(null==t?void 0:t.children,[]),!e)return[3,2];return u=r.concat(t.uid),R(w(N.filter(function(e){return!u.includes(e)}))),[4,B.remove({values:u})];case 1:return a.sent(),[3,4];case 2:return o=r.concat(n),R(function(e){return(0,l.uniq)(w(e).concat(w(o)))}),[4,B.add({values:o})];case 3:a.sent(),a.label=4;case 4:return i.message.success(_("Saved successfully")),[2]}})}),function(e,t){return v.apply(this,arguments)}),$=function(e){return e.map(function(e){var t=_(e.title);return e.children?g(b({},e),{title:t,children:$(e.children)}):g(b({},e),{title:t})})};var H=(0,a.useMemoizedFn)((y=m(function(e){return S(this,function(t){switch(t.label){case 0:return[4,F.resource("roles").update({filterByTk:I.name,values:e.values})];case 1:return t.sent(),M(b({},I,e.values)),i.message.success(_("Saved successfully")),[2]}})}),function(e){return y.apply(this,arguments)})),J=(0,c.useMemo)(function(){return(0,r.createForm)({values:I,effects:function(){var e;(0,r.onFormValuesChange)((e=m(function(e){return S(this,function(t){switch(t.label){case 0:return[4,H(e)];case 1:return t.sent(),[2]}})}),function(t){return e.apply(this,arguments)}))}})},[I,H]);return s().createElement(s().Fragment,null,s().createElement(o.SchemaComponent,{schema:{type:"void",name:(0,u.uid)(),"x-component":"FormV2","x-component-props":{form:J},properties:{allowNewMenu:{title:_("Menu permissions"),"x-decorator":"FormItem","x-component":"Checkbox","x-content":_("New menu items are allowed to be accessed by default.")}}}}),s().createElement(i.Table,{className:C,loading:q,rowKey:"uid",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:_("Menu item title")},{dataIndex:"accessible",title:s().createElement(s().Fragment,null,s().createElement(i.Checkbox,{checked:G,onChange:(k=m(function(e){return S(this,function(e){switch(e.label){case 0:if(!G)return[3,2];return[4,B.set({values:[]})];case 1:return e.sent(),[3,4];case 2:return[4,B.set({values:D})];case 3:e.sent(),e.label=4;case 4:return V(),i.message.success(_("Saved successfully")),[2]}})}),function(e){return k.apply(this,arguments)})})," ",_("Accessible")),render:function(e,t){var n=N.includes(t.uid);return s().createElement(i.Checkbox,{checked:n,onChange:function(){return K(n,t)}})}}],dataSource:$(T)}))}},368:function(e,t,n){n.d(t,{y:function(){return o}});var r=n(202);function u(){var e,t,n=(e=["\n .ant-table-cell {\n > .ant-space-horizontal {\n .ant-space-item-split:has(+ .ant-space-item:empty) {\n display: none;\n }\n }\n }\n "],!t&&(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return u=function(){return n},n}var o=(0,r.createStyles)(function(e){return(0,e.css)(u())})}}]);
|
package/dist/client/index.js
CHANGED
|
@@ -7,12 +7,4 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
(function(v,l){typeof exports=="object"&&typeof module!="undefined"?l(exports,require("@nocobase/client"),require("react/jsx-runtime"),require("@formily/core"),require("@formily/react"),require("@formily/shared"),require("ahooks"),require("antd"),require("react"),require("react-i18next"),require("lodash"),require("antd-style"),require("@ant-design/icons"),require("@nocobase/utils/client")):typeof define=="function"&&define.amd?define(["exports","@nocobase/client","react/jsx-runtime","@formily/core","@formily/react","@formily/shared","ahooks","antd","react","react-i18next","lodash","antd-style","@ant-design/icons","@nocobase/utils/client"],l):(v=typeof globalThis!="undefined"?globalThis:v||self,l(v["@nocobase/plugin-acl"]={},v["@nocobase/client"],v.jsxRuntime,v["@formily/core"],v["@formily/react"],v["@formily/shared"],v.ahooks,v.antd,v.react,v["react-i18next"],v.lodash,v["antd-style"],v["@ant-design/icons"],v["@nocobase/utils"]))})(this,function(v,l,a,N,O,D,z,p,d,A,te,Qe,fe,Re){"use strict";var Ti=Object.defineProperty,Oi=Object.defineProperties;var Mi=Object.getOwnPropertyDescriptors;var Ze=Object.getOwnPropertySymbols;var Fi=Object.prototype.hasOwnProperty,Ei=Object.prototype.propertyIsEnumerable;var he=(v,l,a)=>l in v?Ti(v,l,{enumerable:!0,configurable:!0,writable:!0,value:a}):v[l]=a,S=(v,l)=>{for(var a in l||(l={}))Fi.call(l,a)&&he(v,a,l[a]);if(Ze)for(var a of Ze(l))Ei.call(l,a)&&he(v,a,l[a]);return v},E=(v,l)=>Oi(v,Mi(l));var L=(v,l,a)=>(he(v,typeof l!="symbol"?l+"":l,a),a);var x=(v,l,a)=>new Promise((N,O)=>{var D=d=>{try{p(a.next(d))}catch(A){O(A)}},z=d=>{try{p(a.throw(d))}catch(A){O(A)}},p=d=>d.done?N(d.value):Promise.resolve(d.value).then(D,z);p((a=a.apply(v,l)).next())});var K=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function ve(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var et=typeof K=="object"&&K&&K.Object===Object&&K,tt=et,nt=tt,rt=typeof self=="object"&&self&&self.Object===Object&&self,st=nt||rt||Function("return this")(),V=st,at=V,ot=at.Symbol,B=ot,me=B,ge=Object.prototype,it=ge.hasOwnProperty,ct=ge.toString,j=me?me.toStringTag:void 0;function lt(e){var t=it.call(e,j),n=e[j];try{e[j]=void 0;var r=!0}catch(i){}var s=ct.call(e);return r&&(t?e[j]=n:delete e[j]),s}var ut=lt,pt=Object.prototype,dt=pt.toString;function ht(e){return dt.call(e)}var ft=ht,ye=B,vt=ut,mt=ft,gt="[object Null]",yt="[object Undefined]",be=ye?ye.toStringTag:void 0;function bt(e){return e==null?e===void 0?yt:gt:be&&be in Object(e)?vt(e):mt(e)}var ne=bt;function _t(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var re=_t,Ct=ne,$t=re,xt="[object AsyncFunction]",St="[object Function]",wt="[object GeneratorFunction]",At="[object Proxy]";function Pt(e){if(!$t(e))return!1;var t=Ct(e);return t==St||t==wt||t==xt||t==At}var It=Pt,Tt=V,Ot=Tt["__core-js_shared__"],Mt=Ot,se=Mt,_e=function(){var e=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ft(e){return!!_e&&_e in e}var Et=Ft,Nt=Function.prototype,Dt=Nt.toString;function kt(e){if(e!=null){try{return Dt.call(e)}catch(t){}try{return e+""}catch(t){}}return""}var qt=kt,Ht=It,Ut=Et,jt=re,Gt=qt,Lt=/[\\^$.*+?()[\]{}|]/g,zt=/^\[object .+?Constructor\]$/,Kt=Function.prototype,Vt=Object.prototype,Bt=Kt.toString,Wt=Vt.hasOwnProperty,Yt=RegExp("^"+Bt.call(Wt).replace(Lt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Xt(e){if(!jt(e)||Ut(e))return!1;var t=Ht(e)?Yt:zt;return t.test(Gt(e))}var Jt=Xt;function Zt(e,t){return e==null?void 0:e[t]}var Qt=Zt,Rt=Jt,en=Qt;function tn(e,t){var n=en(e,t);return Rt(n)?n:void 0}var W=tn,nn=W,rn=nn(Object,"create"),Y=rn,Ce=Y;function sn(){this.__data__=Ce?Ce(null):{},this.size=0}var an=sn;function on(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var cn=on,ln=Y,un="__lodash_hash_undefined__",pn=Object.prototype,dn=pn.hasOwnProperty;function hn(e){var t=this.__data__;if(ln){var n=t[e];return n===un?void 0:n}return dn.call(t,e)?t[e]:void 0}var fn=hn,vn=Y,mn=Object.prototype,gn=mn.hasOwnProperty;function yn(e){var t=this.__data__;return vn?t[e]!==void 0:gn.call(t,e)}var bn=yn,_n=Y,Cn="__lodash_hash_undefined__";function $n(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=_n&&t===void 0?Cn:t,this}var xn=$n,Sn=an,wn=cn,An=fn,Pn=bn,In=xn;function k(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}k.prototype.clear=Sn,k.prototype.delete=wn,k.prototype.get=An,k.prototype.has=Pn,k.prototype.set=In;var Tn=k;function On(){this.__data__=[],this.size=0}var Mn=On;function Fn(e,t){return e===t||e!==e&&t!==t}var $e=Fn,En=$e;function Nn(e,t){for(var n=e.length;n--;)if(En(e[n][0],t))return n;return-1}var X=Nn,Dn=X,kn=Array.prototype,qn=kn.splice;function Hn(e){var t=this.__data__,n=Dn(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():qn.call(t,n,1),--this.size,!0}var Un=Hn,jn=X;function Gn(e){var t=this.__data__,n=jn(t,e);return n<0?void 0:t[n][1]}var Ln=Gn,zn=X;function Kn(e){return zn(this.__data__,e)>-1}var Vn=Kn,Bn=X;function Wn(e,t){var n=this.__data__,r=Bn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var Yn=Wn,Xn=Mn,Jn=Un,Zn=Ln,Qn=Vn,Rn=Yn;function q(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}q.prototype.clear=Xn,q.prototype.delete=Jn,q.prototype.get=Zn,q.prototype.has=Qn,q.prototype.set=Rn;var er=q,tr=W,nr=V,rr=tr(nr,"Map"),sr=rr,xe=Tn,ar=er,or=sr;function ir(){this.size=0,this.__data__={hash:new xe,map:new(or||ar),string:new xe}}var cr=ir;function lr(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var ur=lr,pr=ur;function dr(e,t){var n=e.__data__;return pr(t)?n[typeof t=="string"?"string":"hash"]:n.map}var J=dr,hr=J;function fr(e){var t=hr(this,e).delete(e);return this.size-=t?1:0,t}var vr=fr,mr=J;function gr(e){return mr(this,e).get(e)}var yr=gr,br=J;function _r(e){return br(this,e).has(e)}var Cr=_r,$r=J;function xr(e,t){var n=$r(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var Sr=xr,wr=cr,Ar=vr,Pr=yr,Ir=Cr,Tr=Sr;function H(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}H.prototype.clear=wr,H.prototype.delete=Ar,H.prototype.get=Pr,H.prototype.has=Ir,H.prototype.set=Tr;var Se=H,Or="__lodash_hash_undefined__";function Mr(e){return this.__data__.set(e,Or),this}var Fr=Mr;function Er(e){return this.__data__.has(e)}var Nr=Er,Dr=Se,kr=Fr,qr=Nr;function Z(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new Dr;++t<n;)this.add(e[t])}Z.prototype.add=Z.prototype.push=kr,Z.prototype.has=qr;var Hr=Z;function Ur(e,t,n,r){for(var s=e.length,i=n+(r?1:-1);r?i--:++i<s;)if(t(e[i],i,e))return i;return-1}var jr=Ur;function Gr(e){return e!==e}var Lr=Gr;function zr(e,t,n){for(var r=n-1,s=e.length;++r<s;)if(e[r]===t)return r;return-1}var Kr=zr,Vr=jr,Br=Lr,Wr=Kr;function Yr(e,t,n){return t===t?Wr(e,t,n):Vr(e,Br,n)}var Xr=Yr,Jr=Xr;function Zr(e,t){var n=e==null?0:e.length;return!!n&&Jr(e,t,0)>-1}var Qr=Zr;function Rr(e,t,n){for(var r=-1,s=e==null?0:e.length;++r<s;)if(n(t,e[r]))return!0;return!1}var es=Rr;function ts(e,t){return e.has(t)}var ns=ts,rs=W,ss=V,as=rs(ss,"Set"),os=as;function is(){}var cs=is;function ls(e){var t=-1,n=Array(e.size);return e.forEach(function(r){n[++t]=r}),n}var we=ls,ae=os,us=cs,ps=we,ds=1/0,hs=ae&&1/ps(new ae([,-0]))[1]==ds?function(e){return new ae(e)}:us,fs=hs,vs=Hr,ms=Qr,gs=es,ys=ns,bs=fs,_s=we,Cs=200;function $s(e,t,n){var r=-1,s=ms,i=e.length,o=!0,c=[],u=c;if(n)o=!1,s=gs;else if(i>=Cs){var f=t?null:bs(e);if(f)return _s(f);o=!1,s=ys,u=new vs}else u=t?[]:c;e:for(;++r<i;){var y=e[r],_=t?t(y):y;if(y=n||y!==0?y:0,o&&_===_){for(var C=u.length;C--;)if(u[C]===_)continue e;t&&u.push(_),c.push(y)}else s(u,_,n)||(u!==c&&u.push(_),c.push(y))}return c}var xs=$s,Ss=xs;function ws(e){return e&&e.length?Ss(e):[]}var As=ws;const Ps=ve(As);function U(){return A.useTranslation(["@nocobase/plugin-acl","client"],{nsMode:"fallback"})}const M=d.createContext({role:null});M.displayName="RolesManagerContext";const Ae=Qe.createStyles(({css:e})=>e`
|
|
11
|
-
.ant-table-cell {
|
|
12
|
-
> .ant-space-horizontal {
|
|
13
|
-
.ant-space-item-split:has(+ .ant-space-item:empty) {
|
|
14
|
-
display: none;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
`),Pe=(e=[],t=[])=>{for(const n of e)t.push(n.aclSnippet),n.children&&n.children.length&&Pe(n.children,t);return t},Is=({active:e})=>{const t=l.useApp(),{styles:n}=Ae(),{role:r}=d.useContext(M),s=l.useAPIClient(),i=l.useCompile(),o=t.pluginSettingsManager.getList(!1),c=t.pluginSettingsManager.getAclSnippets(),[u,f]=d.useState((r==null?void 0:r.snippets)||[]),y=d.useMemo(()=>te.flatMap(o,g=>g.children?[g,...g.children]:g),[o]),_=d.useMemo(()=>u.includes("pm.*")&&u.every(g=>!g.startsWith("!pm.")),[u]),{t:C}=A.useTranslation(),{loading:P,refresh:w}=l.useRequest({resource:"roles.snippets",resourceOf:r==null?void 0:r.name,action:"list",params:{paginate:!1}},{ready:!!r&&e,refreshDeps:[r==null?void 0:r.name],manual:!0,onSuccess(g){f((g==null?void 0:g.data.filter(m=>y.find(h=>m.includes(`!${h.aclSnippet}`)||!m.startsWith("!pm."))))||[])}});if(!r)return;const $=s.resource("roles.snippets",r==null?void 0:r.name),F=(g,m)=>x(this,null,function*(){const b=Pe(m==null?void 0:m.children,[]).concat(m.aclSnippet);g?(yield $.add({values:b.map(I=>"!"+I)}),w()):(yield $.remove({values:b.map(I=>"!"+I)}),w()),p.message.success(C("Saved successfully"))});return a.jsx(p.Table,{className:n,loading:P,rowKey:"key",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:C("Plugin name"),render:g=>i(g)},{dataIndex:"accessible",title:a.jsxs(a.Fragment,{children:[a.jsx(p.Checkbox,{checked:_,onChange:()=>x(this,null,function*(){const g=c.map(m=>"!"+m);_?yield $.add({values:g}):yield $.remove({values:g}),w(),p.message.success(C("Saved successfully"))})}),C("Accessible")]}),render:(g,m)=>{const h=!u.includes("!"+m.aclSnippet);return a.jsx(p.Checkbox,{checked:h,onChange:()=>F(h,m)})}}],dataSource:o.filter(g=>g.isTopLevel!==!1).map(g=>g.showTabs!==!1?g:te.omit(g,"children"))})},oe=d.createContext([]);oe.displayName="AvailableActionsContext";const Ts=e=>{const{data:t,loading:n}=l.useRequest({resource:"availableActions",action:"list"});return n?a.jsx(p.Spin,{}):a.jsx(oe.Provider,{value:t==null?void 0:t.data,children:e.children})},Os=()=>d.useContext(oe),Ms=e=>{var n;if(!e)return{};const t={};return(n=e==null?void 0:e.forEach)==null||n.call(e,r=>{const[s,i]=r.split(":");t[s]=i||"all"}),t},Ie=e=>{const t=[];for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)){const r=e[n];r==="all"?t.push(n):t.push(`${n}:${r}`)}return t},Fs=O.connect(e=>{const{onChange:t}=e,n=Os(),r=l.useCompile(),{t:s}=A.useTranslation(),i=O.useField(),o=Ms(i.value);return a.jsx("div",{children:a.jsx(p.Table,{rowKey:"name",size:"small",pagination:!1,columns:[{dataIndex:"displayName",title:s("Action display name"),render:c=>r(c)},{dataIndex:"onNewRecord",title:s("Action type"),render:c=>c?a.jsx(p.Tag,{color:"green",children:s("Action on new records")}):a.jsx(p.Tag,{color:"geekblue",children:s("Action on existing records")})},{dataIndex:"enabled",title:s("Allow"),render:(c,u)=>a.jsx(p.Checkbox,{checked:c,"aria-label":`${u.name}_checkbox`,onChange:f=>{c?delete o[u.name]:o[u.name]="all",t(Ie(o))}})},{dataIndex:"scope",title:s("Data scope"),render:(c,u)=>!u.onNewRecord&&a.jsx(p.Select,{"data-testid":"select-data-scope",popupMatchSelectWidth:!1,size:"small",value:c,options:[{label:s("All records"),value:"all"},{label:s("Own records"),value:"own"}],onChange:f=>{o[u.name]=f,t(Ie(o))}})}],dataSource:n==null?void 0:n.map(c=>{let u="all",f=!1;return o[c.name]&&(f=!0,u=o[c.name]),E(S({},c),{enabled:f,scope:u})})})})}),Es=O.connect(e=>{const{t}=A.useTranslation();return a.jsxs(p.Checkbox.Group,{style:{width:"100%",display:"block"},value:e.value,onChange:n=>{const r=["ui.*","pm","pm.*","app"],s=r.map(o=>`!${o}`),i=Ps([...e.value||[],...n]).filter(o=>o&&!s.includes(o)).map(o=>!r.includes(o)||n!=null&&n.includes(o)?o:`!${o}`);for(const o of r)!i.includes(o)&&!i.includes(`!${o}`)&&i.push(`!${o}`);e.onChange(i)},children:[a.jsx("div",{style:{marginTop:16},children:a.jsx(p.Checkbox,{value:"ui.*",children:t("Allows to configure interface")})}),a.jsx("div",{style:{marginTop:8},children:a.jsx(p.Checkbox,{value:"pm",children:t("Allows to install, activate, disable plugins")})}),a.jsx("div",{style:{marginTop:8},children:a.jsx(p.Checkbox,{value:"pm.*",children:t("Allows to configure plugins")})}),a.jsx("div",{style:{marginTop:8},children:a.jsx(p.Checkbox,{value:"app",children:t("Allows to clear cache, reboot application")})})]})}),Ns=()=>{var c;const{role:e,setRole:t}=d.useContext(M),{t:n}=U(),r=l.useAPIClient(),s=(c=e==null?void 0:e.snippets)==null?void 0:c.includes("pm.*"),i=z.useMemoizedFn(u=>x(this,null,function*(){yield r.resource("roles").update({filterByTk:e.name,values:{snippets:u.values.snippets}}),t(S(S({},e),u.values)),p.message.success(n("Saved successfully"))})),o=d.useMemo(()=>N.createForm({values:e,effects(){N.onFormValuesChange(u=>x(this,null,function*(){yield i(u)}))}}),[e,i]);return a.jsx(l.SchemaComponent,{components:{SnippetCheckboxGroup:Es,StrategyActions:Fs,PluginPermissions:Is},scope:{pm:s},schema:{type:"void",name:D.uid(),"x-component":"div",properties:{general:{"x-component":"FormV2","x-component-props":{form:o},properties:{snippets:{title:n("Configure permissions"),type:"boolean","x-decorator":"FormItem","x-component":"SnippetCheckboxGroup"}}},plugins:{"x-component":"FormV2",properties:{pluginSettings:{title:n("Plugin settings"),"x-decorator":"FormItem","x-component":"PluginPermissions","x-visible":"{{pm}}"}}}}}})},ie=d.createContext(null);ie.displayName="MenuItemsContext";const Te=(e={})=>{const t=[];for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)){const r=e[n],s={title:r.title,uid:r["x-uid"]};r.properties&&(s.children=Te(r.properties)),t.push(s)}return t},Ds=()=>d.useContext(ie),ks=e=>{var i,o;const n={url:`uiSchemas:getProperties/${l.useAdminSchemaUid()}`},r=l.useRequest(n);if(r.loading)return a.jsx(p.Spin,{});const s=Te((o=(i=r.data)==null?void 0:i.data)==null?void 0:o.properties);return a.jsx(ie.Provider,{value:{service:r,items:s},children:e.children})},Oe=e=>{if(!Array.isArray(e))return[];const t=[];for(const n of e)t.push(n.uid),t.push(...Oe(n.children));return t},Me=(e,t,n=[])=>{if(!e)return[];for(const r of e){if(n.push(r.uid),t(r))return n;if(r.children){const s=Me(r.children,t,n);if(s.length)return s}n.pop()}return[]},Fe=(e=[],t=[])=>{for(const n of e)t.push(n.uid),n.children&&n.children.length&&Fe(n.children,t);return t},qs=({active:e})=>{const{styles:t}=Ae(),{role:n,setRole:r}=d.useContext(M),s=l.useAPIClient(),{items:i}=Ds(),{t:o}=A.useTranslation(),c=Oe(i),[u,f]=d.useState([]),{loading:y,refresh:_}=l.useRequest({resource:"roles.menuUiSchemas",resourceOf:n.name,action:"list",params:{paginate:!1}},{ready:!!n&&e,refreshDeps:[n==null?void 0:n.name],onSuccess(m){var h;f(((h=m==null?void 0:m.data)==null?void 0:h.map(b=>b["x-uid"]))||[])}}),C=s.resource("roles.menuUiSchemas",n.name),P=c.length===u.length,w=(m,h)=>x(this,null,function*(){const b=Me(i,T=>T.uid===h.uid),I=Fe(h==null?void 0:h.children,[]);if(m){const T=I.concat(h.uid),de=u.filter(Ii=>!T.includes(Ii));f([...de]),yield C.remove({values:T})}else{const T=I.concat(b);f(de=>te.uniq([...de,...T])),yield C.add({values:T})}p.message.success(o("Saved successfully"))}),$=m=>m.map(h=>{const b=o(h.title);return h.children?E(S({},h),{title:b,children:$(h.children)}):E(S({},h),{title:b})}),F=z.useMemoizedFn(m=>x(this,null,function*(){yield s.resource("roles").update({filterByTk:n.name,values:m.values}),r(S(S({},n),m.values)),p.message.success(o("Saved successfully"))})),g=d.useMemo(()=>N.createForm({values:n,effects(){N.onFormValuesChange(m=>x(this,null,function*(){yield F(m)}))}}),[n,F]);return a.jsxs(a.Fragment,{children:[a.jsx(l.SchemaComponent,{schema:{type:"void",name:D.uid(),"x-component":"FormV2","x-component-props":{form:g},properties:{allowNewMenu:{title:o("Menu permissions"),"x-decorator":"FormItem","x-component":"Checkbox","x-content":o("New menu items are allowed to be accessed by default.")}}}}),a.jsx(p.Table,{className:t,loading:y,rowKey:"uid",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:o("Menu item title")},{dataIndex:"accessible",title:a.jsxs(a.Fragment,{children:[a.jsx(p.Checkbox,{checked:P,onChange:m=>x(this,null,function*(){P?yield C.set({values:[]}):yield C.set({values:c}),_(),p.message.success(o("Saved successfully"))})})," ",o("Accessible")]}),render:(m,h)=>{const b=u.includes(h.uid);return a.jsx(p.Checkbox,{checked:b,onChange:()=>w(b,h)})}}],dataSource:$(i)})]})};class Hs{constructor(){L(this,"permissionsTabs",[({t,TabLayout:n})=>({key:"general",label:t("System"),children:a.jsx(n,{children:a.jsx(Ns,{})})}),({activeKey:t,t:n,TabLayout:r})=>({key:"menu",label:n("Desktop menu"),children:a.jsx(r,{children:a.jsx(ks,{children:a.jsx(qs,{active:t==="menu"})})})})])}addPermissionsTab(t){this.permissionsTabs.push(t)}getPermissionsTabs(t){return this.permissionsTabs.map(n=>typeof n=="function"?n(t):n)}}var Us=Array.isArray,G=Us;function js(e){return e!=null&&typeof e=="object"}var ce=js,Gs=ne,Ls=ce,zs="[object Symbol]";function Ks(e){return typeof e=="symbol"||Ls(e)&&Gs(e)==zs}var le=Ks,Vs=G,Bs=le,Ws=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ys=/^\w*$/;function Xs(e,t){if(Vs(e))return!1;var n=typeof e;return n=="number"||n=="symbol"||n=="boolean"||e==null||Bs(e)?!0:Ys.test(e)||!Ws.test(e)||t!=null&&e in Object(t)}var Js=Xs,Ee=Se,Zs="Expected a function";function ue(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Zs);var n=function(){var r=arguments,s=t?t.apply(this,r):r[0],i=n.cache;if(i.has(s))return i.get(s);var o=e.apply(this,r);return n.cache=i.set(s,o)||i,o};return n.cache=new(ue.Cache||Ee),n}ue.Cache=Ee;var Qs=ue,Rs=Qs,ea=500;function ta(e){var t=Rs(e,function(r){return n.size===ea&&n.clear(),r}),n=t.cache;return t}var na=ta,ra=na,sa=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,aa=/\\(\\)?/g,oa=ra(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(sa,function(n,r,s,i){t.push(s?i.replace(aa,"$1"):r||n)}),t}),ia=oa;function ca(e,t){for(var n=-1,r=e==null?0:e.length,s=Array(r);++n<r;)s[n]=t(e[n],n,e);return s}var la=ca,Ne=B,ua=la,pa=G,da=le,ha=1/0,De=Ne?Ne.prototype:void 0,ke=De?De.toString:void 0;function qe(e){if(typeof e=="string")return e;if(pa(e))return ua(e,qe)+"";if(da(e))return ke?ke.call(e):"";var t=e+"";return t=="0"&&1/e==-ha?"-0":t}var fa=qe,va=fa;function ma(e){return e==null?"":va(e)}var ga=ma,ya=G,ba=Js,_a=ia,Ca=ga;function $a(e,t){return ya(e)?e:ba(e,t)?[e]:_a(Ca(e))}var Q=$a,xa=le,Sa=1/0;function wa(e){if(typeof e=="string"||xa(e))return e;var t=e+"";return t=="0"&&1/e==-Sa?"-0":t}var pe=wa,Aa=Q,Pa=pe;function Ia(e,t){t=Aa(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[Pa(t[n++])];return n&&n==r?e:void 0}var Ta=Ia,Oa=W,Ma=function(){try{var e=Oa(Object,"defineProperty");return e({},"",{}),e}catch(t){}}(),He=Ma,Ue=He;function Fa(e,t,n){t=="__proto__"&&Ue?Ue(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var Ea=Fa,Na=Ea,Da=$e,ka=Object.prototype,qa=ka.hasOwnProperty;function Ha(e,t,n){var r=e[t];(!(qa.call(e,t)&&Da(r,n))||n===void 0&&!(t in e))&&Na(e,t,n)}var Ua=Ha,ja=9007199254740991,Ga=/^(?:0|[1-9]\d*)$/;function La(e,t){var n=typeof e;return t=t==null?ja:t,!!t&&(n=="number"||n!="symbol"&&Ga.test(e))&&e>-1&&e%1==0&&e<t}var je=La,za=Ua,Ka=Q,Va=je,Ge=re,Ba=pe;function Wa(e,t,n,r){if(!Ge(e))return e;t=Ka(t,e);for(var s=-1,i=t.length,o=i-1,c=e;c!=null&&++s<i;){var u=Ba(t[s]),f=n;if(u==="__proto__"||u==="constructor"||u==="prototype")return e;if(s!=o){var y=c[u];f=r?r(y,u,c):void 0,f===void 0&&(f=Ge(y)?y:Va(t[s+1])?[]:{})}za(c,u,f),c=c[u]}return e}var Ya=Wa,Xa=Ta,Ja=Ya,Za=Q;function Qa(e,t,n){for(var r=-1,s=t.length,i={};++r<s;){var o=t[r],c=Xa(e,o);n(c,o)&&Ja(i,Za(o,e),c)}return i}var Ra=Qa;function eo(e,t){return e!=null&&t in Object(e)}var to=eo,no=ne,ro=ce,so="[object Arguments]";function ao(e){return ro(e)&&no(e)==so}var oo=ao,Le=oo,io=ce,ze=Object.prototype,co=ze.hasOwnProperty,lo=ze.propertyIsEnumerable,uo=Le(function(){return arguments}())?Le:function(e){return io(e)&&co.call(e,"callee")&&!lo.call(e,"callee")},Ke=uo,po=9007199254740991;function ho(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=po}var fo=ho,vo=Q,mo=Ke,go=G,yo=je,bo=fo,_o=pe;function Co(e,t,n){t=vo(t,e);for(var r=-1,s=t.length,i=!1;++r<s;){var o=_o(t[r]);if(!(i=e!=null&&n(e,o)))break;e=e[o]}return i||++r!=s?i:(s=e==null?0:e.length,!!s&&bo(s)&&yo(o,s)&&(go(e)||mo(e)))}var $o=Co,xo=to,So=$o;function wo(e,t){return e!=null&&So(e,t,xo)}var Ao=wo,Po=Ra,Io=Ao;function To(e,t){return Po(e,t,function(n,r){return Io(e,r)})}var Oo=To;function Mo(e,t){for(var n=-1,r=t.length,s=e.length;++n<r;)e[s+n]=t[n];return e}var Fo=Mo,Ve=B,Eo=Ke,No=G,Be=Ve?Ve.isConcatSpreadable:void 0;function Do(e){return No(e)||Eo(e)||!!(Be&&e&&e[Be])}var ko=Do,qo=Fo,Ho=ko;function We(e,t,n,r,s){var i=-1,o=e.length;for(n||(n=Ho),s||(s=[]);++i<o;){var c=e[i];t>0&&n(c)?t>1?We(c,t-1,n,r,s):qo(s,c):r||(s[s.length]=c)}return s}var Uo=We,jo=Uo;function Go(e){var t=e==null?0:e.length;return t?jo(e,1):[]}var Lo=Go;function zo(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var Ko=zo,Vo=Ko,Ye=Math.max;function Bo(e,t,n){return t=Ye(t===void 0?e.length-1:t,0),function(){for(var r=arguments,s=-1,i=Ye(r.length-t,0),o=Array(i);++s<i;)o[s]=r[t+s];s=-1;for(var c=Array(t+1);++s<t;)c[s]=r[s];return c[t]=n(o),Vo(e,this,c)}}var Wo=Bo;function Yo(e){return function(){return e}}var Xo=Yo;function Jo(e){return e}var Zo=Jo,Qo=Xo,Xe=He,Ro=Zo,ei=Xe?function(e,t){return Xe(e,"toString",{configurable:!0,enumerable:!1,value:Qo(t),writable:!0})}:Ro,ti=ei,ni=800,ri=16,si=Date.now;function ai(e){var t=0,n=0;return function(){var r=si(),s=ri-(r-n);if(n=r,s>0){if(++t>=ni)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var oi=ai,ii=ti,ci=oi,li=ci(ii),ui=li,pi=Lo,di=Wo,hi=ui;function fi(e){return hi(di(e,void 0,pi),e+"")}var vi=fi,mi=Oo,gi=vi,yi=gi(function(e,t){return e==null?{}:mi(e,t)}),bi=yi;const _i=ve(bi),Ci={type:"object",properties:{[D.uid()]:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:e=>{const t=l.useRecord(),n=l.useRequest(()=>Promise.resolve({data:_i(t,["title","name","default"])}),E(S({},e),{manual:!0})),r=l.useActionContext();return d.useEffect(()=>{r.visible&&n.run()},[r.visible]),n}},title:'{{t("Edit role")}}',properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem"},name:{"x-component":"CollectionField","x-decorator":"FormItem","x-disabled":!0},default:{title:"","x-component":"CollectionField","x-decorator":"FormItem","x-content":'{{t("Default role")}}',"x-reactions":e=>{e.initialValue?e.disabled=!0:e.disabled=!1}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useUpdateAction }}"}}}}}}}},$i=({loadMore:e})=>{const[t,n]=d.useState(null),r=d.useRef(null),s=d.useCallback(i=>{i&&(r.current&&r.current.disconnect(),r.current=new IntersectionObserver(o=>{o.forEach(c=>{c.target===i.current&&c.isIntersecting&&(r.current&&r.current.unobserve(i.current),e())})}),i.current&&r.current&&r.current.observe(i.current))},[e]);return d.useEffect(()=>(s(t),()=>{r.current&&r.current.disconnect()}),[t,s]),{lastItem:t,setLastItem:n}},R=()=>{const{t:e}=U(),{data:t,mutate:n}=l.useResourceActionContext(),[r,s]=d.useState(!1),[i,o]=d.useState(null),{role:c,setRole:u}=d.useContext(M),[f,y]=d.useState([]),[_,C]=d.useState(!1),P=l.useAPIClient(),w=d.useCallback(()=>x(this,null,function*(){const h=t==null?void 0:t.meta;if(!h||h.page>=h.totalPage)return;C(!0);const b=yield P.resource("roles").list({page:h.page+1,pageSize:h.pageSize,filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]});n((b==null?void 0:b.data)||{}),C(!1)}),[t]),{lastItem:$,setLastItem:F}=$i({loadMore:w}),g=({key:h})=>{u(f.find(b=>b.name===h))};d.useEffect(()=>{f[0]&&u(f[0])},[f,u]),d.useEffect(()=>{var b,I;if(!((b=t==null?void 0:t.data)!=null&&b.length))return;const h=d.createRef();F(h),((I=t.meta)==null?void 0:I.page)>1?y(T=>T.concat(t.data)):y(t.data)},[t,F]);const m=d.useMemo(()=>f.map((h,b)=>({key:h.name,label:b===f.length-1?a.jsx("div",{ref:$,children:a.jsx(R.Item,{item:h,onEdit:()=>{s(!0),o(h)}})}):a.jsx(R.Item,{item:h,onEdit:()=>{s(!0),o(h)}})})),[f,$]);return a.jsxs(a.Fragment,{children:[f.length?a.jsx(p.Menu,{style:{border:"none",maxHeight:"65vh",overflowY:"auto"},items:[...m,..._?[{key:"loading",label:a.jsx(p.Spin,{})}]:[]],selectedKeys:[c==null?void 0:c.name],onSelect:g}):a.jsx(p.Empty,{image:p.Empty.PRESENTED_IMAGE_SIMPLE}),a.jsx(l.ActionContextProvider,{value:{visible:r,setVisible:s},children:a.jsx(l.RecordProvider,{record:i,collectionName:"departments",children:a.jsx(l.SchemaComponent,{scope:{t:e},schema:Ci})})})]})};R.Item=function({item:t,onEdit:n}){const{t:r}=U(),{refreshAsync:s}=l.useResourceActionContext(),{modal:i,message:o}=p.App.useApp(),c=l.useAPIClient(),u=()=>{i.confirm({title:r("Delete"),content:r("Are you sure you want to delete it?"),onOk:()=>x(this,null,function*(){yield c.resource("roles").destroy({filterByTk:t.name}),o.success(r("Deleted successfully")),yield s()})})},f=({key:_,domEvent:C})=>{switch(C.stopPropagation(),_){case"edit":n();break;case"delete":u()}},y=O.Schema.compile(t.title,{t:r});return a.jsxs(p.Row,{children:[a.jsx(p.Col,{flex:3,style:{display:"inline-flex",alignItems:"center"},children:a.jsxs("span",{style:{whiteSpace:"nowrap",width:"120px",overflow:"hidden",textOverflow:"ellipsis"},children:[a.jsx(fe.TagOutlined,{}),a.jsx("span",{style:{marginLeft:"10px"},title:y,children:y})]})}),a.jsxs(p.Col,{children:[t.default?a.jsx(p.Tag,{color:"success",bordered:!1,children:r("Default")}):null,a.jsx(p.Dropdown,{menu:{items:[{label:r("Edit"),key:"edit"},{label:r("Delete"),key:"delete"}],onClick:f},children:a.jsx(fe.MoreOutlined,{})})]})]})};const xi=e=>a.jsx("div",{style:{maxHeight:"60vh",overflowY:"auto"},children:e.children}),Si=({active:e})=>{const{t}=U(),[n,r]=d.useState("general"),{role:s,setRole:i}=d.useContext(M),o=l.usePlugin(ee),c=l.useACLRoleContext(),u=d.useMemo(()=>o.settingsUI.getPermissionsTabs({t,activeKey:n,TabLayout:xi,activeRole:s,currentUserRole:c}).filter(Boolean),[n,o.settingsUI,s,t,c]),f=l.useAPIClient(),{data:y}=l.useRequest(()=>f.resource("roles").get({filterByTk:s==null?void 0:s.name}).then(_=>{var P,w;const C=(P=_==null?void 0:_.data)==null?void 0:P.data;return(w=C.snippets)==null||w.forEach($=>{C[$]=!0}),C}),{ready:e&&!!s,refreshDeps:[s==null?void 0:s.name]});return d.useEffect(()=>{r("general")},[s==null?void 0:s.name]),d.useEffect(()=>{i(y)},[y,i]),a.jsx(Ts,{children:a.jsx(p.Tabs,{type:"card",activeKey:n,onChange:_=>r(_),items:u})})},wi=()=>{const{t:e}=U();return a.jsx(l.SchemaComponent,{scope:{t:e},schema:{type:"void",properties:{newRole:{type:"void",title:e("New role"),"x-component":"Action","x-component-props":{type:"text",icon:"PlusOutlined",style:{width:"100%",textAlign:"left"}},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues(t){const n=l.useActionContext();return l.useRequest(()=>Promise.resolve({data:{name:`r_${D.uid()}`,snippets:["!ui.*","!pm","!pm.*"]}}),E(S({},t),{refreshDeps:[n.visible]}))}},title:e("New role"),properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem"},name:{"x-component":"CollectionField","x-decorator":"FormItem",description:'{{t("Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.")}}'},default:{"x-component":"CollectionField","x-decorator":"FormItem",title:"","x-content":'{{t("Default role")}}'},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useCreateAction }}"}}}}}}}}}}})},Je={name:"roles",filterTargetKey:"name",targetKey:"name",fields:[{type:"string",name:"title",interface:"input",uiSchema:{title:'{{t("Role display name")}}',type:"number","x-component":"Input",required:!0}},{type:"string",name:"name",interface:"input",uiSchema:{title:'{{t("Role UID")}}',type:"string","x-component":"Input"}},{type:"boolean",name:"default",interface:"boolean",uiSchema:{title:'{{t("Default role")}}',type:"boolean","x-component":"Checkbox"}}]},Ai=()=>{const{t:e}=U(),t=l.usePlugin(ee),[n,r]=d.useState("permissions"),s=Array.from(t.rolesManager.list()).map(([u,f])=>({key:u,label:O.Schema.compile(f.title,{t:e}),children:f.Component?d.createElement(f.Component,{active:n===u}):null})),[i,o]=d.useState(null),c=l.useSchemaComponentContext();return a.jsx(l.SchemaComponentContext.Provider,{value:E(S({},c),{designable:!1}),children:a.jsx(M.Provider,{value:{role:i,setRole:o},children:a.jsx(p.Card,{children:a.jsxs(p.Row,{gutter:24,style:{flexWrap:"nowrap"},children:[a.jsx(p.Col,{flex:"280px",style:{borderRight:"1px solid #eee",minWidth:"250px"},children:a.jsx(l.ResourceActionProvider,{collection:Je,request:{resource:"roles",action:"list",params:{filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]}},children:a.jsxs(l.CollectionProvider_deprecated,{collection:Je,children:[a.jsx(p.Row,{children:a.jsx(wi,{})}),a.jsx(p.Divider,{style:{margin:"12px 0"}}),a.jsx(R,{})]})})}),a.jsx(p.Col,{flex:"auto",style:{overflow:"hidden"},children:a.jsx(p.Tabs,{activeKey:n,onChange:u=>r(u),items:[{key:"permissions",label:e("Permissions"),children:a.jsx(Si,{active:n==="permissions"})},...s]})})]})})})})};class Pi{constructor(){L(this,"rolesManager",new Re.Registry)}add(t,n){this.rolesManager.register(t,n)}list(){return this.rolesManager.getEntities()}}class ee extends l.Plugin{constructor(){super(...arguments);L(this,"rolesManager",new Pi);L(this,"settingsUI",new Hs)}load(){return x(this,null,function*(){this.pluginSettingsManager.add("users-permissions.roles",{title:this.t("Roles & Permissions"),icon:"LockOutlined",Component:Ai,aclSnippet:"pm.acl.roles",sort:3})})}}v.PluginACLClient=ee,v.RolesManagerContext=M,v.default=ee,Object.defineProperties(v,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
10
|
+
!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("react-i18next"),require("@formily/shared"),require("@nocobase/utils/client"),require("@formily/core"),require("@nocobase/client"),require("lodash"),require("ahooks"),require("antd"),require("@ant-design/icons"),require("@formily/react"),require("antd-style"),require("react")):"function"==typeof define&&define.amd?define("@nocobase/plugin-acl",["react-i18next","@formily/shared","@nocobase/utils/client","@formily/core","@nocobase/client","lodash","ahooks","antd","@ant-design/icons","@formily/react","antd-style","react"],n):"object"==typeof exports?exports["@nocobase/plugin-acl"]=n(require("react-i18next"),require("@formily/shared"),require("@nocobase/utils/client"),require("@formily/core"),require("@nocobase/client"),require("lodash"),require("ahooks"),require("antd"),require("@ant-design/icons"),require("@formily/react"),require("antd-style"),require("react")):e["@nocobase/plugin-acl"]=n(e["react-i18next"],e["@formily/shared"],e["@nocobase/utils/client"],e["@formily/core"],e["@nocobase/client"],e.lodash,e.ahooks,e.antd,e["@ant-design/icons"],e["@formily/react"],e["antd-style"],e.react)}(self,function(e,n,t,r,o,i,u,a,c,l,s,f){return function(){var p,d,b,y,m,h={746:function(e,n,t){"use strict";t.d(n,{T:function(){return r}});var r=(0,t(156).createContext)({role:null});r.displayName="RolesManagerContext"},590:function(e,n,t){"use strict";t.r(n),t.d(n,{PluginACLClient:function(){return O},default:function(){return j},RolesManagerContext:function(){return y.T}});var r=t("772"),o=t("156"),i=t.n(o),u=t(581);function a(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var c=(0,r.lazy)(function(){return u("imported_-1r1jup3_component",t.e("748").then(t.bind(t,294)))},"GeneralPermissions").GeneralPermissions,l=(0,r.lazy)(function(){return u("imported_-olno4t_component",t.e("818").then(t.bind(t,105)))},"MenuItemsProvider").MenuItemsProvider,s=(0,r.lazy)(function(){return u("imported_1qalbop_component",t.e("871").then(t.bind(t,509)))},"MenuPermissions").MenuPermissions,f=function(){var e,n,t;function r(){var e,n,t;!function(e,n){if(!(e instanceof n))throw TypeError("Cannot call a class as a function")}(this,r),e=this,n="permissionsTabs",t=[function(e){var n=e.t,t=e.TabLayout;return{key:"general",label:n("System"),children:i().createElement(t,null,i().createElement(c,null))}},function(e){var n=e.activeKey,t=e.t,r=e.TabLayout;return{key:"menu",label:t("Desktop menu"),children:i().createElement(r,null,i().createElement(l,null,i().createElement(s,{active:"menu"===n})))}}],n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t}return e=r,n=[{key:"addPermissionsTab",value:function(e){this.permissionsTabs.push(e)}},{key:"getPermissionsTabs",value:function(e){return this.permissionsTabs.map(function(n){return"function"==typeof n?n(e):n})}}],a(e.prototype,n),r}(),p=t("584");function d(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var b=function(){var e,n,t;function r(){var e,n,t;!function(e,n){if(!(e instanceof n))throw TypeError("Cannot call a class as a function")}(this,r),e=this,n="rolesManager",t=new p.Registry,n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t}return e=r,n=[{key:"add",value:function(e,n){this.rolesManager.register(e,n)}},{key:"list",value:function(){return this.rolesManager.getEntities()}}],d(e.prototype,n),r}(),y=t("746"),m=t(581);function h(e,n,t,r,o,i,u){try{var a=e[i](u),c=a.value}catch(e){t(e);return}a.done?n(c):Promise.resolve(c).then(r,o)}function v(e,n,t){return(v=P()?Reflect.construct:function(e,n,t){var r=[null];r.push.apply(r,n);var o=new(Function.bind.apply(e,r));return t&&w(o,t.prototype),o}).apply(null,arguments)}function g(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function x(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function _(e){return(_=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function w(e,n){return(w=Object.setPrototypeOf||function(e,n){return e.__proto__=n,e})(e,n)}function k(e){var n="function"==typeof Map?new Map:void 0;return(k=function(e){var t;if(null===e||(t=e,-1===Function.toString.call(t).indexOf("[native code]")))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(e))return n.get(e);n.set(e,r)}function r(){return v(e,arguments,_(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),w(r,e)})(e)}function P(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(P=function(){return!!e})()}var q=(0,r.lazy)(function(){return m("imported_-1obaqk_component",t.e("733").then(t.bind(t,594)))},"RolesManagement").RolesManagement,O=function(e){var n,t,r;function o(){var e,n,t,r;return!function(e,n){if(!(e instanceof n))throw TypeError("Cannot call a class as a function")}(this,o),n=this,t=o,r=arguments,t=_(t),x(e=function(e,n){return n&&("object"===function(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}(n)||"function"==typeof n)?n:function(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(n,P()?Reflect.construct(t,r||[],_(n).constructor):t.apply(n,r)),"rolesManager",new b),x(e,"settingsUI",new f),e}return!function(e,n){if("function"!=typeof n&&null!==n)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(n&&n.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),n&&w(e,n)}(o,e),n=o,t=[{key:"load",value:function(){var e,n=this;return(e=function(){return function(e,n){var t,r,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(t)throw TypeError("Generator is already executing.");for(;u;)try{if(t=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,r=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){u=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){u.label=i[1];break}if(6===i[0]&&u.label<o[1]){u.label=o[1],o=i;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(i);break}o[2]&&u.ops.pop(),u.trys.pop();continue}i=n.call(e,u)}catch(e){i=[6,e],r=0}finally{t=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}}(this,function(e){return n.pluginSettingsManager.add("users-permissions.roles",{title:n.t("Roles & Permissions"),icon:"LockOutlined",Component:q,aclSnippet:"pm.acl.roles",sort:3}),[2]})},function(){var n=this,t=arguments;return new Promise(function(r,o){var i=e.apply(n,t);function u(e){h(i,r,o,u,a,"next",e)}function a(e){h(i,r,o,u,a,"throw",e)}u(void 0)})})()}}],g(n.prototype,t),o}(k(r.Plugin)),j=O},581:function(e){e.exports=function(e,n){return"undefined"!=typeof __deoptimization_sideEffect__&&__deoptimization_sideEffect__(e,n),n}},482:function(e){"use strict";e.exports=c},563:function(e){"use strict";e.exports=r},505:function(e){"use strict";e.exports=l},875:function(e){"use strict";e.exports=n},772:function(e){"use strict";e.exports=o},584:function(e){"use strict";e.exports=t},749:function(e){"use strict";e.exports=u},721:function(e){"use strict";e.exports=a},202:function(e){"use strict";e.exports=s},467:function(e){"use strict";e.exports=i},156:function(e){"use strict";e.exports=f},238:function(n){"use strict";n.exports=e}},v={};function g(e){var n=v[e];if(void 0!==n)return n.exports;var t=v[e]={exports:{}};return h[e](t,t.exports,g),t.exports}return g.m=h,g.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return g.d(n,{a:n}),n},g.d=function(e,n){for(var t in n)g.o(n,t)&&!g.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},g.f={},g.e=function(e){return Promise.all(Object.keys(g.f).reduce(function(n,t){return g.f[t](e,n),n},[]))},g.u=function(e){return""+e+".index.js"},g.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},p={},d="@nocobase/plugin-acl:",g.l=function(e,n,t,r){if(p[e]){p[e].push(n);return}if(void 0!==t){for(var o,i,u=document.getElementsByTagName("script"),a=0;a<u.length;a++){var c=u[a];if(c.getAttribute("src")==e||c.getAttribute("data-webpack")==d+t){o=c;break}}}!o&&(i=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,g.nc&&o.setAttribute("nonce",g.nc),o.setAttribute("data-webpack",d+t),o.src=e),p[e]=[n];var l=function(n,t){o.onerror=o.onload=null,clearTimeout(s);var r=p[e];if(delete p[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach(function(e){return e(t)}),n)return n(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),i&&document.head.appendChild(o)},g.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},g.p="/static/plugins/@nocobase/plugin-acl/dist/client/",b={909:0},g.f.j=function(e,n){var t=g.o(b,e)?b[e]:void 0;if(0!==t){if(t)n.push(t[2]);else{var r=new Promise(function(n,r){t=b[e]=[n,r]});n.push(t[2]=r);var o=g.p+g.u(e),i=Error();g.l(o,function(n){if(g.o(b,e)&&(0!==(t=b[e])&&(b[e]=void 0),t)){var r=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;i.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",i.name="ChunkLoadError",i.type=r,i.request=o,t[1](i)}},"chunk-"+e,e)}}},y=function(e,n){var t=n[0],r=n[1],o=n[2],i,u,a=0;if(t.some(function(e){return 0!==b[e]})){for(i in r)g.o(r,i)&&(g.m[i]=r[i]);o&&o(g)}for(e&&e(n);a<t.length;a++)u=t[a],g.o(b,u)&&b[u]&&b[u][0](),b[u]=0},(m=self.webpackChunk_nocobase_plugin_acl=self.webpackChunk_nocobase_plugin_acl||[]).forEach(y.bind(null,0)),m.push=y.bind(null,m.push.bind(m)),g("590")}()});
|
package/dist/externalVersion.js
CHANGED
|
@@ -11,21 +11,20 @@ module.exports = {
|
|
|
11
11
|
"antd": "5.12.8",
|
|
12
12
|
"react": "18.2.0",
|
|
13
13
|
"react-i18next": "11.18.6",
|
|
14
|
-
"@nocobase/client": "1.
|
|
14
|
+
"@nocobase/client": "1.6.0-alpha.2",
|
|
15
15
|
"@formily/shared": "2.3.2",
|
|
16
16
|
"@formily/react": "2.3.0",
|
|
17
17
|
"@ant-design/icons": "5.2.6",
|
|
18
|
-
"@nocobase/utils": "1.
|
|
19
|
-
"@nocobase/actions": "1.
|
|
20
|
-
"@nocobase/cache": "1.
|
|
21
|
-
"@nocobase/database": "1.
|
|
22
|
-
"@nocobase/server": "1.
|
|
23
|
-
"async-mutex": "0.3.2",
|
|
18
|
+
"@nocobase/utils": "1.6.0-alpha.2",
|
|
19
|
+
"@nocobase/actions": "1.6.0-alpha.2",
|
|
20
|
+
"@nocobase/cache": "1.6.0-alpha.2",
|
|
21
|
+
"@nocobase/database": "1.6.0-alpha.2",
|
|
22
|
+
"@nocobase/server": "1.6.0-alpha.2",
|
|
24
23
|
"lodash": "4.17.21",
|
|
25
|
-
"@nocobase/test": "1.
|
|
24
|
+
"@nocobase/test": "1.6.0-alpha.2",
|
|
26
25
|
"@formily/core": "2.3.0",
|
|
27
26
|
"ahooks": "3.7.8",
|
|
28
27
|
"@formily/antd-v5": "1.1.9",
|
|
29
28
|
"antd-style": "3.7.1",
|
|
30
|
-
"@nocobase/acl": "1.
|
|
29
|
+
"@nocobase/acl": "1.6.0-alpha.2"
|
|
31
30
|
};
|
package/dist/server/server.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare class PluginACLServer extends Plugin {
|
|
|
15
15
|
get acl(): import("@nocobase/acl").ACL;
|
|
16
16
|
writeResourceToACL(resourceModel: RoleResourceModel, transaction: Transaction): Promise<void>;
|
|
17
17
|
writeActionToACL(actionModel: RoleResourceActionModel, transaction: Transaction): Promise<void>;
|
|
18
|
+
handleSyncMessage(message: any): Promise<void>;
|
|
18
19
|
writeRolesToACL(options: any): Promise<void>;
|
|
19
20
|
writeRoleToACL(role: RoleModel, options?: any): Promise<void>;
|
|
20
21
|
beforeLoad(): Promise<void>;
|
package/dist/server/server.js
CHANGED
|
@@ -43,7 +43,6 @@ module.exports = __toCommonJS(server_exports);
|
|
|
43
43
|
var import_actions = require("@nocobase/actions");
|
|
44
44
|
var import_database = require("@nocobase/database");
|
|
45
45
|
var import_server = require("@nocobase/server");
|
|
46
|
-
var import_async_mutex = require("async-mutex");
|
|
47
46
|
var import_lodash = __toESM(require("lodash"));
|
|
48
47
|
var import_path = require("path");
|
|
49
48
|
var import_available_actions = require("./actions/available-actions");
|
|
@@ -74,6 +73,23 @@ class PluginACLServer extends import_server.Plugin {
|
|
|
74
73
|
resourceName: resource.get("name")
|
|
75
74
|
});
|
|
76
75
|
}
|
|
76
|
+
async handleSyncMessage(message) {
|
|
77
|
+
const { type } = message;
|
|
78
|
+
if (type === "syncRole") {
|
|
79
|
+
const { roleName } = message;
|
|
80
|
+
const role = await this.app.db.getRepository("roles").findOne({
|
|
81
|
+
filter: {
|
|
82
|
+
name: roleName
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
await this.writeRoleToACL(role, {
|
|
86
|
+
withOutResources: true
|
|
87
|
+
});
|
|
88
|
+
await this.app.emitAsync("acl:writeResources", {
|
|
89
|
+
roleName: role.get("name")
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
77
93
|
async writeRolesToACL(options) {
|
|
78
94
|
const roles = await this.app.db.getRepository("roles").find({
|
|
79
95
|
appends: ["resources", "resources.actions"]
|
|
@@ -211,6 +227,15 @@ class PluginACLServer extends import_server.Plugin {
|
|
|
211
227
|
transaction
|
|
212
228
|
});
|
|
213
229
|
}
|
|
230
|
+
this.sendSyncMessage(
|
|
231
|
+
{
|
|
232
|
+
type: "syncRole",
|
|
233
|
+
roleName: model.get("name")
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
transaction: options.transaction
|
|
237
|
+
}
|
|
238
|
+
);
|
|
214
239
|
});
|
|
215
240
|
this.app.db.on("roles.afterDestroy", (model) => {
|
|
216
241
|
const roleName = model.get("name");
|
|
@@ -260,9 +285,9 @@ class PluginACLServer extends import_server.Plugin {
|
|
|
260
285
|
});
|
|
261
286
|
}
|
|
262
287
|
});
|
|
263
|
-
const mutex = new import_async_mutex.Mutex();
|
|
264
288
|
this.app.db.on("fields.afterDestroy", async (model, options) => {
|
|
265
|
-
|
|
289
|
+
const lockKey = `${this.name}:fields.afterDestroy:${model.get("collectionName")}:${model.get("name")}`;
|
|
290
|
+
await this.app.lockManager.runExclusive(lockKey, async () => {
|
|
266
291
|
const collectionName = model.get("collectionName");
|
|
267
292
|
const fieldName = model.get("name");
|
|
268
293
|
const resourceActions = await this.app.db.getRepository("dataSourcesRolesResourcesActions").find({
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"displayName.zh-CN": "权限控制",
|
|
5
5
|
"description": "Based on roles, resources, and actions, access control can precisely manage interface configuration permissions, data operation permissions, menu access permissions, and plugin permissions.",
|
|
6
6
|
"description.zh-CN": "基于角色、资源和操作的权限控制,可以精确控制界面配置权限、数据操作权限、菜单访问权限、插件权限。",
|
|
7
|
-
"version": "1.
|
|
7
|
+
"version": "1.6.0-alpha.2",
|
|
8
8
|
"license": "AGPL-3.0",
|
|
9
9
|
"main": "./dist/server/index.js",
|
|
10
10
|
"homepage": "https://docs.nocobase.com/handbook/acl",
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
],
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"@types/jsonwebtoken": "^8.5.8",
|
|
17
|
-
"async-mutex": "^0.3.2",
|
|
18
17
|
"jsonwebtoken": "^8.5.1",
|
|
19
18
|
"react": "^18.2.0",
|
|
20
19
|
"react-dom": "^18.2.0"
|
|
@@ -34,5 +33,5 @@
|
|
|
34
33
|
"url": "git+https://github.com/nocobase/nocobase.git",
|
|
35
34
|
"directory": "packages/plugins/acl"
|
|
36
35
|
},
|
|
37
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "08bbc34c21727fc0ad0880f397a42bf7741091ee"
|
|
38
37
|
}
|