@tachybase/module-acl 1.3.25 → 1.4.0
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/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(y,d){typeof exports=="object"&&typeof module!="undefined"?d(exports,require("@tachybase/client"),require("@tego/client"),require("react/jsx-runtime"),require("react"),require("@tachybase/schema"),require("antd"),require("react-i18next"),require("ahooks"),require("lodash"),require("@ant-design/icons")):typeof define=="function"&&define.amd?define(["exports","@tachybase/client","@tego/client","react/jsx-runtime","react","@tachybase/schema","antd","react-i18next","ahooks","lodash","@ant-design/icons"],d):(y=typeof globalThis!="undefined"?globalThis:y||self,d(y["@tachybase/module-acl"]={},y["@tachybase/client"],y["@tego/client"],y.jsxRuntime,y.react,y["@tachybase/schema"],y.antd,y["react-i18next"],y.ahooks,y.lodash,y["@ant-design/icons"]))})(this,function(y,d,A,c,v,w,f,M,O,N,Lr){"use strict";var Es=Object.defineProperty,Ns=Object.defineProperties;var ks=Object.getOwnPropertyDescriptors;var Wn=Object.getOwnPropertySymbols;var Hs=Object.prototype.hasOwnProperty,Rs=Object.prototype.propertyIsEnumerable;var Bn=(y,d,A)=>d in y?Es(y,d,{enumerable:!0,configurable:!0,writable:!0,value:A}):y[d]=A,T=(y,d)=>{for(var A in d||(d={}))Hs.call(d,A)&&Bn(y,A,d[A]);if(Wn)for(var A of Wn(d))Rs.call(d,A)&&Bn(y,A,d[A]);return y},k=(y,d)=>Ns(y,ks(d));var P=(y,d,A)=>new Promise((c,v)=>{var w=O=>{try{M(A.next(O))}catch(N){v(N)}},f=O=>{try{M(A.throw(O))}catch(N){v(N)}},M=O=>O.done?c(O.value):Promise.resolve(O.value).then(w,f);M((A=A.apply(y,d)).next())});class Jn{constructor(){this.rolesManager=new A.Registry}add(e,r){this.rolesManager.register(e,r)}list(){return this.rolesManager.getEntities()}}function H(){return M.useTranslation(["@tachybase/module-acl","core"],{nsMode:"fallback"})}const Xn=()=>{const{t}=H();return c.jsx(d.SchemaComponent,{scope:{t},schema:{type:"void",properties:{newRole:{type:"void",title:t("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(e){const r=d.useActionContext();return d.useRequest(()=>Promise.resolve({data:{name:`r_${w.uid()}`,snippets:["!ui.*","!pm","!pm.*"]}}),k(T({},e),{refreshDeps:[r.visible]}))}},title:t("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 }}"}}}}}}}}}}})},E=v.createContext({role:null});E.displayName="RolesManagerContext";const J=v.createContext([]);J.displayName="AvailableActionsContext";const Yn=t=>{const{data:e,loading:r}=d.useRequest({resource:"availableActions",action:"list"});return r?c.jsx(f.Spin,{}):c.jsx(J.Provider,{value:e==null?void 0:e.data,children:t.children})},Zn=()=>v.useContext(J);var G=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Ur(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var X,Vr;function Qn(){if(Vr)return X;Vr=1;var t=typeof G=="object"&&G&&G.Object===Object&&G;return X=t,X}var Y,Wr;function j(){if(Wr)return Y;Wr=1;var t=Qn(),e=typeof self=="object"&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return Y=r,Y}var Z,Br;function K(){if(Br)return Z;Br=1;var t=j(),e=t.Symbol;return Z=e,Z}var Q,Jr;function $n(){if(Jr)return Q;Jr=1;var t=K(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,a=t?t.toStringTag:void 0;function s(i){var o=r.call(i,a),u=i[a];try{i[a]=void 0;var l=!0}catch(b){}var p=n.call(i);return l&&(o?i[a]=u:delete i[a]),p}return Q=s,Q}var $,Xr;function ea(){if(Xr)return $;Xr=1;var t=Object.prototype,e=t.toString;function r(n){return e.call(n)}return $=r,$}var ee,Yr;function re(){if(Yr)return ee;Yr=1;var t=K(),e=$n(),r=ea(),n="[object Null]",a="[object Undefined]",s=t?t.toStringTag:void 0;function i(o){return o==null?o===void 0?a:n:s&&s in Object(o)?e(o):r(o)}return ee=i,ee}var te,Zr;function ne(){if(Zr)return te;Zr=1;function t(e){var r=typeof e;return e!=null&&(r=="object"||r=="function")}return te=t,te}var ae,Qr;function ra(){if(Qr)return ae;Qr=1;var t=re(),e=ne(),r="[object AsyncFunction]",n="[object Function]",a="[object GeneratorFunction]",s="[object Proxy]";function i(o){if(!e(o))return!1;var u=t(o);return u==n||u==a||u==r||u==s}return ae=i,ae}var se,$r;function ta(){if($r)return se;$r=1;var t=j(),e=t["__core-js_shared__"];return se=e,se}var ie,et;function na(){if(et)return ie;et=1;var t=ta(),e=function(){var n=/[^.]+$/.exec(t&&t.keys&&t.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function r(n){return!!e&&e in n}return ie=r,ie}var oe,rt;function aa(){if(rt)return oe;rt=1;var t=Function.prototype,e=t.toString;function r(n){if(n!=null){try{return e.call(n)}catch(a){}try{return n+""}catch(a){}}return""}return oe=r,oe}var ue,tt;function sa(){if(tt)return ue;tt=1;var t=ra(),e=na(),r=ne(),n=aa(),a=/[\\^$.*+?()[\]{}|]/g,s=/^\[object .+?Constructor\]$/,i=Function.prototype,o=Object.prototype,u=i.toString,l=o.hasOwnProperty,p=RegExp("^"+u.call(l).replace(a,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function b(m){if(!r(m)||e(m))return!1;var q=t(m)?p:s;return q.test(n(m))}return ue=b,ue}var ce,nt;function ia(){if(nt)return ce;nt=1;function t(e,r){return e==null?void 0:e[r]}return ce=t,ce}var le,at;function z(){if(at)return le;at=1;var t=sa(),e=ia();function r(n,a){var s=e(n,a);return t(s)?s:void 0}return le=r,le}var de,st;function L(){if(st)return de;st=1;var t=z(),e=t(Object,"create");return de=e,de}var he,it;function oa(){if(it)return he;it=1;var t=L();function e(){this.__data__=t?t(null):{},this.size=0}return he=e,he}var fe,ot;function ua(){if(ot)return fe;ot=1;function t(e){var r=this.has(e)&&delete this.__data__[e];return this.size-=r?1:0,r}return fe=t,fe}var pe,ut;function ca(){if(ut)return pe;ut=1;var t=L(),e="__lodash_hash_undefined__",r=Object.prototype,n=r.hasOwnProperty;function a(s){var i=this.__data__;if(t){var o=i[s];return o===e?void 0:o}return n.call(i,s)?i[s]:void 0}return pe=a,pe}var ve,ct;function la(){if(ct)return ve;ct=1;var t=L(),e=Object.prototype,r=e.hasOwnProperty;function n(a){var s=this.__data__;return t?s[a]!==void 0:r.call(s,a)}return ve=n,ve}var _e,lt;function da(){if(lt)return _e;lt=1;var t=L(),e="__lodash_hash_undefined__";function r(n,a){var s=this.__data__;return this.size+=this.has(n)?0:1,s[n]=t&&a===void 0?e:a,this}return _e=r,_e}var ge,dt;function ha(){if(dt)return ge;dt=1;var t=oa(),e=ua(),r=ca(),n=la(),a=da();function s(i){var o=-1,u=i==null?0:i.length;for(this.clear();++o<u;){var l=i[o];this.set(l[0],l[1])}}return s.prototype.clear=t,s.prototype.delete=e,s.prototype.get=r,s.prototype.has=n,s.prototype.set=a,ge=s,ge}var me,ht;function fa(){if(ht)return me;ht=1;function t(){this.__data__=[],this.size=0}return me=t,me}var ye,ft;function pt(){if(ft)return ye;ft=1;function t(e,r){return e===r||e!==e&&r!==r}return ye=t,ye}var be,vt;function U(){if(vt)return be;vt=1;var t=pt();function e(r,n){for(var a=r.length;a--;)if(t(r[a][0],n))return a;return-1}return be=e,be}var qe,_t;function pa(){if(_t)return qe;_t=1;var t=U(),e=Array.prototype,r=e.splice;function n(a){var s=this.__data__,i=t(s,a);if(i<0)return!1;var o=s.length-1;return i==o?s.pop():r.call(s,i,1),--this.size,!0}return qe=n,qe}var Ce,gt;function va(){if(gt)return Ce;gt=1;var t=U();function e(r){var n=this.__data__,a=t(n,r);return a<0?void 0:n[a][1]}return Ce=e,Ce}var Se,mt;function _a(){if(mt)return Se;mt=1;var t=U();function e(r){return t(this.__data__,r)>-1}return Se=e,Se}var xe,yt;function ga(){if(yt)return xe;yt=1;var t=U();function e(r,n){var a=this.__data__,s=t(a,r);return s<0?(++this.size,a.push([r,n])):a[s][1]=n,this}return xe=e,xe}var Ie,bt;function ma(){if(bt)return Ie;bt=1;var t=fa(),e=pa(),r=va(),n=_a(),a=ga();function s(i){var o=-1,u=i==null?0:i.length;for(this.clear();++o<u;){var l=i[o];this.set(l[0],l[1])}}return s.prototype.clear=t,s.prototype.delete=e,s.prototype.get=r,s.prototype.has=n,s.prototype.set=a,Ie=s,Ie}var Ae,qt;function ya(){if(qt)return Ae;qt=1;var t=z(),e=j(),r=t(e,"Map");return Ae=r,Ae}var we,Ct;function ba(){if(Ct)return we;Ct=1;var t=ha(),e=ma(),r=ya();function n(){this.size=0,this.__data__={hash:new t,map:new(r||e),string:new t}}return we=n,we}var Pe,St;function qa(){if(St)return Pe;St=1;function t(e){var r=typeof e;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?e!=="__proto__":e===null}return Pe=t,Pe}var Te,xt;function V(){if(xt)return Te;xt=1;var t=qa();function e(r,n){var a=r.__data__;return t(n)?a[typeof n=="string"?"string":"hash"]:a.map}return Te=e,Te}var Oe,It;function Ca(){if(It)return Oe;It=1;var t=V();function e(r){var n=t(this,r).delete(r);return this.size-=n?1:0,n}return Oe=e,Oe}var Me,At;function Sa(){if(At)return Me;At=1;var t=V();function e(r){return t(this,r).get(r)}return Me=e,Me}var Fe,wt;function xa(){if(wt)return Fe;wt=1;var t=V();function e(r){return t(this,r).has(r)}return Fe=e,Fe}var De,Pt;function Ia(){if(Pt)return De;Pt=1;var t=V();function e(r,n){var a=t(this,r),s=a.size;return a.set(r,n),this.size+=a.size==s?0:1,this}return De=e,De}var Ee,Tt;function Ot(){if(Tt)return Ee;Tt=1;var t=ba(),e=Ca(),r=Sa(),n=xa(),a=Ia();function s(i){var o=-1,u=i==null?0:i.length;for(this.clear();++o<u;){var l=i[o];this.set(l[0],l[1])}}return s.prototype.clear=t,s.prototype.delete=e,s.prototype.get=r,s.prototype.has=n,s.prototype.set=a,Ee=s,Ee}var Ne,Mt;function Aa(){if(Mt)return Ne;Mt=1;var t="__lodash_hash_undefined__";function e(r){return this.__data__.set(r,t),this}return Ne=e,Ne}var ke,Ft;function wa(){if(Ft)return ke;Ft=1;function t(e){return this.__data__.has(e)}return ke=t,ke}var He,Dt;function Pa(){if(Dt)return He;Dt=1;var t=Ot(),e=Aa(),r=wa();function n(a){var s=-1,i=a==null?0:a.length;for(this.__data__=new t;++s<i;)this.add(a[s])}return n.prototype.add=n.prototype.push=e,n.prototype.has=r,He=n,He}var Re,Et;function Ta(){if(Et)return Re;Et=1;function t(e,r,n,a){for(var s=e.length,i=n+(a?1:-1);a?i--:++i<s;)if(r(e[i],i,e))return i;return-1}return Re=t,Re}var Ge,Nt;function Oa(){if(Nt)return Ge;Nt=1;function t(e){return e!==e}return Ge=t,Ge}var je,kt;function Ma(){if(kt)return je;kt=1;function t(e,r,n){for(var a=n-1,s=e.length;++a<s;)if(e[a]===r)return a;return-1}return je=t,je}var Ke,Ht;function Fa(){if(Ht)return Ke;Ht=1;var t=Ta(),e=Oa(),r=Ma();function n(a,s,i){return s===s?r(a,s,i):t(a,e,i)}return Ke=n,Ke}var ze,Rt;function Da(){if(Rt)return ze;Rt=1;var t=Fa();function e(r,n){var a=r==null?0:r.length;return!!a&&t(r,n,0)>-1}return ze=e,ze}var Le,Gt;function Ea(){if(Gt)return Le;Gt=1;function t(e,r,n){for(var a=-1,s=e==null?0:e.length;++a<s;)if(n(r,e[a]))return!0;return!1}return Le=t,Le}var Ue,jt;function Na(){if(jt)return Ue;jt=1;function t(e,r){return e.has(r)}return Ue=t,Ue}var Ve,Kt;function ka(){if(Kt)return Ve;Kt=1;var t=z(),e=j(),r=t(e,"Set");return Ve=r,Ve}var We,zt;function Ha(){if(zt)return We;zt=1;function t(){}return We=t,We}var Be,Lt;function Ut(){if(Lt)return Be;Lt=1;function t(e){var r=-1,n=Array(e.size);return e.forEach(function(a){n[++r]=a}),n}return Be=t,Be}var Je,Vt;function Ra(){if(Vt)return Je;Vt=1;var t=ka(),e=Ha(),r=Ut(),n=1/0,a=t&&1/r(new t([,-0]))[1]==n?function(s){return new t(s)}:e;return Je=a,Je}var Xe,Wt;function Ga(){if(Wt)return Xe;Wt=1;var t=Pa(),e=Da(),r=Ea(),n=Na(),a=Ra(),s=Ut(),i=200;function o(u,l,p){var b=-1,m=e,q=u.length,x=!0,S=[],I=S;if(p)x=!1,m=r;else if(q>=i){var g=l?null:a(u);if(g)return s(g);x=!1,m=n,I=new t}else I=l?[]:S;e:for(;++b<q;){var _=u[b],h=l?l(_):_;if(_=p||_!==0?_:0,x&&h===h){for(var C=I.length;C--;)if(I[C]===h)continue e;l&&I.push(h),S.push(_)}else m(I,h,p)||(I!==S&&I.push(h),S.push(_))}return S}return Xe=o,Xe}var Ye,Bt;function ja(){if(Bt)return Ye;Bt=1;var t=Ga();function e(r){return r&&r.length?t(r):[]}return Ye=e,Ye}var Ka=ja();const za=Ur(Ka),Jt=d.createStyles(({css:t})=>t`
|
|
1
|
+
(function(y,h){typeof exports=="object"&&typeof module!="undefined"?h(exports,require("@tachybase/client"),require("@tego/client"),require("react/jsx-runtime"),require("react"),require("@tachybase/schema"),require("antd"),require("react-i18next"),require("ahooks"),require("lodash"),require("@ant-design/icons")):typeof define=="function"&&define.amd?define(["exports","@tachybase/client","@tego/client","react/jsx-runtime","react","@tachybase/schema","antd","react-i18next","ahooks","lodash","@ant-design/icons"],h):(y=typeof globalThis!="undefined"?globalThis:y||self,h(y["@tachybase/module-acl"]={},y["@tachybase/client"],y["@tego/client"],y.jsxRuntime,y.react,y["@tachybase/schema"],y.antd,y["react-i18next"],y.ahooks,y.lodash,y["@ant-design/icons"]))})(this,function(y,h,P,c,p,T,d,k,D,H,Br){"use strict";var Bs=Object.defineProperty,Js=Object.defineProperties;var Xs=Object.getOwnPropertyDescriptors;var na=Object.getOwnPropertySymbols;var Ys=Object.prototype.hasOwnProperty,Zs=Object.prototype.propertyIsEnumerable;var aa=(y,h,P)=>h in y?Bs(y,h,{enumerable:!0,configurable:!0,writable:!0,value:P}):y[h]=P,F=(y,h)=>{for(var P in h||(h={}))Ys.call(h,P)&&aa(y,P,h[P]);if(na)for(var P of na(h))Zs.call(h,P)&&aa(y,P,h[P]);return y},G=(y,h)=>Js(y,Xs(h));var M=(y,h,P)=>new Promise((c,p)=>{var T=D=>{try{k(P.next(D))}catch(H){p(H)}},d=D=>{try{k(P.throw(D))}catch(H){p(H)}},k=D=>D.done?c(D.value):Promise.resolve(D.value).then(T,d);k((P=P.apply(y,h)).next())});class sa{constructor(){this.rolesManager=new P.Registry}add(e,r){this.rolesManager.register(e,r)}list(){return this.rolesManager.getEntities()}}function j(){return k.useTranslation(["@tachybase/module-acl","core"],{nsMode:"fallback"})}const ia=()=>{const{t}=j();return c.jsx(h.SchemaComponent,{scope:{t},schema:{type:"void",properties:{newRole:{type:"void",title:t("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(e){const r=h.useActionContext();return h.useRequest(()=>Promise.resolve({data:{name:`r_${T.uid()}`,snippets:["!ui.*","!pm","!pm.*"]}}),G(F({},e),{refreshDeps:[r.visible]}))}},title:t("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 }}"}}}}}}}}}}})},N=p.createContext({role:null});N.displayName="RolesManagerContext";const Q=p.createContext([]);Q.displayName="AvailableActionsContext";const oa=t=>{const{data:e,loading:r}=h.useRequest({resource:"availableActions",action:"list"});return r?c.jsx(d.Spin,{}):c.jsx(Q.Provider,{value:e==null?void 0:e.data,children:t.children})},ua=()=>p.useContext(Q);var K=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Jr(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var $,Xr;function ca(){if(Xr)return $;Xr=1;var t=typeof K=="object"&&K&&K.Object===Object&&K;return $=t,$}var ee,Yr;function L(){if(Yr)return ee;Yr=1;var t=ca(),e=typeof self=="object"&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return ee=r,ee}var re,Zr;function z(){if(Zr)return re;Zr=1;var t=L(),e=t.Symbol;return re=e,re}var te,Qr;function la(){if(Qr)return te;Qr=1;var t=z(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,a=t?t.toStringTag:void 0;function s(i){var o=r.call(i,a),u=i[a];try{i[a]=void 0;var l=!0}catch(g){}var f=n.call(i);return l&&(o?i[a]=u:delete i[a]),f}return te=s,te}var ne,$r;function ha(){if($r)return ne;$r=1;var t=Object.prototype,e=t.toString;function r(n){return e.call(n)}return ne=r,ne}var ae,et;function se(){if(et)return ae;et=1;var t=z(),e=la(),r=ha(),n="[object Null]",a="[object Undefined]",s=t?t.toStringTag:void 0;function i(o){return o==null?o===void 0?a:n:s&&s in Object(o)?e(o):r(o)}return ae=i,ae}var ie,rt;function oe(){if(rt)return ie;rt=1;function t(e){var r=typeof e;return e!=null&&(r=="object"||r=="function")}return ie=t,ie}var ue,tt;function da(){if(tt)return ue;tt=1;var t=se(),e=oe(),r="[object AsyncFunction]",n="[object Function]",a="[object GeneratorFunction]",s="[object Proxy]";function i(o){if(!e(o))return!1;var u=t(o);return u==n||u==a||u==r||u==s}return ue=i,ue}var ce,nt;function fa(){if(nt)return ce;nt=1;var t=L(),e=t["__core-js_shared__"];return ce=e,ce}var le,at;function pa(){if(at)return le;at=1;var t=fa(),e=function(){var n=/[^.]+$/.exec(t&&t.keys&&t.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function r(n){return!!e&&e in n}return le=r,le}var he,st;function va(){if(st)return he;st=1;var t=Function.prototype,e=t.toString;function r(n){if(n!=null){try{return e.call(n)}catch(a){}try{return n+""}catch(a){}}return""}return he=r,he}var de,it;function _a(){if(it)return de;it=1;var t=da(),e=pa(),r=oe(),n=va(),a=/[\\^$.*+?()[\]{}|]/g,s=/^\[object .+?Constructor\]$/,i=Function.prototype,o=Object.prototype,u=i.toString,l=o.hasOwnProperty,f=RegExp("^"+u.call(l).replace(a,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function g(m){if(!r(m)||e(m))return!1;var b=t(m)?f:s;return b.test(n(m))}return de=g,de}var fe,ot;function ga(){if(ot)return fe;ot=1;function t(e,r){return e==null?void 0:e[r]}return fe=t,fe}var pe,ut;function V(){if(ut)return pe;ut=1;var t=_a(),e=ga();function r(n,a){var s=e(n,a);return t(s)?s:void 0}return pe=r,pe}var ve,ct;function W(){if(ct)return ve;ct=1;var t=V(),e=t(Object,"create");return ve=e,ve}var _e,lt;function ma(){if(lt)return _e;lt=1;var t=W();function e(){this.__data__=t?t(null):{},this.size=0}return _e=e,_e}var ge,ht;function ya(){if(ht)return ge;ht=1;function t(e){var r=this.has(e)&&delete this.__data__[e];return this.size-=r?1:0,r}return ge=t,ge}var me,dt;function ba(){if(dt)return me;dt=1;var t=W(),e="__lodash_hash_undefined__",r=Object.prototype,n=r.hasOwnProperty;function a(s){var i=this.__data__;if(t){var o=i[s];return o===e?void 0:o}return n.call(i,s)?i[s]:void 0}return me=a,me}var ye,ft;function Ca(){if(ft)return ye;ft=1;var t=W(),e=Object.prototype,r=e.hasOwnProperty;function n(a){var s=this.__data__;return t?s[a]!==void 0:r.call(s,a)}return ye=n,ye}var be,pt;function qa(){if(pt)return be;pt=1;var t=W(),e="__lodash_hash_undefined__";function r(n,a){var s=this.__data__;return this.size+=this.has(n)?0:1,s[n]=t&&a===void 0?e:a,this}return be=r,be}var Ce,vt;function Sa(){if(vt)return Ce;vt=1;var t=ma(),e=ya(),r=ba(),n=Ca(),a=qa();function s(i){var o=-1,u=i==null?0:i.length;for(this.clear();++o<u;){var l=i[o];this.set(l[0],l[1])}}return s.prototype.clear=t,s.prototype.delete=e,s.prototype.get=r,s.prototype.has=n,s.prototype.set=a,Ce=s,Ce}var qe,_t;function xa(){if(_t)return qe;_t=1;function t(){this.__data__=[],this.size=0}return qe=t,qe}var Se,gt;function mt(){if(gt)return Se;gt=1;function t(e,r){return e===r||e!==e&&r!==r}return Se=t,Se}var xe,yt;function B(){if(yt)return xe;yt=1;var t=mt();function e(r,n){for(var a=r.length;a--;)if(t(r[a][0],n))return a;return-1}return xe=e,xe}var Ie,bt;function Ia(){if(bt)return Ie;bt=1;var t=B(),e=Array.prototype,r=e.splice;function n(a){var s=this.__data__,i=t(s,a);if(i<0)return!1;var o=s.length-1;return i==o?s.pop():r.call(s,i,1),--this.size,!0}return Ie=n,Ie}var Ae,Ct;function Aa(){if(Ct)return Ae;Ct=1;var t=B();function e(r){var n=this.__data__,a=t(n,r);return a<0?void 0:n[a][1]}return Ae=e,Ae}var we,qt;function wa(){if(qt)return we;qt=1;var t=B();function e(r){return t(this.__data__,r)>-1}return we=e,we}var Pe,St;function Pa(){if(St)return Pe;St=1;var t=B();function e(r,n){var a=this.__data__,s=t(a,r);return s<0?(++this.size,a.push([r,n])):a[s][1]=n,this}return Pe=e,Pe}var Te,xt;function Ta(){if(xt)return Te;xt=1;var t=xa(),e=Ia(),r=Aa(),n=wa(),a=Pa();function s(i){var o=-1,u=i==null?0:i.length;for(this.clear();++o<u;){var l=i[o];this.set(l[0],l[1])}}return s.prototype.clear=t,s.prototype.delete=e,s.prototype.get=r,s.prototype.has=n,s.prototype.set=a,Te=s,Te}var Oe,It;function Oa(){if(It)return Oe;It=1;var t=V(),e=L(),r=t(e,"Map");return Oe=r,Oe}var Me,At;function Ma(){if(At)return Me;At=1;var t=Sa(),e=Ta(),r=Oa();function n(){this.size=0,this.__data__={hash:new t,map:new(r||e),string:new t}}return Me=n,Me}var Fe,wt;function Fa(){if(wt)return Fe;wt=1;function t(e){var r=typeof e;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?e!=="__proto__":e===null}return Fe=t,Fe}var De,Pt;function J(){if(Pt)return De;Pt=1;var t=Fa();function e(r,n){var a=r.__data__;return t(n)?a[typeof n=="string"?"string":"hash"]:a.map}return De=e,De}var ke,Tt;function Da(){if(Tt)return ke;Tt=1;var t=J();function e(r){var n=t(this,r).delete(r);return this.size-=n?1:0,n}return ke=e,ke}var Ee,Ot;function ka(){if(Ot)return Ee;Ot=1;var t=J();function e(r){return t(this,r).get(r)}return Ee=e,Ee}var Ne,Mt;function Ea(){if(Mt)return Ne;Mt=1;var t=J();function e(r){return t(this,r).has(r)}return Ne=e,Ne}var He,Ft;function Na(){if(Ft)return He;Ft=1;var t=J();function e(r,n){var a=t(this,r),s=a.size;return a.set(r,n),this.size+=a.size==s?0:1,this}return He=e,He}var Re,Dt;function kt(){if(Dt)return Re;Dt=1;var t=Ma(),e=Da(),r=ka(),n=Ea(),a=Na();function s(i){var o=-1,u=i==null?0:i.length;for(this.clear();++o<u;){var l=i[o];this.set(l[0],l[1])}}return s.prototype.clear=t,s.prototype.delete=e,s.prototype.get=r,s.prototype.has=n,s.prototype.set=a,Re=s,Re}var Ge,Et;function Ha(){if(Et)return Ge;Et=1;var t="__lodash_hash_undefined__";function e(r){return this.__data__.set(r,t),this}return Ge=e,Ge}var je,Nt;function Ra(){if(Nt)return je;Nt=1;function t(e){return this.__data__.has(e)}return je=t,je}var Ue,Ht;function Ga(){if(Ht)return Ue;Ht=1;var t=kt(),e=Ha(),r=Ra();function n(a){var s=-1,i=a==null?0:a.length;for(this.__data__=new t;++s<i;)this.add(a[s])}return n.prototype.add=n.prototype.push=e,n.prototype.has=r,Ue=n,Ue}var Ke,Rt;function ja(){if(Rt)return Ke;Rt=1;function t(e,r,n,a){for(var s=e.length,i=n+(a?1:-1);a?i--:++i<s;)if(r(e[i],i,e))return i;return-1}return Ke=t,Ke}var Le,Gt;function Ua(){if(Gt)return Le;Gt=1;function t(e){return e!==e}return Le=t,Le}var ze,jt;function Ka(){if(jt)return ze;jt=1;function t(e,r,n){for(var a=n-1,s=e.length;++a<s;)if(e[a]===r)return a;return-1}return ze=t,ze}var Ve,Ut;function La(){if(Ut)return Ve;Ut=1;var t=ja(),e=Ua(),r=Ka();function n(a,s,i){return s===s?r(a,s,i):t(a,e,i)}return Ve=n,Ve}var We,Kt;function za(){if(Kt)return We;Kt=1;var t=La();function e(r,n){var a=r==null?0:r.length;return!!a&&t(r,n,0)>-1}return We=e,We}var Be,Lt;function Va(){if(Lt)return Be;Lt=1;function t(e,r,n){for(var a=-1,s=e==null?0:e.length;++a<s;)if(n(r,e[a]))return!0;return!1}return Be=t,Be}var Je,zt;function Wa(){if(zt)return Je;zt=1;function t(e,r){return e.has(r)}return Je=t,Je}var Xe,Vt;function Ba(){if(Vt)return Xe;Vt=1;var t=V(),e=L(),r=t(e,"Set");return Xe=r,Xe}var Ye,Wt;function Ja(){if(Wt)return Ye;Wt=1;function t(){}return Ye=t,Ye}var Ze,Bt;function Jt(){if(Bt)return Ze;Bt=1;function t(e){var r=-1,n=Array(e.size);return e.forEach(function(a){n[++r]=a}),n}return Ze=t,Ze}var Qe,Xt;function Xa(){if(Xt)return Qe;Xt=1;var t=Ba(),e=Ja(),r=Jt(),n=1/0,a=t&&1/r(new t([,-0]))[1]==n?function(s){return new t(s)}:e;return Qe=a,Qe}var $e,Yt;function Ya(){if(Yt)return $e;Yt=1;var t=Ga(),e=za(),r=Va(),n=Wa(),a=Xa(),s=Jt(),i=200;function o(u,l,f){var g=-1,m=e,b=u.length,S=!0,q=[],I=q;if(f)S=!1,m=r;else if(b>=i){var v=l?null:a(u);if(v)return s(v);S=!1,m=n,I=new t}else I=l?[]:q;e:for(;++g<b;){var C=u[g],_=l?l(C):C;if(C=f||C!==0?C:0,S&&_===_){for(var w=I.length;w--;)if(I[w]===_)continue e;l&&I.push(_),q.push(C)}else m(I,_,f)||(I!==q&&I.push(_),q.push(C))}return q}return $e=o,$e}var er,Zt;function Za(){if(Zt)return er;Zt=1;var t=Ya();function e(r){return r&&r.length?t(r):[]}return er=e,er}var Qa=Za();const $a=Jr(Qa),Qt=h.createStyles(({css:t})=>t`
|
|
2
2
|
.ant-table-cell {
|
|
3
3
|
> .ant-space-horizontal {
|
|
4
4
|
.ant-space-item-split:has(+ .ant-space-item:empty) {
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
-
`),Xt=(t=[],e=[])=>{for(const r of t)e.push(r.aclSnippet),r.children&&r.children.length&&Xt(r.children,e);return e},La=({active:t})=>{const e=d.useApp(),{styles:r}=Jt(),{role:n}=v.useContext(E),a=d.useAPIClient(),s=d.useCompile(),i=e.systemSettingsManager.getList(!1),o=e.systemSettingsManager.getAclSnippets(),[u,l]=v.useState((n==null?void 0:n.snippets)||[]),p=v.useMemo(()=>N.flatMap(i,g=>g.children?[g,...g.children]:g),[i]),b=v.useMemo(()=>u.includes("pm.*")&&u.every(g=>!g.startsWith("!pm.")),[u]),{t:m}=M.useTranslation(),{loading:q,refresh:x}=d.useRequest({resource:"roles.snippets",resourceOf:n==null?void 0:n.name,action:"list",params:{paginate:!1}},{ready:!!n&&t,refreshDeps:[n==null?void 0:n.name],manual:!0,onSuccess(g){l((g==null?void 0:g.data.filter(_=>p.find(h=>_.includes(`!${h.aclSnippet}`)||!_.startsWith("!pm."))))||[])}});if(!n)return;const S=a.resource("roles.snippets",n==null?void 0:n.name),I=(g,_)=>P(null,null,function*(){const C=Xt(_==null?void 0:_.children,[]).concat(_.aclSnippet);g?(yield S.add({values:C.map(F=>"!"+F)}),x()):(yield S.remove({values:C.map(F=>"!"+F)}),x()),f.message.success(m("Saved successfully"))});return c.jsx(f.Table,{className:r,loading:q,rowKey:"key",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:m("Plugin name"),render:g=>s(g)},{dataIndex:"accessible",title:c.jsxs(c.Fragment,{children:[c.jsx(f.Checkbox,{checked:b,onChange:()=>P(null,null,function*(){const g=o.map(_=>"!"+_);b?yield S.add({values:g}):yield S.remove({values:g}),x(),f.message.success(m("Saved successfully"))})}),m("Accessible")]}),render:(g,_)=>{const h=!u.includes("!"+_.aclSnippet);return c.jsx(f.Checkbox,{checked:h,onChange:()=>I(h,_)})}}],dataSource:i.filter(g=>g.isTopLevel!==!1).map(g=>g.showTabs!==!1?g:N.omit(g,"children"))})},Ua=t=>{var r;if(!t)return{};const e={};return(r=t==null?void 0:t.forEach)==null||r.call(t,n=>{const[a,s]=n.split(":");e[a]=s||"all"}),e},Yt=t=>{const e=[];for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)){const n=t[r];n==="all"?e.push(r):e.push(`${r}:${n}`)}return e},Va=w.connect(t=>{const{onChange:e}=t,r=Zn(),n=d.useCompile(),{t:a}=M.useTranslation(),s=w.useField(),i=Ua(s.value);return c.jsx("div",{children:c.jsx(f.Table,{rowKey:"name",size:"small",pagination:!1,columns:[{dataIndex:"displayName",title:a("Action display name"),render:o=>n(o)},{dataIndex:"onNewRecord",title:a("Action type"),render:o=>o?c.jsx(f.Tag,{color:"green",children:a("Action on new records")}):c.jsx(f.Tag,{color:"geekblue",children:a("Action on existing records")})},{dataIndex:"enabled",title:a("Allow"),render:(o,u)=>c.jsx(f.Checkbox,{checked:o,"aria-label":`${u.name}_checkbox`,onChange:l=>{o?delete i[u.name]:i[u.name]="all",e(Yt(i))}})},{dataIndex:"scope",title:a("Data scope"),render:(o,u)=>!u.onNewRecord&&c.jsx(f.Select,{"data-testid":"select-data-scope",popupMatchSelectWidth:!1,size:"small",value:o,options:[{label:a("All records"),value:"all"},{label:a("Own records"),value:"own"}],onChange:l=>{i[u.name]=l,e(Yt(i))}})}],dataSource:r==null?void 0:r.map(o=>{let u="all",l=!1;return i[o.name]&&(l=!0,u=i[o.name]),k(T({},o),{enabled:l,scope:u})})})})}),Wa=w.connect(t=>{const{t:e}=M.useTranslation();return c.jsxs(f.Checkbox.Group,{style:{width:"100%",display:"block"},value:t.value,onChange:r=>{const n=["ui.*","pm","pm.*","app"],a=n.map(i=>`!${i}`),s=za([...t.value||[],...r]).filter(i=>i&&!a.includes(i)).map(i=>!n.includes(i)||r!=null&&r.includes(i)?i:`!${i}`);for(const i of n)!s.includes(i)&&!s.includes(`!${i}`)&&s.push(`!${i}`);t.onChange(s)},children:[c.jsx("div",{style:{marginTop:16},children:c.jsx(f.Checkbox,{value:"ui.*",children:e("Allows to configure interface")})}),c.jsx("div",{style:{marginTop:8},children:c.jsx(f.Checkbox,{value:"pm",children:e("Allows to install, activate, disable plugins")})}),c.jsx("div",{style:{marginTop:8},children:c.jsx(f.Checkbox,{value:"pm.*",children:e("Allows to configure plugins")})}),c.jsx("div",{style:{marginTop:8},children:c.jsx(f.Checkbox,{value:"app",children:e("Allows to clear cache, reboot application")})})]})}),Ba=({active:t})=>{var u;const{role:e,setRole:r}=v.useContext(E),{t:n}=H(),a=d.useAPIClient(),s=(u=e==null?void 0:e.snippets)==null?void 0:u.includes("pm.*"),i=O.useMemoizedFn(l=>P(null,null,function*(){yield a.resource("roles").update({filterByTk:e.name,values:l.values}),r(T(T({},e),l.values)),f.message.success(n("Saved successfully"))})),o=v.useMemo(()=>w.createForm({values:e,effects(){w.onFormValuesChange(l=>P(null,null,function*(){yield i(l)}))}}),[e,i]);return c.jsx(d.SchemaComponent,{components:{SnippetCheckboxGroup:Wa,StrategyActions:Va,PluginPermissions:La},scope:{pm:s},schema:{type:"void",name:w.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}}"}}}}}})},Ze=v.createContext(null);Ze.displayName="MenuItemsContext";const Zt=(t={})=>{const e=[];for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)){const n=t[r],a={title:n.title,uid:n["x-uid"]};n.properties&&(a.children=Zt(n.properties)),e.push(a)}return e},Ja=()=>v.useContext(Ze),Qt=t=>{var s,i;const r={url:`uiSchemas:getProperties/${d.useAdminSchemaUid()}`},n=d.useRequest(r);if(n.loading)return c.jsx(f.Spin,{});const a=Zt((i=(s=n.data)==null?void 0:s.data)==null?void 0:i.properties);return c.jsx(Ze.Provider,{value:{service:n,items:a},children:t.children})},$t=t=>{if(!Array.isArray(t))return[];const e=[];for(const r of t)e.push(r.uid),e.push(...$t(r.children));return e},en=(t,e,r=[])=>{if(!t)return[];for(const n of t){if(r.push(n.uid),e(n))return r;if(n.children){const a=en(n.children,e,r);if(a.length)return a}r.pop()}return[]},rn=(t=[],e=[])=>{for(const r of t)e.push(r.uid),r.children&&r.children.length&&rn(r.children,e);return e},Xa=({active:t})=>{const{styles:e}=Jt(),{role:r,setRole:n}=v.useContext(E),a=d.useAPIClient(),{items:s}=Ja(),{t:i}=M.useTranslation(),o=$t(s),[u,l]=v.useState([]),{loading:p,refresh:b}=d.useRequest({resource:"roles.menuUiSchemas",resourceOf:r.name,action:"list",params:{paginate:!1}},{ready:!!r&&t,refreshDeps:[r==null?void 0:r.name],onSuccess(_){var h;l(((h=_==null?void 0:_.data)==null?void 0:h.map(C=>C["x-uid"]))||[])}}),m=a.resource("roles.menuUiSchemas",r.name),q=o.length===u.length,x=(_,h)=>P(null,null,function*(){const C=en(s,D=>D.uid===h.uid),F=rn(h==null?void 0:h.children,[]);if(_){const D=F.concat(h.uid),zr=u.filter(Ds=>!D.includes(Ds));l([...zr]),yield m.remove({values:D})}else{const D=F.concat(C);l(zr=>N.uniq([...zr,...D])),yield m.add({values:D})}f.message.success(i("Saved successfully"))}),S=_=>_.map(h=>{const C=i(h.title);return h.children?k(T({},h),{title:C,children:S(h.children)}):k(T({},h),{title:C})}),I=O.useMemoizedFn(_=>P(null,null,function*(){yield a.resource("roles").update({filterByTk:r.name,values:_.values}),n(T(T({},r),_.values)),f.message.success(i("Saved successfully"))})),g=v.useMemo(()=>w.createForm({values:r,effects(){w.onFormValuesChange(_=>P(null,null,function*(){yield I(_)}))}}),[r,I]);return c.jsxs(c.Fragment,{children:[c.jsx(d.SchemaComponent,{schema:{type:"void",name:w.uid(),"x-component":"FormV2","x-component-props":{form:g},properties:{allowNewMenu:{title:i("Menu permissions"),"x-decorator":"FormItem","x-component":"Checkbox","x-content":i("New menu items are allowed to be accessed by default.")}}}}),c.jsx(f.Table,{className:e,loading:p,rowKey:"uid",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:i("Menu item title")},{dataIndex:"accessible",title:c.jsxs(c.Fragment,{children:[c.jsx(f.Checkbox,{checked:q,onChange:_=>P(null,null,function*(){q?yield m.set({values:[]}):yield m.set({values:o}),b(),f.message.success(i("Saved successfully"))})})," ",i("Accessible")]}),render:(_,h)=>{const C=u.includes(h.uid);return c.jsx(f.Checkbox,{checked:C,onChange:()=>x(C,h)})}}],dataSource:S(s)})]})},Qe=t=>c.jsx("div",{style:{maxHeight:"60vh",overflowY:"auto"},children:t.children}),Ya=({active:t})=>{var m;const{t:e}=H(),[r,n]=v.useState("general"),{role:a,setRole:s}=v.useContext(E),i=(m=a==null?void 0:a.snippets)==null?void 0:m.includes("pm.*"),u=d.useApp().getComponent("DataSourcePermissionManager"),l=v.useMemo(()=>[{key:"general",label:e("System"),children:c.jsx(Qe,{children:c.jsx(Ba,{active:r==="general"&&t})})},{key:"menu",label:e("Menu"),children:c.jsx(Qe,{children:c.jsx(Qt,{children:c.jsx(Xa,{active:r==="menu"&&t})})})},...u?[{key:"dataSource",label:e("Data sources"),children:c.jsx(Qe,{children:c.jsx(Qt,{children:c.jsx(u,{role:a,active:r==="dataSource"&&t})})})}]:[]],[i,r,t,e]),p=d.useAPIClient(),{data:b}=d.useRequest(()=>p.resource("roles").get({filterByTk:a==null?void 0:a.name}).then(q=>{var S,I;const x=(S=q==null?void 0:q.data)==null?void 0:S.data;return(I=x.snippets)==null||I.forEach(g=>{x[g]=!0}),x}),{ready:t&&!!a,refreshDeps:[a==null?void 0:a.name]});return v.useEffect(()=>{n("general")},[a==null?void 0:a.name]),v.useEffect(()=>{s(b)},[b]),c.jsx(Yn,{children:c.jsx(f.Tabs,{type:"card",activeKey:r,onChange:q=>n(q),items:l})})},Za=({loadMore:t})=>{const[e,r]=v.useState(null),n=v.useRef(null),a=v.useCallback(s=>{s&&(n.current&&n.current.disconnect(),n.current=new IntersectionObserver(i=>{i.forEach(o=>{o.target===s.current&&o.isIntersecting&&(n.current&&n.current.unobserve(s.current),t())})}),s.current&&n.current&&n.current.observe(s.current))},[t]);return v.useEffect(()=>(a(e),()=>{n.current&&n.current.disconnect()}),[e,a]),{lastItem:e,setLastItem:r}};var $e,tn;function R(){if(tn)return $e;tn=1;var t=Array.isArray;return $e=t,$e}var er,nn;function rr(){if(nn)return er;nn=1;function t(e){return e!=null&&typeof e=="object"}return er=t,er}var tr,an;function nr(){if(an)return tr;an=1;var t=re(),e=rr(),r="[object Symbol]";function n(a){return typeof a=="symbol"||e(a)&&t(a)==r}return tr=n,tr}var ar,sn;function Qa(){if(sn)return ar;sn=1;var t=R(),e=nr(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;function a(s,i){if(t(s))return!1;var o=typeof s;return o=="number"||o=="symbol"||o=="boolean"||s==null||e(s)?!0:n.test(s)||!r.test(s)||i!=null&&s in Object(i)}return ar=a,ar}var sr,on;function $a(){if(on)return sr;on=1;var t=Ot(),e="Expected a function";function r(n,a){if(typeof n!="function"||a!=null&&typeof a!="function")throw new TypeError(e);var s=function(){var i=arguments,o=a?a.apply(this,i):i[0],u=s.cache;if(u.has(o))return u.get(o);var l=n.apply(this,i);return s.cache=u.set(o,l)||u,l};return s.cache=new(r.Cache||t),s}return r.Cache=t,sr=r,sr}var ir,un;function es(){if(un)return ir;un=1;var t=$a(),e=500;function r(n){var a=t(n,function(i){return s.size===e&&s.clear(),i}),s=a.cache;return a}return ir=r,ir}var or,cn;function rs(){if(cn)return or;cn=1;var t=es(),e=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,n=t(function(a){var s=[];return a.charCodeAt(0)===46&&s.push(""),a.replace(e,function(i,o,u,l){s.push(u?l.replace(r,"$1"):o||i)}),s});return or=n,or}var ur,ln;function ts(){if(ln)return ur;ln=1;function t(e,r){for(var n=-1,a=e==null?0:e.length,s=Array(a);++n<a;)s[n]=r(e[n],n,e);return s}return ur=t,ur}var cr,dn;function ns(){if(dn)return cr;dn=1;var t=K(),e=ts(),r=R(),n=nr(),a=t?t.prototype:void 0,s=a?a.toString:void 0;function i(o){if(typeof o=="string")return o;if(r(o))return e(o,i)+"";if(n(o))return s?s.call(o):"";var u=o+"";return u=="0"&&1/o==-1/0?"-0":u}return cr=i,cr}var lr,hn;function as(){if(hn)return lr;hn=1;var t=ns();function e(r){return r==null?"":t(r)}return lr=e,lr}var dr,fn;function W(){if(fn)return dr;fn=1;var t=R(),e=Qa(),r=rs(),n=as();function a(s,i){return t(s)?s:e(s,i)?[s]:r(n(s))}return dr=a,dr}var hr,pn;function fr(){if(pn)return hr;pn=1;var t=nr();function e(r){if(typeof r=="string"||t(r))return r;var n=r+"";return n=="0"&&1/r==-1/0?"-0":n}return hr=e,hr}var pr,vn;function ss(){if(vn)return pr;vn=1;var t=W(),e=fr();function r(n,a){a=t(a,n);for(var s=0,i=a.length;n!=null&&s<i;)n=n[e(a[s++])];return s&&s==i?n:void 0}return pr=r,pr}var vr,_n;function gn(){if(_n)return vr;_n=1;var t=z(),e=function(){try{var r=t(Object,"defineProperty");return r({},"",{}),r}catch(n){}}();return vr=e,vr}var _r,mn;function is(){if(mn)return _r;mn=1;var t=gn();function e(r,n,a){n=="__proto__"&&t?t(r,n,{configurable:!0,enumerable:!0,value:a,writable:!0}):r[n]=a}return _r=e,_r}var gr,yn;function os(){if(yn)return gr;yn=1;var t=is(),e=pt(),r=Object.prototype,n=r.hasOwnProperty;function a(s,i,o){var u=s[i];(!(n.call(s,i)&&e(u,o))||o===void 0&&!(i in s))&&t(s,i,o)}return gr=a,gr}var mr,bn;function qn(){if(bn)return mr;bn=1;var t=9007199254740991,e=/^(?:0|[1-9]\d*)$/;function r(n,a){var s=typeof n;return a=a==null?t:a,!!a&&(s=="number"||s!="symbol"&&e.test(n))&&n>-1&&n%1==0&&n<a}return mr=r,mr}var yr,Cn;function us(){if(Cn)return yr;Cn=1;var t=os(),e=W(),r=qn(),n=ne(),a=fr();function s(i,o,u,l){if(!n(i))return i;o=e(o,i);for(var p=-1,b=o.length,m=b-1,q=i;q!=null&&++p<b;){var x=a(o[p]),S=u;if(x==="__proto__"||x==="constructor"||x==="prototype")return i;if(p!=m){var I=q[x];S=l?l(I,x,q):void 0,S===void 0&&(S=n(I)?I:r(o[p+1])?[]:{})}t(q,x,S),q=q[x]}return i}return yr=s,yr}var br,Sn;function cs(){if(Sn)return br;Sn=1;var t=ss(),e=us(),r=W();function n(a,s,i){for(var o=-1,u=s.length,l={};++o<u;){var p=s[o],b=t(a,p);i(b,p)&&e(l,r(p,a),b)}return l}return br=n,br}var qr,xn;function ls(){if(xn)return qr;xn=1;function t(e,r){return e!=null&&r in Object(e)}return qr=t,qr}var Cr,In;function ds(){if(In)return Cr;In=1;var t=re(),e=rr(),r="[object Arguments]";function n(a){return e(a)&&t(a)==r}return Cr=n,Cr}var Sr,An;function wn(){if(An)return Sr;An=1;var t=ds(),e=rr(),r=Object.prototype,n=r.hasOwnProperty,a=r.propertyIsEnumerable,s=t(function(){return arguments}())?t:function(i){return e(i)&&n.call(i,"callee")&&!a.call(i,"callee")};return Sr=s,Sr}var xr,Pn;function hs(){if(Pn)return xr;Pn=1;var t=9007199254740991;function e(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=t}return xr=e,xr}var Ir,Tn;function fs(){if(Tn)return Ir;Tn=1;var t=W(),e=wn(),r=R(),n=qn(),a=hs(),s=fr();function i(o,u,l){u=t(u,o);for(var p=-1,b=u.length,m=!1;++p<b;){var q=s(u[p]);if(!(m=o!=null&&l(o,q)))break;o=o[q]}return m||++p!=b?m:(b=o==null?0:o.length,!!b&&a(b)&&n(q,b)&&(r(o)||e(o)))}return Ir=i,Ir}var Ar,On;function ps(){if(On)return Ar;On=1;var t=ls(),e=fs();function r(n,a){return n!=null&&e(n,a,t)}return Ar=r,Ar}var wr,Mn;function vs(){if(Mn)return wr;Mn=1;var t=cs(),e=ps();function r(n,a){return t(n,a,function(s,i){return e(n,i)})}return wr=r,wr}var Pr,Fn;function _s(){if(Fn)return Pr;Fn=1;function t(e,r){for(var n=-1,a=r.length,s=e.length;++n<a;)e[s+n]=r[n];return e}return Pr=t,Pr}var Tr,Dn;function gs(){if(Dn)return Tr;Dn=1;var t=K(),e=wn(),r=R(),n=t?t.isConcatSpreadable:void 0;function a(s){return r(s)||e(s)||!!(n&&s&&s[n])}return Tr=a,Tr}var Or,En;function ms(){if(En)return Or;En=1;var t=_s(),e=gs();function r(n,a,s,i,o){var u=-1,l=n.length;for(s||(s=e),o||(o=[]);++u<l;){var p=n[u];a>0&&s(p)?a>1?r(p,a-1,s,i,o):t(o,p):i||(o[o.length]=p)}return o}return Or=r,Or}var Mr,Nn;function ys(){if(Nn)return Mr;Nn=1;var t=ms();function e(r){var n=r==null?0:r.length;return n?t(r,1):[]}return Mr=e,Mr}var Fr,kn;function bs(){if(kn)return Fr;kn=1;function t(e,r,n){switch(n.length){case 0:return e.call(r);case 1:return e.call(r,n[0]);case 2:return e.call(r,n[0],n[1]);case 3:return e.call(r,n[0],n[1],n[2])}return e.apply(r,n)}return Fr=t,Fr}var Dr,Hn;function qs(){if(Hn)return Dr;Hn=1;var t=bs(),e=Math.max;function r(n,a,s){return a=e(a===void 0?n.length-1:a,0),function(){for(var i=arguments,o=-1,u=e(i.length-a,0),l=Array(u);++o<u;)l[o]=i[a+o];o=-1;for(var p=Array(a+1);++o<a;)p[o]=i[o];return p[a]=s(l),t(n,this,p)}}return Dr=r,Dr}var Er,Rn;function Cs(){if(Rn)return Er;Rn=1;function t(e){return function(){return e}}return Er=t,Er}var Nr,Gn;function Ss(){if(Gn)return Nr;Gn=1;function t(e){return e}return Nr=t,Nr}var kr,jn;function xs(){if(jn)return kr;jn=1;var t=Cs(),e=gn(),r=Ss(),n=e?function(a,s){return e(a,"toString",{configurable:!0,enumerable:!1,value:t(s),writable:!0})}:r;return kr=n,kr}var Hr,Kn;function Is(){if(Kn)return Hr;Kn=1;var t=800,e=16,r=Date.now;function n(a){var s=0,i=0;return function(){var o=r(),u=e-(o-i);if(i=o,u>0){if(++s>=t)return arguments[0]}else s=0;return a.apply(void 0,arguments)}}return Hr=n,Hr}var Rr,zn;function As(){if(zn)return Rr;zn=1;var t=xs(),e=Is(),r=e(t);return Rr=r,Rr}var Gr,Ln;function ws(){if(Ln)return Gr;Ln=1;var t=ys(),e=qs(),r=As();function n(a){return r(e(a,void 0,t),a+"")}return Gr=n,Gr}var jr,Un;function Ps(){if(Un)return jr;Un=1;var t=vs(),e=ws(),r=e(function(n,a){return n==null?{}:t(n,a)});return jr=r,jr}var Ts=Ps();const Os=Ur(Ts),Ms={type:"object",properties:{[w.uid()]:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:t=>{const e=d.useRecord(),r=d.useRequest(()=>Promise.resolve({data:Os(e,["title","name","default"])}),k(T({},t),{manual:!0})),n=d.useActionContext();return v.useEffect(()=>{n.visible&&r.run()},[n.visible]),r}},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":t=>{t.initialValue?t.disabled=!0:t.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 }}"}}}}}}}},B=()=>{const{t}=H(),{data:e,mutate:r}=d.useResourceActionContext(),[n,a]=v.useState(!1),[s,i]=v.useState(null),{role:o,setRole:u}=v.useContext(E),[l,p]=v.useState([]),[b,m]=v.useState(!1),q=d.useAPIClient(),x=v.useCallback(()=>P(null,null,function*(){const h=e==null?void 0:e.meta;if(!h||h.page>=h.totalPage)return;m(!0);const C=yield q.resource("roles").list({page:h.page+1,pageSize:h.pageSize,filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]});r((C==null?void 0:C.data)||{}),m(!1)}),[e]),{lastItem:S,setLastItem:I}=Za({loadMore:x}),g=({key:h})=>{u(l.find(C=>C.name===h))};v.useEffect(()=>{l[0]&&u(l[0])},[l,u]),v.useEffect(()=>{var C,F;if(!((C=e==null?void 0:e.data)!=null&&C.length))return;const h=v.createRef();I(h),((F=e.meta)==null?void 0:F.page)>1?p(D=>D.concat(e.data)):p(e.data)},[e,I]);const _=v.useMemo(()=>l.map((h,C)=>({key:h.name,label:C===l.length-1?c.jsx("div",{ref:S,children:c.jsx(B.Item,{item:h,onEdit:()=>{a(!0),i(h)}})}):c.jsx(B.Item,{item:h,onEdit:()=>{a(!0),i(h)}})})),[l,S]);return c.jsxs(c.Fragment,{children:[l.length?c.jsx(f.Menu,{style:{border:"none",maxHeight:"65vh",overflowY:"auto"},items:[..._,...b?[{key:"loading",label:c.jsx(f.Spin,{})}]:[]],selectedKeys:[o==null?void 0:o.name],onSelect:g}):c.jsx(f.Empty,{image:f.Empty.PRESENTED_IMAGE_SIMPLE}),c.jsx(d.ActionContextProvider,{value:{visible:n,setVisible:a},children:c.jsx(d.RecordProvider,{record:s,collectionName:"departments",children:c.jsx(d.SchemaComponent,{scope:{t},schema:Ms})})})]})};B.Item=function({item:e,onEdit:r}){const{t:n}=H(),{refreshAsync:a}=d.useResourceActionContext(),{modal:s,message:i}=f.App.useApp(),o=d.useAPIClient(),u=()=>{s.confirm({title:n("Delete"),content:n("Are you sure you want to delete it?"),onOk:()=>P(null,null,function*(){yield o.resource("roles").destroy({filterByTk:e.name}),i.success(n("Deleted successfully")),yield a()})})},l=({key:b,domEvent:m})=>{switch(m.stopPropagation(),b){case"edit":r();break;case"delete":u()}},p=w.Schema.compile(e.title,{t:n});return c.jsxs(f.Row,{children:[c.jsx(f.Col,{flex:3,style:{display:"inline-flex",alignItems:"center"},children:c.jsxs("span",{style:{whiteSpace:"nowrap",width:"120px",overflow:"hidden",textOverflow:"ellipsis"},children:[c.jsx(Lr.TagOutlined,{}),c.jsx("span",{style:{marginLeft:"10px"},title:p,children:p})]})}),c.jsxs(f.Col,{children:[e.default?c.jsx(f.Tag,{color:"success",bordered:!1,children:n("Default")}):null,c.jsx(f.Dropdown,{menu:{items:[{label:n("Edit"),key:"edit"},{label:n("Delete"),key:"delete"}],onClick:l},children:c.jsx(Lr.MoreOutlined,{})})]})]})};const Vn={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"}}]},Fs=()=>{const{t}=H(),e=d.usePlugin(Kr),[r,n]=v.useState("permissions"),a=Array.from(e.rolesManager.list()).map(([u,l])=>({key:u,label:w.Schema.compile(l.title,{t}),children:l.Component?v.createElement(l.Component,{active:r===u}):null})),[s,i]=v.useState(null),o=d.useSchemaComponentContext();return c.jsx(d.SchemaComponentContext.Provider,{value:k(T({},o),{designable:!1}),children:c.jsx(E.Provider,{value:{role:s,setRole:i},children:c.jsx(f.Card,{children:c.jsxs(f.Row,{gutter:24,style:{flexWrap:"nowrap"},children:[c.jsx(f.Col,{flex:"280px",style:{borderRight:"1px solid #eee",minWidth:"250px"},children:c.jsx(d.ResourceActionProvider,{collection:Vn,request:{resource:"roles",action:"list",params:{filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]}},children:c.jsxs(d.CollectionProvider_deprecated,{collection:Vn,children:[c.jsx(f.Row,{children:c.jsx(Xn,{})}),c.jsx(f.Divider,{style:{margin:"12px 0"}}),c.jsx(B,{})]})})}),c.jsx(f.Col,{flex:"auto",style:{overflow:"hidden"},children:c.jsx(f.Tabs,{activeKey:r,onChange:u=>n(u),items:[{key:"permissions",label:t("Permissions"),children:c.jsx(Ya,{active:r==="permissions"})},...a]})})]})})})})};class Kr extends d.Plugin{constructor(){super(...arguments),this.rolesManager=new Jn}load(){return P(this,null,function*(){this.systemSettingsManager.add("id-auth.roles",{title:this.t("Roles & Permissions"),icon:"LockOutlined",Component:Fs,aclSnippet:"pm.acl.roles",sort:3})})}}y.PluginACLClient=Kr,y.RolesManagerContext=E,y.default=Kr,Object.defineProperties(y,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
9
|
+
`),$t=(t=[],e=[])=>{for(const r of t)e.push(r.aclSnippet),r.children&&r.children.length&&$t(r.children,e);return e},es=({active:t})=>{const e=h.useApp(),{styles:r}=Qt(),{role:n}=p.useContext(N),a=h.useAPIClient(),s=h.useCompile(),i=e.systemSettingsManager.getList(!1),o=e.systemSettingsManager.getAclSnippets(),[u,l]=p.useState((n==null?void 0:n.snippets)||[]),f=p.useMemo(()=>H.flatMap(i,v=>v.children?[v,...v.children]:v),[i]),g=p.useMemo(()=>u.includes("pm.*")&&u.every(v=>!v.startsWith("!pm.")),[u]),{t:m}=k.useTranslation(),{loading:b,refresh:S}=h.useRequest({resource:"roles.snippets",resourceOf:n==null?void 0:n.name,action:"list",params:{paginate:!1}},{ready:!!n&&t,refreshDeps:[n==null?void 0:n.name],manual:!0,onSuccess(v){l((v==null?void 0:v.data.filter(C=>f.find(_=>C.includes(`!${_.aclSnippet}`)||!C.startsWith("!pm."))))||[])}});if(!n)return;const q=a.resource("roles.snippets",n==null?void 0:n.name),I=(v,C)=>M(null,null,function*(){const w=$t(C==null?void 0:C.children,[]).concat(C.aclSnippet);v?(yield q.add({values:w.map(E=>"!"+E)}),S()):(yield q.remove({values:w.map(E=>"!"+E)}),S()),d.message.success(m("Saved successfully"))});return c.jsx(d.Table,{className:r,loading:b,rowKey:"key",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:m("Plugin name"),render:v=>s(v)},{dataIndex:"accessible",title:c.jsxs(c.Fragment,{children:[c.jsx(d.Checkbox,{checked:g,onChange:()=>M(null,null,function*(){const v=o.map(C=>"!"+C);g?yield q.add({values:v}):yield q.remove({values:v}),S(),d.message.success(m("Saved successfully"))})}),m("Accessible")]}),render:(v,C)=>{const _=!u.includes("!"+C.aclSnippet);return c.jsx(d.Checkbox,{checked:_,onChange:()=>I(_,C)})}}],dataSource:i.filter(v=>v.isTopLevel!==!1).map(v=>v.showTabs!==!1?v:H.omit(v,"children"))})},rs=t=>{var r;if(!t)return{};const e={};return(r=t==null?void 0:t.forEach)==null||r.call(t,n=>{const[a,s]=n.split(":");e[a]=s||"all"}),e},en=t=>{const e=[];for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)){const n=t[r];n==="all"?e.push(r):e.push(`${r}:${n}`)}return e},ts=T.connect(t=>{const{onChange:e}=t,r=ua(),n=h.useCompile(),{t:a}=k.useTranslation(),s=T.useField(),i=rs(s.value);return c.jsx("div",{children:c.jsx(d.Table,{rowKey:"name",size:"small",pagination:!1,columns:[{dataIndex:"displayName",title:a("Action display name"),render:o=>n(o)},{dataIndex:"onNewRecord",title:a("Action type"),render:o=>o?c.jsx(d.Tag,{color:"green",children:a("Action on new records")}):c.jsx(d.Tag,{color:"geekblue",children:a("Action on existing records")})},{dataIndex:"enabled",title:a("Allow"),render:(o,u)=>c.jsx(d.Checkbox,{checked:o,"aria-label":`${u.name}_checkbox`,onChange:l=>{o?delete i[u.name]:i[u.name]="all",e(en(i))}})},{dataIndex:"scope",title:a("Data scope"),render:(o,u)=>!u.onNewRecord&&c.jsx(d.Select,{"data-testid":"select-data-scope",popupMatchSelectWidth:!1,size:"small",value:o,options:[{label:a("All records"),value:"all"},{label:a("Own records"),value:"own"}],onChange:l=>{i[u.name]=l,e(en(i))}})}],dataSource:r==null?void 0:r.map(o=>{let u="all",l=!1;return i[o.name]&&(l=!0,u=i[o.name]),G(F({},o),{enabled:l,scope:u})})})})}),ns=T.connect(t=>{const{t:e}=k.useTranslation();return c.jsxs(d.Checkbox.Group,{style:{width:"100%",display:"block"},value:t.value,onChange:r=>{const n=["ui.*","pm","pm.*","app"],a=n.map(i=>`!${i}`),s=$a([...t.value||[],...r]).filter(i=>i&&!a.includes(i)).map(i=>!n.includes(i)||r!=null&&r.includes(i)?i:`!${i}`);for(const i of n)!s.includes(i)&&!s.includes(`!${i}`)&&s.push(`!${i}`);t.onChange(s)},children:[c.jsx("div",{style:{marginTop:16},children:c.jsx(d.Checkbox,{value:"ui.*",children:e("Allows to configure interface")})}),c.jsx("div",{style:{marginTop:8},children:c.jsx(d.Checkbox,{value:"pm",children:e("Allows to install, activate, disable plugins")})}),c.jsx("div",{style:{marginTop:8},children:c.jsx(d.Checkbox,{value:"pm.*",children:e("Allows to configure plugins")})}),c.jsx("div",{style:{marginTop:8},children:c.jsx(d.Checkbox,{value:"app",children:e("Allows to clear cache, reboot application")})})]})}),as=({active:t})=>{var u;const{role:e,setRole:r}=p.useContext(N),{t:n}=j(),a=h.useAPIClient(),s=(u=e==null?void 0:e.snippets)==null?void 0:u.includes("pm.*"),i=D.useMemoizedFn(l=>M(null,null,function*(){yield a.resource("roles").update({filterByTk:e.name,values:l.values}),r(F(F({},e),l.values)),d.message.success(n("Saved successfully"))})),o=p.useMemo(()=>T.createForm({values:e,effects(){T.onFormValuesChange(l=>M(null,null,function*(){yield i(l)}))}}),[e,i]);return c.jsx(h.SchemaComponent,{components:{SnippetCheckboxGroup:ns,StrategyActions:ts,PluginPermissions:es},scope:{pm:s},schema:{type:"void",name:T.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}}"}}}}}})},rr=p.createContext(null);rr.displayName="MenuItemsContext";const rn=(t={})=>{const e=[];for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)){const n=t[r],a={title:n.title,uid:n["x-uid"]};n.properties&&(a.children=rn(n.properties)),e.push(a)}return e},ss=()=>p.useContext(rr),tn=t=>{var s,i;const r={url:`uiSchemas:getProperties/${h.useAdminSchemaUid()}`},n=h.useRequest(r);if(n.loading)return c.jsx(d.Spin,{});const a=rn((i=(s=n.data)==null?void 0:s.data)==null?void 0:i.properties);return c.jsx(rr.Provider,{value:{service:n,items:a},children:t.children})},nn=t=>{if(!Array.isArray(t))return[];const e=[];for(const r of t)e.push(r.uid),e.push(...nn(r.children));return e},an=(t,e,r=[])=>{if(!t)return[];for(const n of t){if(r.push(n.uid),e(n))return r;if(n.children){const a=an(n.children,e,r);if(a.length)return a}r.pop()}return[]},sn=(t=[],e=[])=>{for(const r of t)e.push(r.uid),r.children&&r.children.length&&sn(r.children,e);return e},is=({active:t})=>{var Qn,$n;const{styles:e}=Qt(),{role:r,setRole:n}=p.useContext(N),a=h.useAPIClient(),i=(($n=(Qn=h.useApp().pm.get("@tachybase/plugin-action-share"))==null?void 0:Qn.app.ws)==null?void 0:$n.enabled)||!1,{items:o}=ss(),{t:u}=k.useTranslation(),l=nn(o),[f,g]=p.useState([]),[m,b]=p.useState([]),{loading:S,refresh:q}=h.useRequest({resource:"roles.menuUiSchemas",resourceOf:r.name,action:"list",params:{paginate:!1}},{ready:!!r&&t,refreshDeps:[r==null?void 0:r.name],onSuccess(A){var x;g(((x=A==null?void 0:A.data)==null?void 0:x.map(O=>O["x-uid"]))||[])}}),{loading:I,refresh:v}=h.useRequest({resource:"roles.menuShareUiSchemas",action:"list",resourceOf:r.name,params:{paginate:!1}},{ready:!!r&&t&&i,refreshDeps:[r==null?void 0:r.name],onSuccess(A){var x;b(((x=A==null?void 0:A.data)==null?void 0:x.map(O=>O["x-uid"]))||[])}}),C=a.resource("roles.menuUiSchemas",r.name),_=a.resource("roles.menuShareUiSchemas",r.name),w=l.length===f.length,E=l.length===m.length,Z=(A,x,O,ea,ra)=>M(null,null,function*(){const Vs=an(o,R=>R.uid===x.uid),ta=sn(x==null?void 0:x.children,[]);if(A){const R=ta.concat(x.uid),Wr=O.filter(Ws=>!R.includes(Ws));ea([...Wr]),yield ra.remove({values:R})}else{const R=ta.concat(Vs);ea(Wr=>H.uniq([...Wr,...R])),yield ra.add({values:R})}d.message.success(u("Saved successfully"))}),Yn=A=>A.map(x=>{const O=u(x.title);return x.children?G(F({},x),{title:O,children:Yn(x.children)}):G(F({},x),{title:O})}),Zn=D.useMemoizedFn(A=>M(null,null,function*(){yield a.resource("roles").update({filterByTk:r.name,values:A.values}),n(F(F({},r),A.values)),d.message.success(u("Saved successfully"))})),zs=p.useMemo(()=>T.createForm({values:r,effects(){T.onFormValuesChange(A=>M(null,null,function*(){yield Zn(A)}))}}),[r,Zn]);return c.jsxs(c.Fragment,{children:[c.jsx(h.SchemaComponent,{schema:{type:"void",name:T.uid(),"x-component":"FormV2","x-component-props":{form:zs},properties:{allowNewMenu:{title:u("Menu permissions"),"x-decorator":"FormItem","x-component":"Checkbox","x-content":u("New menu items are allowed to be accessed by default.")}}}}),c.jsx(d.Table,{className:e,loading:S||I,rowKey:"uid",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:u("Menu item title")},{dataIndex:"accessible",title:c.jsxs(c.Fragment,{children:[c.jsx(d.Checkbox,{checked:w,onChange:A=>M(null,null,function*(){w?yield C.set({values:[]}):yield C.set({values:l}),q(),d.message.success(u("Saved successfully"))})})," ",u("Accessible")]}),render:(A,x)=>{const O=f.includes(x.uid);return c.jsx(d.Checkbox,{checked:O,onChange:()=>Z(O,x,f,g,C)})}},{dataIndex:"sharePage",hidden:!i,title:c.jsxs(c.Fragment,{children:[c.jsx(d.Checkbox,{checked:E,onChange:A=>M(null,null,function*(){E?yield _.set({values:[]}):yield _.set({values:l}),v(),d.message.success(u("Saved successfully"))})}),u("Share")]}),render:(A,x)=>{const O=m.includes(x.uid);return c.jsx(d.Checkbox,{checked:O,onChange:()=>Z(O,x,m,b,_)})}}],dataSource:Yn(o)})]})},tr=t=>c.jsx("div",{style:{maxHeight:"60vh",overflowY:"auto"},children:t.children}),os=({active:t})=>{var m;const{t:e}=j(),[r,n]=p.useState("general"),{role:a,setRole:s}=p.useContext(N),i=(m=a==null?void 0:a.snippets)==null?void 0:m.includes("pm.*"),u=h.useApp().getComponent("DataSourcePermissionManager"),l=p.useMemo(()=>[{key:"general",label:e("System"),children:c.jsx(tr,{children:c.jsx(as,{active:r==="general"&&t})})},{key:"menu",label:e("Menu"),children:c.jsx(tr,{children:c.jsx(tn,{children:c.jsx(is,{active:r==="menu"&&t})})})},...u?[{key:"dataSource",label:e("Data sources"),children:c.jsx(tr,{children:c.jsx(tn,{children:c.jsx(u,{role:a,active:r==="dataSource"&&t})})})}]:[]],[i,r,t,e]),f=h.useAPIClient(),{data:g}=h.useRequest(()=>f.resource("roles").get({filterByTk:a==null?void 0:a.name}).then(b=>{var q,I;const S=(q=b==null?void 0:b.data)==null?void 0:q.data;return(I=S.snippets)==null||I.forEach(v=>{S[v]=!0}),S}),{ready:t&&!!a,refreshDeps:[a==null?void 0:a.name]});return p.useEffect(()=>{n("general")},[a==null?void 0:a.name]),p.useEffect(()=>{s(g)},[g]),c.jsx(oa,{children:c.jsx(d.Tabs,{type:"card",activeKey:r,onChange:b=>n(b),items:l})})},us=({loadMore:t})=>{const[e,r]=p.useState(null),n=p.useRef(null),a=p.useCallback(s=>{s&&(n.current&&n.current.disconnect(),n.current=new IntersectionObserver(i=>{i.forEach(o=>{o.target===s.current&&o.isIntersecting&&(n.current&&n.current.unobserve(s.current),t())})}),s.current&&n.current&&n.current.observe(s.current))},[t]);return p.useEffect(()=>(a(e),()=>{n.current&&n.current.disconnect()}),[e,a]),{lastItem:e,setLastItem:r}};var nr,on;function U(){if(on)return nr;on=1;var t=Array.isArray;return nr=t,nr}var ar,un;function sr(){if(un)return ar;un=1;function t(e){return e!=null&&typeof e=="object"}return ar=t,ar}var ir,cn;function or(){if(cn)return ir;cn=1;var t=se(),e=sr(),r="[object Symbol]";function n(a){return typeof a=="symbol"||e(a)&&t(a)==r}return ir=n,ir}var ur,ln;function cs(){if(ln)return ur;ln=1;var t=U(),e=or(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;function a(s,i){if(t(s))return!1;var o=typeof s;return o=="number"||o=="symbol"||o=="boolean"||s==null||e(s)?!0:n.test(s)||!r.test(s)||i!=null&&s in Object(i)}return ur=a,ur}var cr,hn;function ls(){if(hn)return cr;hn=1;var t=kt(),e="Expected a function";function r(n,a){if(typeof n!="function"||a!=null&&typeof a!="function")throw new TypeError(e);var s=function(){var i=arguments,o=a?a.apply(this,i):i[0],u=s.cache;if(u.has(o))return u.get(o);var l=n.apply(this,i);return s.cache=u.set(o,l)||u,l};return s.cache=new(r.Cache||t),s}return r.Cache=t,cr=r,cr}var lr,dn;function hs(){if(dn)return lr;dn=1;var t=ls(),e=500;function r(n){var a=t(n,function(i){return s.size===e&&s.clear(),i}),s=a.cache;return a}return lr=r,lr}var hr,fn;function ds(){if(fn)return hr;fn=1;var t=hs(),e=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,n=t(function(a){var s=[];return a.charCodeAt(0)===46&&s.push(""),a.replace(e,function(i,o,u,l){s.push(u?l.replace(r,"$1"):o||i)}),s});return hr=n,hr}var dr,pn;function fs(){if(pn)return dr;pn=1;function t(e,r){for(var n=-1,a=e==null?0:e.length,s=Array(a);++n<a;)s[n]=r(e[n],n,e);return s}return dr=t,dr}var fr,vn;function ps(){if(vn)return fr;vn=1;var t=z(),e=fs(),r=U(),n=or(),a=t?t.prototype:void 0,s=a?a.toString:void 0;function i(o){if(typeof o=="string")return o;if(r(o))return e(o,i)+"";if(n(o))return s?s.call(o):"";var u=o+"";return u=="0"&&1/o==-1/0?"-0":u}return fr=i,fr}var pr,_n;function vs(){if(_n)return pr;_n=1;var t=ps();function e(r){return r==null?"":t(r)}return pr=e,pr}var vr,gn;function X(){if(gn)return vr;gn=1;var t=U(),e=cs(),r=ds(),n=vs();function a(s,i){return t(s)?s:e(s,i)?[s]:r(n(s))}return vr=a,vr}var _r,mn;function gr(){if(mn)return _r;mn=1;var t=or();function e(r){if(typeof r=="string"||t(r))return r;var n=r+"";return n=="0"&&1/r==-1/0?"-0":n}return _r=e,_r}var mr,yn;function _s(){if(yn)return mr;yn=1;var t=X(),e=gr();function r(n,a){a=t(a,n);for(var s=0,i=a.length;n!=null&&s<i;)n=n[e(a[s++])];return s&&s==i?n:void 0}return mr=r,mr}var yr,bn;function Cn(){if(bn)return yr;bn=1;var t=V(),e=function(){try{var r=t(Object,"defineProperty");return r({},"",{}),r}catch(n){}}();return yr=e,yr}var br,qn;function gs(){if(qn)return br;qn=1;var t=Cn();function e(r,n,a){n=="__proto__"&&t?t(r,n,{configurable:!0,enumerable:!0,value:a,writable:!0}):r[n]=a}return br=e,br}var Cr,Sn;function ms(){if(Sn)return Cr;Sn=1;var t=gs(),e=mt(),r=Object.prototype,n=r.hasOwnProperty;function a(s,i,o){var u=s[i];(!(n.call(s,i)&&e(u,o))||o===void 0&&!(i in s))&&t(s,i,o)}return Cr=a,Cr}var qr,xn;function In(){if(xn)return qr;xn=1;var t=9007199254740991,e=/^(?:0|[1-9]\d*)$/;function r(n,a){var s=typeof n;return a=a==null?t:a,!!a&&(s=="number"||s!="symbol"&&e.test(n))&&n>-1&&n%1==0&&n<a}return qr=r,qr}var Sr,An;function ys(){if(An)return Sr;An=1;var t=ms(),e=X(),r=In(),n=oe(),a=gr();function s(i,o,u,l){if(!n(i))return i;o=e(o,i);for(var f=-1,g=o.length,m=g-1,b=i;b!=null&&++f<g;){var S=a(o[f]),q=u;if(S==="__proto__"||S==="constructor"||S==="prototype")return i;if(f!=m){var I=b[S];q=l?l(I,S,b):void 0,q===void 0&&(q=n(I)?I:r(o[f+1])?[]:{})}t(b,S,q),b=b[S]}return i}return Sr=s,Sr}var xr,wn;function bs(){if(wn)return xr;wn=1;var t=_s(),e=ys(),r=X();function n(a,s,i){for(var o=-1,u=s.length,l={};++o<u;){var f=s[o],g=t(a,f);i(g,f)&&e(l,r(f,a),g)}return l}return xr=n,xr}var Ir,Pn;function Cs(){if(Pn)return Ir;Pn=1;function t(e,r){return e!=null&&r in Object(e)}return Ir=t,Ir}var Ar,Tn;function qs(){if(Tn)return Ar;Tn=1;var t=se(),e=sr(),r="[object Arguments]";function n(a){return e(a)&&t(a)==r}return Ar=n,Ar}var wr,On;function Mn(){if(On)return wr;On=1;var t=qs(),e=sr(),r=Object.prototype,n=r.hasOwnProperty,a=r.propertyIsEnumerable,s=t(function(){return arguments}())?t:function(i){return e(i)&&n.call(i,"callee")&&!a.call(i,"callee")};return wr=s,wr}var Pr,Fn;function Ss(){if(Fn)return Pr;Fn=1;var t=9007199254740991;function e(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=t}return Pr=e,Pr}var Tr,Dn;function xs(){if(Dn)return Tr;Dn=1;var t=X(),e=Mn(),r=U(),n=In(),a=Ss(),s=gr();function i(o,u,l){u=t(u,o);for(var f=-1,g=u.length,m=!1;++f<g;){var b=s(u[f]);if(!(m=o!=null&&l(o,b)))break;o=o[b]}return m||++f!=g?m:(g=o==null?0:o.length,!!g&&a(g)&&n(b,g)&&(r(o)||e(o)))}return Tr=i,Tr}var Or,kn;function Is(){if(kn)return Or;kn=1;var t=Cs(),e=xs();function r(n,a){return n!=null&&e(n,a,t)}return Or=r,Or}var Mr,En;function As(){if(En)return Mr;En=1;var t=bs(),e=Is();function r(n,a){return t(n,a,function(s,i){return e(n,i)})}return Mr=r,Mr}var Fr,Nn;function ws(){if(Nn)return Fr;Nn=1;function t(e,r){for(var n=-1,a=r.length,s=e.length;++n<a;)e[s+n]=r[n];return e}return Fr=t,Fr}var Dr,Hn;function Ps(){if(Hn)return Dr;Hn=1;var t=z(),e=Mn(),r=U(),n=t?t.isConcatSpreadable:void 0;function a(s){return r(s)||e(s)||!!(n&&s&&s[n])}return Dr=a,Dr}var kr,Rn;function Ts(){if(Rn)return kr;Rn=1;var t=ws(),e=Ps();function r(n,a,s,i,o){var u=-1,l=n.length;for(s||(s=e),o||(o=[]);++u<l;){var f=n[u];a>0&&s(f)?a>1?r(f,a-1,s,i,o):t(o,f):i||(o[o.length]=f)}return o}return kr=r,kr}var Er,Gn;function Os(){if(Gn)return Er;Gn=1;var t=Ts();function e(r){var n=r==null?0:r.length;return n?t(r,1):[]}return Er=e,Er}var Nr,jn;function Ms(){if(jn)return Nr;jn=1;function t(e,r,n){switch(n.length){case 0:return e.call(r);case 1:return e.call(r,n[0]);case 2:return e.call(r,n[0],n[1]);case 3:return e.call(r,n[0],n[1],n[2])}return e.apply(r,n)}return Nr=t,Nr}var Hr,Un;function Fs(){if(Un)return Hr;Un=1;var t=Ms(),e=Math.max;function r(n,a,s){return a=e(a===void 0?n.length-1:a,0),function(){for(var i=arguments,o=-1,u=e(i.length-a,0),l=Array(u);++o<u;)l[o]=i[a+o];o=-1;for(var f=Array(a+1);++o<a;)f[o]=i[o];return f[a]=s(l),t(n,this,f)}}return Hr=r,Hr}var Rr,Kn;function Ds(){if(Kn)return Rr;Kn=1;function t(e){return function(){return e}}return Rr=t,Rr}var Gr,Ln;function ks(){if(Ln)return Gr;Ln=1;function t(e){return e}return Gr=t,Gr}var jr,zn;function Es(){if(zn)return jr;zn=1;var t=Ds(),e=Cn(),r=ks(),n=e?function(a,s){return e(a,"toString",{configurable:!0,enumerable:!1,value:t(s),writable:!0})}:r;return jr=n,jr}var Ur,Vn;function Ns(){if(Vn)return Ur;Vn=1;var t=800,e=16,r=Date.now;function n(a){var s=0,i=0;return function(){var o=r(),u=e-(o-i);if(i=o,u>0){if(++s>=t)return arguments[0]}else s=0;return a.apply(void 0,arguments)}}return Ur=n,Ur}var Kr,Wn;function Hs(){if(Wn)return Kr;Wn=1;var t=Es(),e=Ns(),r=e(t);return Kr=r,Kr}var Lr,Bn;function Rs(){if(Bn)return Lr;Bn=1;var t=Os(),e=Fs(),r=Hs();function n(a){return r(e(a,void 0,t),a+"")}return Lr=n,Lr}var zr,Jn;function Gs(){if(Jn)return zr;Jn=1;var t=As(),e=Rs(),r=e(function(n,a){return n==null?{}:t(n,a)});return zr=r,zr}var js=Gs();const Us=Jr(js),Ks={type:"object",properties:{[T.uid()]:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:t=>{const e=h.useRecord(),r=h.useRequest(()=>Promise.resolve({data:Us(e,["title","name","default"])}),G(F({},t),{manual:!0})),n=h.useActionContext();return p.useEffect(()=>{n.visible&&r.run()},[n.visible]),r}},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":t=>{t.initialValue?t.disabled=!0:t.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 }}"}}}}}}}},Y=()=>{const{t}=j(),{data:e,mutate:r}=h.useResourceActionContext(),[n,a]=p.useState(!1),[s,i]=p.useState(null),{role:o,setRole:u}=p.useContext(N),[l,f]=p.useState([]),[g,m]=p.useState(!1),b=h.useAPIClient(),S=p.useCallback(()=>M(null,null,function*(){const _=e==null?void 0:e.meta;if(!_||_.page>=_.totalPage)return;m(!0);const w=yield b.resource("roles").list({page:_.page+1,pageSize:_.pageSize,filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]});r((w==null?void 0:w.data)||{}),m(!1)}),[e]),{lastItem:q,setLastItem:I}=us({loadMore:S}),v=({key:_})=>{u(l.find(w=>w.name===_))};p.useEffect(()=>{l[0]&&u(l[0])},[l,u]),p.useEffect(()=>{var w,E;if(!((w=e==null?void 0:e.data)!=null&&w.length))return;const _=p.createRef();I(_),((E=e.meta)==null?void 0:E.page)>1?f(Z=>Z.concat(e.data)):f(e.data)},[e,I]);const C=p.useMemo(()=>l.map((_,w)=>({key:_.name,label:w===l.length-1?c.jsx("div",{ref:q,children:c.jsx(Y.Item,{item:_,onEdit:()=>{a(!0),i(_)}})}):c.jsx(Y.Item,{item:_,onEdit:()=>{a(!0),i(_)}})})),[l,q]);return c.jsxs(c.Fragment,{children:[l.length?c.jsx(d.Menu,{style:{border:"none",maxHeight:"65vh",overflowY:"auto"},items:[...C,...g?[{key:"loading",label:c.jsx(d.Spin,{})}]:[]],selectedKeys:[o==null?void 0:o.name],onSelect:v}):c.jsx(d.Empty,{image:d.Empty.PRESENTED_IMAGE_SIMPLE}),c.jsx(h.ActionContextProvider,{value:{visible:n,setVisible:a},children:c.jsx(h.RecordProvider,{record:s,collectionName:"departments",children:c.jsx(h.SchemaComponent,{scope:{t},schema:Ks})})})]})};Y.Item=function({item:e,onEdit:r}){const{t:n}=j(),{refreshAsync:a}=h.useResourceActionContext(),{modal:s,message:i}=d.App.useApp(),o=h.useAPIClient(),u=()=>{s.confirm({title:n("Delete"),content:n("Are you sure you want to delete it?"),onOk:()=>M(null,null,function*(){yield o.resource("roles").destroy({filterByTk:e.name}),i.success(n("Deleted successfully")),yield a()})})},l=({key:g,domEvent:m})=>{switch(m.stopPropagation(),g){case"edit":r();break;case"delete":u()}},f=T.Schema.compile(e.title,{t:n});return c.jsxs(d.Row,{children:[c.jsx(d.Col,{flex:3,style:{display:"inline-flex",alignItems:"center"},children:c.jsxs("span",{style:{whiteSpace:"nowrap",width:"120px",overflow:"hidden",textOverflow:"ellipsis"},children:[c.jsx(Br.TagOutlined,{}),c.jsx("span",{style:{marginLeft:"10px"},title:f,children:f})]})}),c.jsxs(d.Col,{children:[e.default?c.jsx(d.Tag,{color:"success",bordered:!1,children:n("Default")}):null,c.jsx(d.Dropdown,{menu:{items:[{label:n("Edit"),key:"edit"},{label:n("Delete"),key:"delete"}],onClick:l},children:c.jsx(Br.MoreOutlined,{})})]})]})};const Xn={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"}}]},Ls=()=>{const{t}=j(),e=h.usePlugin(Vr),[r,n]=p.useState("permissions"),a=Array.from(e.rolesManager.list()).map(([u,l])=>({key:u,label:T.Schema.compile(l.title,{t}),children:l.Component?p.createElement(l.Component,{active:r===u}):null})),[s,i]=p.useState(null),o=h.useSchemaComponentContext();return c.jsx(h.SchemaComponentContext.Provider,{value:G(F({},o),{designable:!1}),children:c.jsx(N.Provider,{value:{role:s,setRole:i},children:c.jsx(d.Card,{children:c.jsxs(d.Row,{gutter:24,style:{flexWrap:"nowrap"},children:[c.jsx(d.Col,{flex:"280px",style:{borderRight:"1px solid #eee",minWidth:"250px"},children:c.jsx(h.ResourceActionProvider,{collection:Xn,request:{resource:"roles",action:"list",params:{filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]}},children:c.jsxs(h.CollectionProvider_deprecated,{collection:Xn,children:[c.jsx(d.Row,{children:c.jsx(ia,{})}),c.jsx(d.Divider,{style:{margin:"12px 0"}}),c.jsx(Y,{})]})})}),c.jsx(d.Col,{flex:"auto",style:{overflow:"hidden"},children:c.jsx(d.Tabs,{activeKey:r,onChange:u=>n(u),items:[{key:"permissions",label:t("Permissions"),children:c.jsx(os,{active:r==="permissions"})},...a]})})]})})})})};class Vr extends h.Plugin{constructor(){super(...arguments),this.rolesManager=new sa}load(){return M(this,null,function*(){this.systemSettingsManager.add("id-auth.roles",{title:this.t("Roles & Permissions"),icon:"LockOutlined",Component:Ls,aclSnippet:"pm.acl.roles",sort:3})})}}y.PluginACLClient=Vr,y.RolesManagerContext=N,y.default=Vr,Object.defineProperties(y,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/client/locale.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function useACLTranslation(): import("react-i18next").UseTranslationResponse<[
|
|
1
|
+
export declare function useACLTranslation(): import("react-i18next").UseTranslationResponse<readonly ["@tachybase/module-acl", "core"], undefined>;
|
package/dist/externalVersion.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
"react": "18.3.1",
|
|
3
|
-
"@tachybase/client": "1.
|
|
3
|
+
"@tachybase/client": "1.4.0",
|
|
4
4
|
"@tachybase/schema": "1.3.52",
|
|
5
5
|
"antd": "5.22.5",
|
|
6
6
|
"@ant-design/icons": "5.6.1",
|
|
7
|
-
"react-i18next": "
|
|
7
|
+
"react-i18next": "16.2.1",
|
|
8
8
|
"@tego/client": "1.3.52",
|
|
9
9
|
"@tego/server": "1.3.52",
|
|
10
10
|
"async-mutex": "0.5.0",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tachybase/module-acl",
|
|
3
3
|
"displayName": "Access control",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.4.0",
|
|
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
|
"keywords": [
|
|
7
7
|
"Users & permissions"
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"lodash": "4.17.21",
|
|
24
24
|
"react": "18.3.1",
|
|
25
25
|
"react-dom": "18.3.1",
|
|
26
|
-
"react-i18next": "
|
|
27
|
-
"@tachybase/client": "1.
|
|
26
|
+
"react-i18next": "16.2.1",
|
|
27
|
+
"@tachybase/client": "1.4.0"
|
|
28
28
|
},
|
|
29
29
|
"description.zh-CN": "基于角色、资源和操作的权限控制,可以精确控制界面配置权限、数据操作权限、菜单访问权限、插件权限。",
|
|
30
30
|
"displayName.zh-CN": "权限控制",
|