@strapi/admin 4.13.5 → 4.13.7
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/admin/src/components/RBACProvider/index.js +1 -1
- package/admin/src/content-manager/components/RelationInput/RelationInput.js +59 -43
- package/admin/src/content-manager/components/Wysiwyg/EditorLayout.js +2 -2
- package/admin/src/content-manager/pages/ListView/components/BulkActionButtons/ConfirmBulkActionDialog/index.js +3 -0
- package/admin/src/content-manager/pages/ListView/components/BulkActionButtons/SelectedEntriesModal/index.js +2 -1
- package/admin/src/content-manager/pages/ListView/index.js +1 -0
- package/admin/src/pages/MarketplacePage/components/EmptyNpmPackageSearch/index.js +1 -1
- package/admin/src/pages/MarketplacePage/components/NpmPackagesFilters/index.js +0 -1
- package/admin/src/pages/MarketplacePage/components/NpmPackagesGrid/index.js +1 -1
- package/build/1049.bf5230e6.chunk.js +1 -0
- package/build/1227.c72e74e9.chunk.js +1 -0
- package/build/{1386.ea73b677.chunk.js → 1386.8c070d59.chunk.js} +1 -1
- package/build/2225.73c9a224.chunk.js +79 -0
- package/build/2237.a7992513.chunk.js +114 -0
- package/build/2379.27c6ab54.chunk.js +1 -0
- package/build/{2395.0e5e8ded.chunk.js → 2395.120256d6.chunk.js} +2 -2
- package/build/{6691.4985ef22.chunk.js → 2659.cb94f1e7.chunk.js} +28 -28
- package/build/{2801.8e1aa82a.chunk.js → 2801.fdd4d8a2.chunk.js} +1 -1
- package/build/{1387.a86ac314.chunk.js → 2950.216f2e89.chunk.js} +1 -1
- package/build/3021.33ad47fb.chunk.js +103 -0
- package/build/3911.488fbde3.chunk.js +95 -0
- package/build/4174.6efb0dc6.chunk.js +1 -0
- package/build/{4546.6dbd695f.chunk.js → 4546.9710f321.chunk.js} +1 -1
- package/build/4724.a0ce68f3.chunk.js +6 -0
- package/build/{502.7bba43b1.chunk.js → 502.d26ea06b.chunk.js} +1 -1
- package/build/{4628.9cbb6df5.chunk.js → 5158.c85f841a.chunk.js} +1 -1
- package/build/6715.48e37308.chunk.js +1 -0
- package/build/6812.00ef5b0d.chunk.js +26 -0
- package/build/{7464.eb057bec.chunk.js → 7464.d3d1414f.chunk.js} +1 -1
- package/build/{8276.be3ed581.chunk.js → 8276.b55f4600.chunk.js} +2 -2
- package/build/{9806.5d5a0e8d.chunk.js → 9522.ec7df9ac.chunk.js} +25 -25
- package/build/{Admin-authenticatedApp.3c6f7f3c.chunk.js → Admin-authenticatedApp.4b762007.chunk.js} +7 -7
- package/build/Admin_InternalErrorPage.18ba7fd6.chunk.js +1 -0
- package/build/{Admin_homePage.6f128523.chunk.js → Admin_homePage.86c8d4c9.chunk.js} +10 -10
- package/build/Admin_marketplace.4cc913f3.chunk.js +55 -0
- package/build/Admin_pluginsPage.d1afbf28.chunk.js +6 -0
- package/build/{Admin_profilePage.678bce24.chunk.js → Admin_profilePage.079903a3.chunk.js} +2 -2
- package/build/Admin_settingsPage.60a3e46e.chunk.js +111 -0
- package/build/Upload_ConfigureTheView.949535b8.chunk.js +1 -0
- package/build/{admin-app.2a8615ab.chunk.js → admin-app.1fde8f7a.chunk.js} +8 -8
- package/build/{admin-edit-roles-page.38a6c863.chunk.js → admin-edit-roles-page.f76cb0aa.chunk.js} +37 -37
- package/build/admin-edit-users.186c9d90.chunk.js +10 -0
- package/build/admin-roles-list.3a4edfa2.chunk.js +22 -0
- package/build/admin-users.e276bd9a.chunk.js +11 -0
- package/build/{api-tokens-create-page.e0c15627.chunk.js → api-tokens-create-page.f5a85725.chunk.js} +1 -1
- package/build/{api-tokens-edit-page.9f2dce47.chunk.js → api-tokens-edit-page.06a32cef.chunk.js} +1 -1
- package/build/api-tokens-list-page.bb27d544.chunk.js +16 -0
- package/build/audit-logs-settings-page.a89141d5.chunk.js +1 -0
- package/build/content-manager.b2d9e88e.chunk.js +1099 -0
- package/build/{content-type-builder-list-view.b71cf240.chunk.js → content-type-builder-list-view.b75fb938.chunk.js} +14 -14
- package/build/{content-type-builder.e5669749.chunk.js → content-type-builder.aab7f58d.chunk.js} +17 -17
- package/build/email-settings-page.07d417d5.chunk.js +11 -0
- package/build/i18n-settings-page.7107e28a.chunk.js +9 -0
- package/build/i18n-translation-tr-json.3bfc812f.chunk.js +1 -0
- package/build/index.html +1 -1
- package/build/main.358b7ea5.js +2665 -0
- package/build/review-workflows-settings-create-view.b96b7be1.chunk.js +1 -0
- package/build/review-workflows-settings-edit-view.21a682a0.chunk.js +1 -0
- package/build/review-workflows-settings-list-view.14212324.chunk.js +56 -0
- package/build/{runtime~main.6304468f.js → runtime~main.0324fc31.js} +2 -2
- package/build/sso-settings-page.d93bd81f.chunk.js +1 -0
- package/build/{transfer-tokens-create-page.ebba16d8.chunk.js → transfer-tokens-create-page.6e7049ff.chunk.js} +1 -1
- package/build/{transfer-tokens-edit-page.d7bb2b3e.chunk.js → transfer-tokens-edit-page.449b4502.chunk.js} +1 -1
- package/build/transfer-tokens-list-page.34caf827.chunk.js +16 -0
- package/build/upload-settings.fede24b9.chunk.js +14 -0
- package/build/upload.a96e2452.chunk.js +58 -0
- package/build/users-advanced-settings-page.ac7968e7.chunk.js +9 -0
- package/build/users-email-settings-page.125a89e2.chunk.js +9 -0
- package/build/users-providers-settings-page.ce34951c.chunk.js +14 -0
- package/build/{users-roles-settings-page.2b051e6a.chunk.js → users-roles-settings-page.90bad063.chunk.js} +4 -4
- package/build/{webhook-edit-page.de45c635.chunk.js → webhook-edit-page.7498417e.chunk.js} +3 -3
- package/build/webhook-list-page.1b085c7f.chunk.js +63 -0
- package/ee/admin/content-manager/pages/EditView/InformationBox/components/AssigneeSelect/AssigneeSelect.js +5 -15
- package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/utils/getDisplayedFilters.js +1 -1
- package/ee/server/bootstrap.js +2 -2
- package/package.json +11 -11
- package/scripts/build.js +2 -3
- package/scripts/create-dev-plugins-file.js +2 -3
- package/server/bootstrap.js +3 -1
- package/server/services/metrics.js +17 -0
- package/utils/create-cache-dir.js +5 -102
- package/utils/plugins.js +217 -0
- package/webpack.config.js +2 -2
- package/build/1049.ec69f5e0.chunk.js +0 -1
- package/build/1227.9f37e1dc.chunk.js +0 -1
- package/build/1504.eff012f7.chunk.js +0 -95
- package/build/2225.649fb7bc.chunk.js +0 -79
- package/build/2237.b832ae6e.chunk.js +0 -114
- package/build/2379.1f98a31a.chunk.js +0 -1
- package/build/3739.63e352f1.chunk.js +0 -103
- package/build/4174.f1f39e40.chunk.js +0 -1
- package/build/448.829e1344.chunk.js +0 -1
- package/build/4724.aea5c8c1.chunk.js +0 -6
- package/build/9944.7af075a5.chunk.js +0 -26
- package/build/Admin_InternalErrorPage.38155af3.chunk.js +0 -1
- package/build/Admin_marketplace.061a6e5a.chunk.js +0 -55
- package/build/Admin_pluginsPage.16f837b8.chunk.js +0 -6
- package/build/Admin_settingsPage.af7309e4.chunk.js +0 -111
- package/build/Upload_ConfigureTheView.3fc1c100.chunk.js +0 -1
- package/build/admin-edit-users.545fc882.chunk.js +0 -10
- package/build/admin-roles-list.1e2e814d.chunk.js +0 -22
- package/build/admin-users.b8ea5677.chunk.js +0 -11
- package/build/api-tokens-list-page.d747051c.chunk.js +0 -16
- package/build/audit-logs-settings-page.96f9d608.chunk.js +0 -1
- package/build/content-manager.f448efdf.chunk.js +0 -1097
- package/build/email-settings-page.2809f0bf.chunk.js +0 -11
- package/build/i18n-settings-page.5f716172.chunk.js +0 -9
- package/build/i18n-translation-tr-json.10f0600d.chunk.js +0 -1
- package/build/main.50652367.js +0 -2863
- package/build/review-workflows-settings-create-view.4a156a19.chunk.js +0 -1
- package/build/review-workflows-settings-edit-view.ce984d1f.chunk.js +0 -1
- package/build/review-workflows-settings-list-view.419b8deb.chunk.js +0 -56
- package/build/sso-settings-page.45153df5.chunk.js +0 -1
- package/build/transfer-tokens-list-page.cfe1736c.chunk.js +0 -16
- package/build/upload-settings.5e55266d.chunk.js +0 -14
- package/build/upload.0660a088.chunk.js +0 -58
- package/build/users-advanced-settings-page.818d84eb.chunk.js +0 -9
- package/build/users-email-settings-page.c1967c09.chunk.js +0 -9
- package/build/users-providers-settings-page.11893e08.chunk.js +0 -14
- package/build/webhook-list-page.ca91df8b.chunk.js +0 -63
- package/utils/create-plugins-exclude-path.js +0 -20
- package/utils/get-plugins.js +0 -110
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[8853],{34254:function(ve,G,s){s.r(G),s.d(G,{default:function(){return Tt}});var e=s(32735),a=s(
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[8853],{34254:function(ve,G,s){s.r(G),s.d(G,{default:function(){return Tt}});var e=s(32735),a=s(30126),T=s(53038),P=s(19108),k=s(95162),x=s(64092),O=s(91779),B=s(56932),E=s(84642),p=s(8365),b=s(10710),S=s(97037),K=s(2846),J=s(15367),w=s(40501),q=s(92802),M=s(67879),I=s(20108),ye=s(60216),y=s.n(ye);const _=(0,e.createContext)({}),ee=({children:t,value:n})=>e.createElement(_.Provider,{value:n},t),Q=()=>(0,e.useContext)(_);ee.propTypes={children:y().node.isRequired,value:y().object.isRequired};var N=s(48395),Re=s(9435),Ce=s(9379),Pe=s(79624),Se=s(23940),Te=s.n(Se);function Me(t){switch(t){case"application":return"Application";case"plugin::content-manager":return"Content manager";case"plugin::content-type-builder":return"Content types builder";case"plugin::documentation":return"Documentation";case"plugin::email":return"Email";case"plugin::i18n":return"i18n";case"plugin::upload":return"Upload";case"plugin::users-permissions":return"Users-permissions";default:return Te()(t.replace("api::","").replace("plugin::",""))}}var be=Me,Ae=(t,n)=>{const r=Object.keys(n).sort().map(o=>({name:o,isOpen:!1}));return{...t,collapses:r}},L=s(77981),Le=s(98978),te=s.n(Le),se=s(31014),ne=s(99320),De=s(19594),Ze=s(33795),F=s.n(Ze),U=s(8471);const ae=(0,U.iv)`
|
|
2
2
|
background: ${t=>t.theme.colors.primary100};
|
|
3
3
|
svg {
|
|
4
4
|
opacity: 1;
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
flex: 1;
|
|
25
25
|
align-self: center;
|
|
26
26
|
border-top: 1px solid ${({theme:t})=>t.colors.neutral150};
|
|
27
|
-
`,
|
|
27
|
+
`,re=({subCategory:t})=>{const{formatMessage:n}=(0,M.Z)(),{onChange:r,onChangeSelectAll:o,onSelectedAction:c,selectedAction:l,modifiedData:d}=Q(),u=(0,e.useMemo)(()=>F()(d,t.name,{}),[d,t]),m=(0,e.useMemo)(()=>Object.values(u).every(i=>i.enabled===!0),[u]),g=(0,e.useMemo)(()=>Object.values(u).some(i=>i.enabled===!0)&&!m,[u,m]),h=(0,e.useCallback)(({target:{name:i}})=>{o({target:{name:i,value:!m}})},[m,o]),f=(0,e.useCallback)(i=>l===i,[l]);return e.createElement(L.x,null,e.createElement(E.k,{justifyContent:"space-between",alignItems:"center"},e.createElement(L.x,{paddingRight:4},e.createElement(p.Z,{variant:"sigma",textColor:"neutral600"},t.label)),e.createElement(Oe,null),e.createElement(L.x,{paddingLeft:4},e.createElement(se.X,{name:t.name,value:m,onValueChange:i=>h({target:{name:t.name,value:i}}),indeterminate:g},n({id:"app.utils.select-all",defaultMessage:"Select all"})))),e.createElement(E.k,{paddingTop:6,paddingBottom:6},e.createElement(b.r,{gap:2,style:{flex:1}},t.actions.map(i=>{const v=`${i.name}.enabled`;return e.createElement(S.P,{col:6,key:i.name},e.createElement(xe,{isActive:f(i.name),padding:2,hasRadius:!0},e.createElement(se.X,{value:F()(d,v,!1),name:v,onValueChange:C=>r({target:{name:v,value:C}})},i.label),e.createElement("button",{type:"button",onClick:()=>c(i.name),style:{display:"inline-flex",alignItems:"center"}},e.createElement(ne.T,{as:"span"},n({id:"app.utils.show-bound-route",defaultMessage:"Show bound route for {route}"},{route:i.name})),e.createElement(De.Z,null))))}))))};re.propTypes={subCategory:y().object.isRequired};var Be=re;const oe=({name:t,permissions:n})=>{const r=(0,e.useMemo)(()=>te()(Object.values(n.controllers).reduce((o,c,l)=>{const d=`${t}.controllers.${Object.keys(n.controllers)[l]}`,u=te()(Object.keys(c).reduce((m,g)=>[...m,{...c[g],label:g,name:`${d}.${g}`}],[]),"label");return[...o,{actions:u,label:Object.keys(n.controllers)[l],name:d}]},[]),"label"),[t,n]);return e.createElement(L.x,{padding:6},r.map(o=>e.createElement(Be,{key:o.name,subCategory:o})))};oe.propTypes={name:y().string.isRequired,permissions:y().object.isRequired};var Ie=oe,le=s(97889);const Ne={collapses:[]},$e=(t,n)=>(0,le.ZP)(t,r=>{switch(n.type){case"TOGGLE_COLLAPSE":{r.collapses=t.collapses.map((o,c)=>c===n.index?{...o,isOpen:!o.isOpen}:{...o,isOpen:!1});break}default:return r}});var je=()=>{const{modifiedData:t}=Q(),{formatMessage:n}=(0,M.Z)(),[{collapses:r},o]=(0,e.useReducer)($e,Ne,l=>Ae(l,t)),c=l=>o({type:"TOGGLE_COLLAPSE",index:l});return e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:1},r.map((l,d)=>e.createElement(Re.U,{expanded:l.isOpen,onToggle:()=>c(d),key:l.name,variant:d%2===0?"secondary":void 0},e.createElement(Ce.B,{title:be(l.name),description:n({id:"users-permissions.Plugin.permissions.plugins.description",defaultMessage:"Define all allowed actions for the {name} plugin."},{name:l.name}),variant:d%2?"primary":"secondary"}),e.createElement(Pe.v,null,e.createElement(Ie,{permissions:t[l.name],name:l.name})))))},ke=s(86834),Ue=s.n(ke),We=s(86205),Ge=s.n(We),Fe=s(37213),Ve=s.n(Fe),He=s(15738),Qe=s.n(He),Ye=t=>{switch(t){case"POST":return{text:"success600",border:"success200",background:"success100"};case"GET":return{text:"secondary600",border:"secondary200",background:"secondary100"};case"PUT":return{text:"warning600",border:"warning200",background:"warning100"};case"DELETE":return{text:"danger600",border:"danger200",background:"danger100"};default:return{text:"neutral600",border:"neutral200",background:"neutral100"}}};const Xe=(0,U.ZP)(L.x)`
|
|
28
28
|
margin: -1px;
|
|
29
29
|
border-radius: ${({theme:t})=>t.spaces[1]} 0 0 ${({theme:t})=>t.spaces[1]};
|
|
30
|
-
`;function Y({route:t}){const{formatMessage:n}=(0,b.Z)(),{method:o,handler:r,path:c}=t,l=c?Qe()(c.split("/")):[],[d="",u=""]=r?r.split("."):[],m=Ye(t.method);return e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:2},e.createElement(p.Z,{variant:"delta",as:"h3"},n({id:"users-permissions.BoundRoute.title",defaultMessage:"Bound route to"}),"\xA0",e.createElement("span",null,d),e.createElement(p.Z,{variant:"delta",textColor:"primary600"},".",u)),e.createElement(E.k,{hasRadius:!0,background:"neutral0",borderColor:"neutral200",gap:0},e.createElement(Xe,{background:m.background,borderColor:m.border,padding:2},e.createElement(p.Z,{fontWeight:"bold",textColor:m.text},o)),e.createElement(L.x,{paddingLeft:2,paddingRight:2},Ve()(l,g=>e.createElement(p.Z,{key:g,textColor:g.includes(":")?"neutral600":"neutral900"},"/",g)))))}Y.defaultProps={route:{handler:"Nocontroller.error",method:"GET",path:"/there-is-no-path"}},Y.propTypes={route:y().shape({handler:y().string,method:y().string,path:y().string})};var ze=Y,Ke=()=>{const{formatMessage:t}=(0,b.Z)(),{selectedAction:n,routes:o}=Q(),r=Ge()(n.split("."),"controllers"),c=F()(o,r[0]),l=r.slice(1).join("."),d=Ue()(c)?[]:c.filter(u=>u.handler.endsWith(l));return e.createElement(S.P,{col:5,background:"neutral150",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,style:{minHeight:"100%"}},n?e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:2},d.map((u,m)=>e.createElement(ze,{key:m,route:u}))):e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:2},e.createElement(p.Z,{variant:"delta",as:"h3"},t({id:"users-permissions.Policies.header.title",defaultMessage:"Advanced settings"})),e.createElement(p.Z,{as:"p",textColor:"neutral600"},t({id:"users-permissions.Policies.header.hint",defaultMessage:"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route"}))))},Je=(t,n,o)=>({...t,initialData:n,modifiedData:n,routes:o}),we=s(3040),ie=s.n(we),qe=s(88708),_e=s.n(qe);const et={initialData:{},modifiedData:{},routes:{},selectedAction:"",policies:[]};var tt=(t,n)=>(0,le.ZP)(t,o=>{switch(n.type){case"ON_CHANGE":{const r=n.keys.length,c=n.keys[r-1]==="enabled";if(n.value&&c){const l=_e()(n.keys,r-1).join(".");o.selectedAction=l}ie()(o,["modifiedData",...n.keys],n.value);break}case"ON_CHANGE_SELECT_ALL":{const r=["modifiedData",...n.keys],c=F()(t,r,{}),l=Object.keys(c).reduce((d,u)=>(d[u]={...c[u],enabled:n.value},d),{});ie()(o,r,l);break}case"ON_RESET":{o.modifiedData=t.initialData;break}case"ON_SUBMIT_SUCCEEDED":{o.initialData=t.modifiedData;break}case"SELECT_ACTION":{const{actionToSelect:r}=n;o.selectedAction=r===t.selectedAction?"":r;break}default:return o}});const ce=(0,e.forwardRef)(({permissions:t,routes:n},o)=>{const{formatMessage:r}=(0,b.Z)(),[c,l]=(0,e.useReducer)(tt,et,h=>Je(h,t,n));(0,e.useImperativeHandle)(o,()=>({getPermissions(){return{permissions:c.modifiedData}},resetForm(){l({type:"ON_RESET"})},setFormAfterSubmit(){l({type:"ON_SUBMIT_SUCCEEDED"})}}));const g={...c,onChange:({target:{name:h,value:f}})=>l({type:"ON_CHANGE",keys:h.split("."),value:f==="empty__string_value"?"":f}),onChangeSelectAll:({target:{name:h,value:f}})=>l({type:"ON_CHANGE_SELECT_ALL",keys:h.split("."),value:f}),onSelectedAction:h=>l({type:"SELECT_ACTION",actionToSelect:h})};return e.createElement(ee,{value:g},e.createElement(A.r,{gap:0,shadow:"filterShadow",hasRadius:!0,background:"neutral0"},e.createElement(S.P,{col:7,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:6},e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:2},e.createElement(p.Z,{variant:"delta",as:"h2"},r({id:(0,$.Z)("Plugins.header.title"),defaultMessage:"Permissions"})),e.createElement(p.Z,{as:"p",textColor:"neutral600"},r({id:(0,$.Z)("Plugins.header.description"),defaultMessage:"Only actions bound by a route are listed below."}))),e.createElement(je,null))),e.createElement(Ke,null)))});ce.propTypes={permissions:y().object.isRequired,routes:y().object.isRequired};var de=(0,e.memo)(ce),X=s(24346);const me=X.Ry().shape({name:X.Z_().required(a.I0.required),description:X.Z_().required(a.I0.required)});var W=s(55733);const ue=()=>{const t=(0,a.lm)(),{get:n}=(0,a.kY)(),{formatAPIError:o}=(0,a.So)(W.OB),[{data:r,isLoading:c,error:l,refetch:d},{data:u,isLoading:m,error:g,refetch:h}]=(0,I.useQueries)([{queryKey:["users-permissions","permissions"],async queryFn(){const{data:{permissions:v}}=await n("/users-permissions/permissions");return v}},{queryKey:["users-permissions","routes"],async queryFn(){const{data:{routes:v}}=await n("/users-permissions/routes");return v}}]),f=async()=>{await Promise.all([d(),h()])};(0,e.useEffect)(()=>{l&&t({type:"warning",message:o(l)})},[t,l,o]),(0,e.useEffect)(()=>{g&&t({type:"warning",message:o(g)})},[t,g,o]);const i=c||m;return{permissions:r?(0,W.YX)(r):{},routes:u??{},getData:f,isLoading:i}},st=()=>{const{formatMessage:t}=(0,b.Z)(),n=(0,a.lm)(),{goBack:o}=(0,T.k6)(),{lockApp:r,unlockApp:c}=(0,a.o1)(),{isLoading:l,permissions:d,routes:u}=ue(),{trackUsage:m}=(0,a.rS)(),g=e.useRef(),{post:h}=(0,a.kY)(),f=(0,I.useMutation)(v=>h("/users-permissions/roles",v),{onError(){n({type:"warning",message:{id:"notification.error",defaultMessage:"An error occurred"}})},onSuccess(){m("didCreateRole"),n({type:"success",message:{id:(0,$.Z)("Settings.roles.created"),defaultMessage:"Role created"}}),o()}}),i=async v=>{r();const C=g.current.getPermissions();await f.mutate({...v,...C,users:[]}),c()};return e.createElement(k.o,null,e.createElement(a.SL,{name:"Roles"}),e.createElement(q.J9,{enableReinitialize:!0,initialValues:{name:"",description:""},onSubmit:i,validationSchema:me},({handleSubmit:v,values:C,handleChange:N,errors:R})=>e.createElement(a.l0,{noValidate:!0,onSubmit:v},e.createElement(x.T,{primaryAction:!l&&e.createElement(O.z,{type:"submit",loading:f.isLoading,startIcon:e.createElement(w.Z,null)},t({id:"global.save",defaultMessage:"Save"})),title:t({id:"Settings.roles.create.title",defaultMessage:"Create a role"}),subtitle:t({id:"Settings.roles.create.description",defaultMessage:"Define the rights given to the role"})}),e.createElement(B.D,null,e.createElement(E.k,{background:"neutral0",direction:"column",alignItems:"stretch",gap:7,hasRadius:!0,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,shadow:"filterShadow"},e.createElement(E.k,{direction:"column",alignItems:"stretch"},e.createElement(p.Z,{variant:"delta",as:"h2"},t({id:(0,$.Z)("EditPage.form.roles"),defaultMessage:"Role details"})),e.createElement(A.r,{gap:4},e.createElement(S.P,{col:6},e.createElement(K.o,{name:"name",value:C.name||"",onChange:N,label:t({id:"global.name",defaultMessage:"Name"}),error:R?.name?t({id:R.name}):!1,required:!0})),e.createElement(S.P,{col:6},e.createElement(J.g,{id:"description",value:C.description||"",onChange:N,label:t({id:"global.description",defaultMessage:"Description"}),error:R?.description?t({id:R.description}):!1,required:!0})))),!l&&e.createElement(de,{ref:g,permissions:d,routes:u}))))))},nt=()=>e.createElement(a.O4,{permissions:P._.createRole},e.createElement(st,null));var at=s(29439);const ot=()=>{const{formatMessage:t}=(0,b.Z)(),n=(0,a.lm)(),{lockApp:o,unlockApp:r}=(0,a.o1)(),{params:{id:c}}=(0,T.$B)("/settings/users-permissions/roles/:id"),{get:l}=(0,a.kY)(),{isLoading:d,routes:u}=ue(),{data:m,isLoading:g,refetch:h}=(0,I.useQuery)(["users-permissions","role",c],async()=>{const{data:{role:R}}=await l(`/users-permissions/roles/${c}`);return R}),f=e.useRef(),{put:i}=(0,a.kY)(),{formatAPIError:v}=(0,a.So)(),C=(0,I.useMutation)(R=>i(`/users-permissions/roles/${c}`,R),{onError(R){n({type:"warning",message:v(R)})},async onSuccess(){n({type:"success",message:{id:(0,$.Z)("Settings.roles.created"),defaultMessage:"Role edited"}}),await h()}}),N=async R=>{o();const D=f.current.getPermissions();await C.mutate({...R,...D,users:[]}),r()};return g?e.createElement(a.dO,null):e.createElement(k.o,null,e.createElement(a.SL,{name:"Roles"}),e.createElement(q.J9,{enableReinitialize:!0,initialValues:{name:m.name,description:m.description},onSubmit:N,validationSchema:me},({handleSubmit:R,values:D,handleChange:V,errors:j})=>e.createElement(a.l0,{noValidate:!0,onSubmit:R},e.createElement(x.T,{primaryAction:!d&&e.createElement(O.z,{disabled:m.code==="strapi-super-admin",type:"submit",loading:C.isLoading,startIcon:e.createElement(w.Z,null)},t({id:"global.save",defaultMessage:"Save"})),title:m.name,subtitle:m.description,navigationAction:e.createElement(a.rU,{startIcon:e.createElement(at.Z,null),to:"/settings/users-permissions/roles"},t({id:"global.back",defaultMessage:"Back"}))}),e.createElement(B.D,null,e.createElement(E.k,{background:"neutral0",direction:"column",alignItems:"stretch",gap:7,hasRadius:!0,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,shadow:"filterShadow"},e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:4},e.createElement(p.Z,{variant:"delta",as:"h2"},t({id:(0,$.Z)("EditPage.form.roles"),defaultMessage:"Role details"})),e.createElement(A.r,{gap:4},e.createElement(S.P,{col:6},e.createElement(K.o,{name:"name",value:D.name||"",onChange:V,label:t({id:"global.name",defaultMessage:"Name"}),error:j?.name?t({id:j.name}):!1,required:!0})),e.createElement(S.P,{col:6},e.createElement(J.g,{id:"description",value:D.description||"",onChange:V,label:t({id:"global.description",defaultMessage:"Description"}),error:j?.description?t({id:j.description}):!1,required:!0})))),!d&&e.createElement(de,{ref:f,permissions:m.permissions,routes:u}))))))},rt=()=>e.createElement(a.O4,{permissions:P._.updateRole},e.createElement(ot,null));var lt=s(94638),it=s(96709),ct=s(99223),dt=s(56755),mt=s(33827),ge=s(94547),M=s(19786),ut=s(19406),gt=s(50428),pt=s(35658),ht=s(50563),Et=s(68625),ft=s(4038);const vt=(0,U.ZP)(gt.r)`
|
|
30
|
+
`;function Y({route:t}){const{formatMessage:n}=(0,M.Z)(),{method:r,handler:o,path:c}=t,l=c?Qe()(c.split("/")):[],[d="",u=""]=o?o.split("."):[],m=Ye(t.method);return e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:2},e.createElement(p.Z,{variant:"delta",as:"h3"},n({id:"users-permissions.BoundRoute.title",defaultMessage:"Bound route to"}),"\xA0",e.createElement("span",null,d),e.createElement(p.Z,{variant:"delta",textColor:"primary600"},".",u)),e.createElement(E.k,{hasRadius:!0,background:"neutral0",borderColor:"neutral200",gap:0},e.createElement(Xe,{background:m.background,borderColor:m.border,padding:2},e.createElement(p.Z,{fontWeight:"bold",textColor:m.text},r)),e.createElement(L.x,{paddingLeft:2,paddingRight:2},Ve()(l,g=>e.createElement(p.Z,{key:g,textColor:g.includes(":")?"neutral600":"neutral900"},"/",g)))))}Y.defaultProps={route:{handler:"Nocontroller.error",method:"GET",path:"/there-is-no-path"}},Y.propTypes={route:y().shape({handler:y().string,method:y().string,path:y().string})};var ze=Y,Ke=()=>{const{formatMessage:t}=(0,M.Z)(),{selectedAction:n,routes:r}=Q(),o=Ge()(n.split("."),"controllers"),c=F()(r,o[0]),l=o.slice(1).join("."),d=Ue()(c)?[]:c.filter(u=>u.handler.endsWith(l));return e.createElement(S.P,{col:5,background:"neutral150",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,style:{minHeight:"100%"}},n?e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:2},d.map((u,m)=>e.createElement(ze,{key:m,route:u}))):e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:2},e.createElement(p.Z,{variant:"delta",as:"h3"},t({id:"users-permissions.Policies.header.title",defaultMessage:"Advanced settings"})),e.createElement(p.Z,{as:"p",textColor:"neutral600"},t({id:"users-permissions.Policies.header.hint",defaultMessage:"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route"}))))},Je=(t,n,r)=>({...t,initialData:n,modifiedData:n,routes:r}),we=s(3040),ie=s.n(we),qe=s(88708),_e=s.n(qe);const et={initialData:{},modifiedData:{},routes:{},selectedAction:"",policies:[]};var tt=(t,n)=>(0,le.ZP)(t,r=>{switch(n.type){case"ON_CHANGE":{const o=n.keys.length,c=n.keys[o-1]==="enabled";if(n.value&&c){const l=_e()(n.keys,o-1).join(".");r.selectedAction=l}ie()(r,["modifiedData",...n.keys],n.value);break}case"ON_CHANGE_SELECT_ALL":{const o=["modifiedData",...n.keys],c=F()(t,o,{}),l=Object.keys(c).reduce((d,u)=>(d[u]={...c[u],enabled:n.value},d),{});ie()(r,o,l);break}case"ON_RESET":{r.modifiedData=t.initialData;break}case"ON_SUBMIT_SUCCEEDED":{r.initialData=t.modifiedData;break}case"SELECT_ACTION":{const{actionToSelect:o}=n;r.selectedAction=o===t.selectedAction?"":o;break}default:return r}});const ce=(0,e.forwardRef)(({permissions:t,routes:n},r)=>{const{formatMessage:o}=(0,M.Z)(),[c,l]=(0,e.useReducer)(tt,et,h=>Je(h,t,n));(0,e.useImperativeHandle)(r,()=>({getPermissions(){return{permissions:c.modifiedData}},resetForm(){l({type:"ON_RESET"})},setFormAfterSubmit(){l({type:"ON_SUBMIT_SUCCEEDED"})}}));const g={...c,onChange:({target:{name:h,value:f}})=>l({type:"ON_CHANGE",keys:h.split("."),value:f==="empty__string_value"?"":f}),onChangeSelectAll:({target:{name:h,value:f}})=>l({type:"ON_CHANGE_SELECT_ALL",keys:h.split("."),value:f}),onSelectedAction:h=>l({type:"SELECT_ACTION",actionToSelect:h})};return e.createElement(ee,{value:g},e.createElement(b.r,{gap:0,shadow:"filterShadow",hasRadius:!0,background:"neutral0"},e.createElement(S.P,{col:7,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:6},e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:2},e.createElement(p.Z,{variant:"delta",as:"h2"},o({id:(0,N.Z)("Plugins.header.title"),defaultMessage:"Permissions"})),e.createElement(p.Z,{as:"p",textColor:"neutral600"},o({id:(0,N.Z)("Plugins.header.description"),defaultMessage:"Only actions bound by a route are listed below."}))),e.createElement(je,null))),e.createElement(Ke,null)))});ce.propTypes={permissions:y().object.isRequired,routes:y().object.isRequired};var de=(0,e.memo)(ce),X=s(24346);const me=X.Ry().shape({name:X.Z_().required(a.I0.required),description:X.Z_().required(a.I0.required)});var W=s(55733);const ue=()=>{const t=(0,a.lm)(),{get:n}=(0,a.kY)(),{formatAPIError:r}=(0,a.So)(W.OB),[{data:o,isLoading:c,error:l,refetch:d},{data:u,isLoading:m,error:g,refetch:h}]=(0,I.useQueries)([{queryKey:["users-permissions","permissions"],async queryFn(){const{data:{permissions:v}}=await n("/users-permissions/permissions");return v}},{queryKey:["users-permissions","routes"],async queryFn(){const{data:{routes:v}}=await n("/users-permissions/routes");return v}}]),f=async()=>{await Promise.all([d(),h()])};(0,e.useEffect)(()=>{l&&t({type:"warning",message:r(l)})},[t,l,r]),(0,e.useEffect)(()=>{g&&t({type:"warning",message:r(g)})},[t,g,r]);const i=c||m;return{permissions:o?(0,W.YX)(o):{},routes:u??{},getData:f,isLoading:i}},st=()=>{const{formatMessage:t}=(0,M.Z)(),n=(0,a.lm)(),{goBack:r}=(0,T.k6)(),{lockApp:o,unlockApp:c}=(0,a.o1)(),{isLoading:l,permissions:d,routes:u}=ue(),{trackUsage:m}=(0,a.rS)(),g=e.useRef(),{post:h}=(0,a.kY)(),f=(0,I.useMutation)(v=>h("/users-permissions/roles",v),{onError(){n({type:"warning",message:{id:"notification.error",defaultMessage:"An error occurred"}})},onSuccess(){m("didCreateRole"),n({type:"success",message:{id:(0,N.Z)("Settings.roles.created"),defaultMessage:"Role created"}}),r()}}),i=async v=>{o();const C=g.current.getPermissions();await f.mutate({...v,...C,users:[]}),c()};return e.createElement(k.o,null,e.createElement(a.SL,{name:"Roles"}),e.createElement(q.J9,{enableReinitialize:!0,initialValues:{name:"",description:""},onSubmit:i,validationSchema:me},({handleSubmit:v,values:C,handleChange:$,errors:R})=>e.createElement(a.l0,{noValidate:!0,onSubmit:v},e.createElement(x.T,{primaryAction:!l&&e.createElement(O.z,{type:"submit",loading:f.isLoading,startIcon:e.createElement(w.Z,null)},t({id:"global.save",defaultMessage:"Save"})),title:t({id:"Settings.roles.create.title",defaultMessage:"Create a role"}),subtitle:t({id:"Settings.roles.create.description",defaultMessage:"Define the rights given to the role"})}),e.createElement(B.D,null,e.createElement(E.k,{background:"neutral0",direction:"column",alignItems:"stretch",gap:7,hasRadius:!0,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,shadow:"filterShadow"},e.createElement(E.k,{direction:"column",alignItems:"stretch"},e.createElement(p.Z,{variant:"delta",as:"h2"},t({id:(0,N.Z)("EditPage.form.roles"),defaultMessage:"Role details"})),e.createElement(b.r,{gap:4},e.createElement(S.P,{col:6},e.createElement(K.o,{name:"name",value:C.name||"",onChange:$,label:t({id:"global.name",defaultMessage:"Name"}),error:R?.name?t({id:R.name,defaultMessage:"Name is required"}):!1,required:!0})),e.createElement(S.P,{col:6},e.createElement(J.g,{id:"description",value:C.description||"",onChange:$,label:t({id:"global.description",defaultMessage:"Description"}),error:R?.description?t({id:R.description,defaultMessage:"Description is required"}):!1,required:!0})))),!l&&e.createElement(de,{ref:g,permissions:d,routes:u}))))))},nt=()=>e.createElement(a.O4,{permissions:P._.createRole},e.createElement(st,null));var at=s(70788);const rt=()=>{const{formatMessage:t}=(0,M.Z)(),n=(0,a.lm)(),{lockApp:r,unlockApp:o}=(0,a.o1)(),{params:{id:c}}=(0,T.$B)("/settings/users-permissions/roles/:id"),{get:l}=(0,a.kY)(),{isLoading:d,routes:u}=ue(),{data:m,isLoading:g,refetch:h}=(0,I.useQuery)(["users-permissions","role",c],async()=>{const{data:{role:R}}=await l(`/users-permissions/roles/${c}`);return R}),f=e.useRef(),{put:i}=(0,a.kY)(),{formatAPIError:v}=(0,a.So)(),C=(0,I.useMutation)(R=>i(`/users-permissions/roles/${c}`,R),{onError(R){n({type:"warning",message:v(R)})},async onSuccess(){n({type:"success",message:{id:(0,N.Z)("Settings.roles.created"),defaultMessage:"Role edited"}}),await h()}}),$=async R=>{r();const D=f.current.getPermissions();await C.mutate({...R,...D,users:[]}),o()};return g?e.createElement(a.dO,null):e.createElement(k.o,null,e.createElement(a.SL,{name:"Roles"}),e.createElement(q.J9,{enableReinitialize:!0,initialValues:{name:m.name,description:m.description},onSubmit:$,validationSchema:me},({handleSubmit:R,values:D,handleChange:V,errors:j})=>e.createElement(a.l0,{noValidate:!0,onSubmit:R},e.createElement(x.T,{primaryAction:!d&&e.createElement(O.z,{disabled:m.code==="strapi-super-admin",type:"submit",loading:C.isLoading,startIcon:e.createElement(w.Z,null)},t({id:"global.save",defaultMessage:"Save"})),title:m.name,subtitle:m.description,navigationAction:e.createElement(a.rU,{startIcon:e.createElement(at.Z,null),to:"/settings/users-permissions/roles"},t({id:"global.back",defaultMessage:"Back"}))}),e.createElement(B.D,null,e.createElement(E.k,{background:"neutral0",direction:"column",alignItems:"stretch",gap:7,hasRadius:!0,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,shadow:"filterShadow"},e.createElement(E.k,{direction:"column",alignItems:"stretch",gap:4},e.createElement(p.Z,{variant:"delta",as:"h2"},t({id:(0,N.Z)("EditPage.form.roles"),defaultMessage:"Role details"})),e.createElement(b.r,{gap:4},e.createElement(S.P,{col:6},e.createElement(K.o,{name:"name",value:D.name||"",onChange:V,label:t({id:"global.name",defaultMessage:"Name"}),error:j?.name?t({id:j.name,defaultMessage:"Name is required"}):!1,required:!0})),e.createElement(S.P,{col:6},e.createElement(J.g,{id:"description",value:D.description||"",onChange:V,label:t({id:"global.description",defaultMessage:"Description"}),error:j?.description?t({id:j.description,defaultMessage:"Description is required"}):!1,required:!0})))),!d&&e.createElement(de,{ref:f,permissions:m.permissions,routes:u}))))))},ot=()=>e.createElement(a.O4,{permissions:P._.updateRole},e.createElement(rt,null));var lt=s(36150),it=s(99226),ct=s(95181),dt=s(23699),mt=s(41013),ge=s(45037),A=s(27947),ut=s(82064),gt=s(84458),pt=s(1690),ht=s(14763),Et=s(63318),ft=s(94997);const vt=(0,U.ZP)(gt.r)`
|
|
31
31
|
align-items: center;
|
|
32
32
|
height: ${(0,a.Q1)(32)};
|
|
33
33
|
display: flex;
|
|
@@ -52,4 +52,4 @@
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
`,z=({sortedRoles:t,canDelete:n,permissions:
|
|
55
|
+
`,z=({sortedRoles:t,canDelete:n,permissions:r,setRoleToDelete:o,onDelete:c})=>{const{formatMessage:l}=(0,M.Z)(),{push:d}=(0,T.k6)(),[u,m]=c,g=i=>n&&!["public","authenticated"].includes(i.type),h=i=>{o(i),m(!u)},f=i=>{d(`/settings/users-permissions/roles/${i}`)};return e.createElement(pt.p,null,t?.map(i=>e.createElement(ge.Tr,{key:i.name,...(0,a.X7)({fn:()=>f(i.id)})},e.createElement(A.Td,{width:"20%"},e.createElement(p.Z,null,i.name)),e.createElement(A.Td,{width:"50%"},e.createElement(p.Z,null,i.description)),e.createElement(A.Td,{width:"30%"},e.createElement(p.Z,null,l({id:"Roles.RoleRow.user-count",defaultMessage:"{number, plural, =0 {# user} one {# user} other {# users}}"},{number:i.nb_users}))),e.createElement(A.Td,null,e.createElement(E.k,{justifyContent:"end",...a.UW},e.createElement(a.jW,{permissions:r.updateRole},e.createElement(vt,{to:`/settings/users-permissions/roles/${i.id}`,"aria-label":l({id:"app.component.table.edit",defaultMessage:"Edit {target}"},{target:`${i.name}`})},e.createElement(Et.Z,null))),g(i)&&e.createElement(a.jW,{permissions:r.deleteRole},e.createElement(ht.h,{onClick:()=>h(i.id),noBorder:!0,icon:e.createElement(ft.Z,null),label:l({id:"global.delete-target",defaultMessage:"Delete {target}"},{target:`${i.name}`})})))))))};var yt=z;z.defaultProps={canDelete:!1},z.propTypes={onDelete:y().array.isRequired,permissions:y().object.isRequired,setRoleToDelete:y().func.isRequired,sortedRoles:y().array.isRequired,canDelete:y().bool};const Rt=async(t,n)=>{try{const{get:r}=(0,a.tg)(),{data:o}=await r("/users-permissions/roles");return n("The roles have loaded successfully"),o}catch(r){throw t({type:"warning",message:{id:"notification.error"}}),new Error(r)}},Ct=async(t,n)=>{try{const{del:r}=(0,a.tg)();await r(`/users-permissions/roles/${t}`)}catch{n({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}},Pt=()=>{const{trackUsage:t}=(0,a.rS)(),{formatMessage:n,locale:r}=(0,M.Z)(),o=(0,a.lm)(),{notifyStatus:c}=(0,lt.G)(),[{query:l}]=(0,a.Kx)(),d=l?._q||"",[u,m]=(0,e.useState)(!1),[g,h]=(0,e.useState)(!1),[f,i]=(0,e.useState)();(0,a.go)();const{isLoading:v,allowedActions:{canRead:C,canDelete:$}}=(0,a.ss)({create:P._.createRole,read:P._.readRoles,update:P._.updateRole,delete:P._.deleteRole}),{isLoading:R,data:{roles:D},isFetching:V,refetch:j}=(0,I.useQuery)("get-roles",()=>Rt(o,c),{initialData:{},enabled:C}),{includes:pe}=(0,a.L0)(r,{sensitivity:"base"}),he=(0,a.Xe)(r,{sensitivity:"base"}),Ee=R||V,Mt=()=>{m(!u)},bt={roles:{id:(0,W.OB)("Roles.empty"),defaultMessage:"You don't have any roles yet."},search:{id:(0,W.OB)("Roles.empty.search"),defaultMessage:"No roles match the search."}},At=n({id:"global.roles",defaultMessage:"Roles"}),Lt=(0,I.useMutation)(Z=>Ct(Z,o),{async onSuccess(){await j()}}),Dt=async()=>{h(!0),await Lt.mutateAsync(f),m(!u),h(!1)},H=(D||[]).filter(Z=>pe(Z.name,d)||pe(Z.description,d)).sort((Z,fe)=>he.compare(Z.name,fe.name)||he.compare(Z.description,fe.description)),Zt=d&&!H.length?"search":"roles",xt=4,Ot=(D?.length||0)+1;return e.createElement(it.A,null,e.createElement(a.SL,{name:At}),e.createElement(k.o,{"aria-busy":Ee},e.createElement(x.T,{title:n({id:"global.roles",defaultMessage:"Roles"}),subtitle:n({id:"Settings.roles.list.description",defaultMessage:"List of roles"}),primaryAction:e.createElement(a.jW,{permissions:P._.createRole},e.createElement(a.Qj,{to:"/settings/users-permissions/roles/new",onClick:()=>t("willCreateRole"),startIcon:e.createElement(ut.Z,null),size:"S"},n({id:(0,W.OB)("List.button.roles"),defaultMessage:"Add new role"})))}),e.createElement(ct.Z,{startActions:e.createElement(a.m,{label:n({id:"app.component.search.label",defaultMessage:"Search"})})}),e.createElement(B.D,null,!C&&e.createElement(a.ZF,null),(Ee||v)&&e.createElement(a.dO,null),C&&H&&H?.length?e.createElement(dt.i,{colCount:xt,rowCount:Ot},e.createElement(mt.h,null,e.createElement(ge.Tr,null,e.createElement(A.Th,null,e.createElement(p.Z,{variant:"sigma",textColor:"neutral600"},n({id:"global.name",defaultMessage:"Name"}))),e.createElement(A.Th,null,e.createElement(p.Z,{variant:"sigma",textColor:"neutral600"},n({id:"global.description",defaultMessage:"Description"}))),e.createElement(A.Th,null,e.createElement(p.Z,{variant:"sigma",textColor:"neutral600"},n({id:"global.users",defaultMessage:"Users"}))),e.createElement(A.Th,null,e.createElement(ne.T,null,n({id:"global.actions",defaultMessage:"Actions"}))))),e.createElement(yt,{sortedRoles:H,canDelete:$,permissions:P._,setRoleToDelete:i,onDelete:[u,m]})):e.createElement(a.x7,{content:bt[Zt]})),e.createElement(a.QH,{isConfirmButtonLoading:g,onConfirm:Dt,onToggleDialog:Mt,isOpen:u})))},St=()=>e.createElement(a.O4,{permissions:P._.accessRoles},e.createElement(Pt,null));var Tt=()=>e.createElement(a.O4,{permissions:P._.accessRoles},e.createElement(T.rs,null,e.createElement(T.AW,{path:"/settings/users-permissions/roles/new",component:nt,exact:!0}),e.createElement(T.AW,{path:"/settings/users-permissions/roles/:id",component:ot,exact:!0}),e.createElement(T.AW,{path:"/settings/users-permissions/roles",component:St,exact:!0}),e.createElement(T.AW,{path:"",component:a.Hn})))},55733:function(ve,G,s){s.d(G,{YX:function(){return P},OB:function(){return k.Z}});var e=s(86834),a=s.n(e),P=x=>Object.keys(x).reduce((O,B)=>{const E=x[B].controllers,p=Object.keys(E).reduce((b,S)=>(a()(E[S])||(b[S]=E[S]),b),{});return a()(p)||(O[B]={controllers:p}),O},{}),k=s(48395)}}]);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{36795:function(G,P,t){var e=t(32735),T=t(
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{36795:function(G,P,t){var e=t(32735),T=t(45175),g=t(84642),b=t(99391),W=t(35547),K=t(73530),U=t(52070),i=t(52945),se=t(99320),re=t(8365),j=t(8541),X=t(31014),S=t(96669),Q=t(92802),ie=t(60216),f=t.n(ie),_=t(67879),D=t(8471),de=t(90769);const u=s=>s.reduce((r,d)=>{const M=d.split(".")[0];return r[M]||(r[M]=[]),r[M].push(d),r},{}),B=(0,D.ZP)(T.w)`
|
|
2
2
|
tbody tr:nth-child(odd) {
|
|
3
3
|
background: ${({theme:s})=>s.colors.neutral100};
|
|
4
4
|
}
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
*/
|
|
24
24
|
padding-inline-start: ${({theme:s})=>s.spaces[2]};
|
|
25
25
|
}
|
|
26
|
-
`,oe=s=>{const r=[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"}];return s&&(r.push({id:"app.utils.publish",defaultMessage:"Publish"}),r.push({id:"app.utils.unpublish",defaultMessage:"Unpublish"})),r},Y=s=>{const r=["entry.create","entry.update","entry.delete"];return s&&r.push("entry.publish","entry.unpublish"),{entry:r,media:["media.create","media.update","media.delete"]}},J=e.createContext(),le=({children:s})=>{const{formatMessage:r}=(0,_.Z)(),{collectionTypes:d,isLoading:M}=(0,de.G)(),
|
|
26
|
+
`,oe=s=>{const r=[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"}];return s&&(r.push({id:"app.utils.publish",defaultMessage:"Publish"}),r.push({id:"app.utils.unpublish",defaultMessage:"Unpublish"})),r},Y=s=>{const r=["entry.create","entry.update","entry.delete"];return s&&r.push("entry.publish","entry.unpublish"),{entry:r,media:["media.create","media.update","media.delete"]}},J=e.createContext(),le=({children:s})=>{const{formatMessage:r}=(0,_.Z)(),{collectionTypes:d,isLoading:M}=(0,de.G)(),C=e.useMemo(()=>d.some(L=>L.options.draftAndPublish===!0),[d]),v=r({id:"Settings.webhooks.form.events",defaultMessage:"Events"});return e.createElement(J.Provider,{value:{isDraftAndPublish:C}},e.createElement(g.k,{direction:"column",alignItems:"stretch",gap:1},e.createElement(b.Q,{"aria-hidden":!0},v),M&&e.createElement(W.a,null,r({id:"Settings.webhooks.events.isLoading",defaultMessage:"Events loading"})),e.createElement(B,{"aria-label":v},s)))};le.propTypes={children:f().oneOfType([f().arrayOf(f().node),f().node]).isRequired};const q=({getHeaders:s=oe})=>{const{isDraftAndPublish:r}=e.useContext(J),{formatMessage:d}=(0,_.Z)(),M=s(r);return e.createElement(K.S,null,e.createElement(U.Z,null,e.createElement(i.g,null,e.createElement(se.T,null,d({id:"Settings.webhooks.event.select",defaultMessage:"Select event"}))),M.map(C=>["app.utils.publish","app.utils.unpublish"].includes(C.id)?e.createElement(i.g,{key:C.id,title:d({id:"Settings.webhooks.event.publish-tooltip",defaultMessage:"This event only exists for content with draft & publish enabled"})},e.createElement(re.Z,{variant:"sigma",textColor:"neutral600"},d(C))):e.createElement(i.g,{key:C.id},e.createElement(re.Z,{variant:"sigma",textColor:"neutral600"},d(C))))))};q.defaultProps={getHeaders:oe},q.propTypes={getHeaders:f().func};const ee=({providedEvents:s})=>{const{isDraftAndPublish:r}=e.useContext(J),d=s||Y(r),{values:M,handleChange:C}=(0,Q.u6)(),v="events",L=M.events,w=[],te=u(L),A=({target:{name:E,value:m}})=>{let y=new Set(L);m?y.add(E):y.delete(E),C({target:{name:v,value:Array.from(y)}})},$=({target:{name:E,value:m}})=>{let y=new Set(L);m?d[E].forEach(N=>{w.includes(N)||y.add(N)}):d[E].forEach(N=>y.delete(N)),C({target:{name:v,value:Array.from(y)}})};return e.createElement(j.X,null,Object.entries(d).map(([E,m])=>e.createElement(F,{disabledEvents:w,key:E,name:E,events:m,inputValue:te[E],handleSelect:A,handleSelectAll:$})))};ee.defaultProps={providedEvents:null},ee.propTypes={providedEvents:f().object};const ce=s=>s.replace(/-/g," ").split(" ").map(r=>r.charAt(0).toUpperCase()+r.slice(1).toLowerCase()).join(" "),F=({disabledEvents:s,name:r,events:d,inputValue:M,handleSelect:C,handleSelectAll:v})=>{const{formatMessage:L}=(0,_.Z)(),w=d.filter(m=>!s.includes(m)),te=M.length>0,A=M.length===w.length,$=({target:{name:m}})=>{v({target:{name:m,value:!A}})},E=5;return e.createElement(U.Z,null,e.createElement(i.f,null,e.createElement(X.X,{indeterminate:te&&!A,"aria-label":L({id:"global.select-all-entries",defaultMessage:"Select all entries"}),name:r,onChange:$,value:A},ce(r))),d.map(m=>e.createElement(i.f,{key:m},e.createElement(S.C,{disabled:s.includes(m),"aria-label":m,name:m,value:M.includes(m),onValueChange:y=>C({target:{name:m,value:y}})}))),d.length<E&&e.createElement(i.f,{colSpan:E-d.length}))};F.defaultProps={disabledEvents:[],events:[],inputValue:[],handleSelect(){},handleSelectAll(){}},F.propTypes={disabledEvents:f().array,events:f().array,inputValue:f().array,handleSelect:f().func,handleSelectAll:f().func,name:f().string.isRequired},P.Z={Root:le,Headers:q,Body:ee,EventRow:F}},77476:function(G,P,t){t.d(P,{Z:function(){return fe}});var e=t(32735),T=t(95162),g=t(30126),b=t(20108),W=t(53038),K=t(90769),U=t(64092),i=t(84642),se=t(91779),re=t(56932),j=t(77981),X=t(10710),S=t(97037),Q=t(2846),ie=t(58518),f=t(40501),_=t(70788),D=t(92802),de=t(60216),u=t.n(de),B=t(67879),oe=t(9592),Y=t(36795);function J(){return e.createElement(Y.Z.Root,null,e.createElement(Y.Z.Headers,null),e.createElement(Y.Z.Body,null))}var le=t(99391),q=t(43743),ee=t(82064),ce=t(70843),F=t(8241);const s=["A-IM","Accept","Accept-Charset","Accept-Encoding","Accept-Language","Accept-Datetime","Access-Control-Request-Method","Access-Control-Request-Headers","Authorization","Cache-Control","Connection","Content-Length","Content-Type","Cookie","Date","Expect","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Max-Forwards","Origin","Pragma","Proxy-Authorization","Range","Referer","TE","User-Agent","Upgrade","Via","Warning"],r=({name:n,onChange:a,value:o,...c})=>{const{values:{headers:h}}=(0,D.u6)(),[O,l]=(0,e.useState)(s);(0,e.useEffect)(()=>{l(s.filter(p=>!h?.some(x=>x.key!==o&&x.key===p)))},[h,o]);const H=p=>{a({target:{name:n,value:p}})},z=p=>{l(x=>[...x,p]),H(p)};return e.createElement(ce.XU,{...c,onClear:()=>H(""),onChange:H,onCreateOption:z,placeholder:"",value:o},O.map(p=>e.createElement(F.O,{value:p,key:p},p)))};r.defaultProps={value:void 0},r.propTypes={name:u().string.isRequired,onChange:u().func.isRequired,value:u().string};var d=r,C=()=>{const{formatMessage:n}=(0,B.Z)(),{values:a,errors:o}=(0,D.u6)();return e.createElement(i.k,{direction:"column",alignItems:"stretch",gap:1},e.createElement(le.Q,null,n({id:"Settings.webhooks.form.headers",defaultMessage:"Headers"})),e.createElement(j.x,{padding:8,background:"neutral100",hasRadius:!0},e.createElement(D.F2,{validateOnChange:!1,name:"headers",render:({push:c,remove:h})=>e.createElement(X.r,{gap:4},a.headers.map((O,l)=>e.createElement(e.Fragment,{key:`${l}.${O.key}`},e.createElement(S.P,{col:6},e.createElement(D.gN,{as:d,name:`headers.${l}.key`,"aria-label":`row ${l+1} key`,label:n({id:"Settings.webhooks.key",defaultMessage:"Key"}),error:o.headers?.[l]?.key&&o.headers[l].key})),e.createElement(S.P,{col:6},e.createElement(i.k,{alignItems:"flex-end"},e.createElement(j.x,{style:{flex:1}},e.createElement(D.gN,{as:Q.o,name:`headers.${l}.value`,"aria-label":`row ${l+1} value`,label:n({id:"Settings.webhooks.value",defaultMessage:"Value"}),error:o.headers?.[l]?.value&&o.headers[l].value})),e.createElement(i.k,{paddingLeft:2,style:{alignSelf:"center"},paddingTop:o.headers?.[l]?.value?0:5},e.createElement(g.fG,{disabled:a.headers.length===1,onClick:()=>h(l),label:n({id:"Settings.webhooks.headers.remove",defaultMessage:"Remove header row {number}"},{number:l+1})})))))),e.createElement(S.P,{col:12},e.createElement(q.A,{type:"button",onClick:()=>{c({key:"",value:""})},startIcon:e.createElement(ee.Z,null)},n({id:"Settings.webhooks.create.header",defaultMessage:"Create new header"}))))})))},v=t(8365),L=t(75760),w=t(98610),te=t(8471);const A=te.ZP.svg(({theme:n,color:a})=>`
|
|
27
27
|
width: ${12/16}rem;
|
|
28
28
|
height: ${12/16}rem;
|
|
29
29
|
|
|
30
30
|
path {
|
|
31
31
|
fill: ${n.colors[a]};
|
|
32
32
|
}
|
|
33
|
-
`),$=({isPending:n,statusCode:a})=>{const{formatMessage:o}=(0,B.Z)();return n?e.createElement(i.k,{gap:2,alignItems:"center"},e.createElement(A,{as:L.Z}),e.createElement(v.Z,null,o({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):a>=200&&a<300?e.createElement(i.k,{gap:2,alignItems:"center"},e.createElement(A,{as:f.Z,color:"success700"}),e.createElement(v.Z,null,o({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):a>=300?e.createElement(i.k,{gap:2,alignItems:"center"},e.createElement(A,{as:w.Z,color:"danger700"}),e.createElement(v.Z,null,o({id:"Settings.error",defaultMessage:"error"})," ",a)):null};$.propTypes={isPending:u().bool.isRequired,statusCode:u().number},$.defaultProps={statusCode:void 0};const E=({statusCode:n,message:a})=>{const{formatMessage:o}=(0,B.Z)();return n>=200&&n<300?e.createElement(i.k,{justifyContent:"flex-end"},e.createElement(v.Z,{textColor:"neutral600",ellipsis:!0},o({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):n>=300?e.createElement(i.k,{justifyContent:"flex-end"},e.createElement(i.k,{maxWidth:(0,g.Q1)(250),justifyContent:"flex-end",title:a},e.createElement(v.Z,{ellipsis:!0,textColor:"neutral600"},a))):null};E.propTypes={statusCode:u().number,message:u().string},E.defaultProps={statusCode:void 0,message:void 0};const m=({onCancel:n})=>{const{formatMessage:a}=(0,B.Z)();return e.createElement(i.k,{justifyContent:"flex-end"},e.createElement("button",{onClick:n,type:"button"},e.createElement(i.k,{gap:2,alignItems:"center"},e.createElement(v.Z,{textColor:"neutral400"},a({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement(A,{as:w.Z,color:"neutral400"}))))};m.propTypes={onCancel:u().func.isRequired};const
|
|
33
|
+
`),$=({isPending:n,statusCode:a})=>{const{formatMessage:o}=(0,B.Z)();return n?e.createElement(i.k,{gap:2,alignItems:"center"},e.createElement(A,{as:L.Z}),e.createElement(v.Z,null,o({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):a>=200&&a<300?e.createElement(i.k,{gap:2,alignItems:"center"},e.createElement(A,{as:f.Z,color:"success700"}),e.createElement(v.Z,null,o({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):a>=300?e.createElement(i.k,{gap:2,alignItems:"center"},e.createElement(A,{as:w.Z,color:"danger700"}),e.createElement(v.Z,null,o({id:"Settings.error",defaultMessage:"error"})," ",a)):null};$.propTypes={isPending:u().bool.isRequired,statusCode:u().number},$.defaultProps={statusCode:void 0};const E=({statusCode:n,message:a})=>{const{formatMessage:o}=(0,B.Z)();return n>=200&&n<300?e.createElement(i.k,{justifyContent:"flex-end"},e.createElement(v.Z,{textColor:"neutral600",ellipsis:!0},o({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):n>=300?e.createElement(i.k,{justifyContent:"flex-end"},e.createElement(i.k,{maxWidth:(0,g.Q1)(250),justifyContent:"flex-end",title:a},e.createElement(v.Z,{ellipsis:!0,textColor:"neutral600"},a))):null};E.propTypes={statusCode:u().number,message:u().string},E.defaultProps={statusCode:void 0,message:void 0};const m=({onCancel:n})=>{const{formatMessage:a}=(0,B.Z)();return e.createElement(i.k,{justifyContent:"flex-end"},e.createElement("button",{onClick:n,type:"button"},e.createElement(i.k,{gap:2,alignItems:"center"},e.createElement(v.Z,{textColor:"neutral400"},a({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement(A,{as:w.Z,color:"neutral400"}))))};m.propTypes={onCancel:u().func.isRequired};const y=({isPending:n,onCancel:a,response:o})=>{const{statusCode:c,message:h}=o,{formatMessage:O}=(0,B.Z)();return e.createElement(j.x,{background:"neutral0",padding:5,shadow:"filterShadow",hasRadius:!0},e.createElement(X.r,{gap:4,style:{alignItems:"center"}},e.createElement(S.P,{col:3},e.createElement(v.Z,null,O({id:"Settings.webhooks.trigger.test",defaultMessage:"Test-trigger"}))),e.createElement(S.P,{col:3},e.createElement($,{isPending:n,statusCode:c})),e.createElement(S.P,{col:6},n?e.createElement(m,{onCancel:a}):e.createElement(E,{statusCode:c,message:h}))))};y.defaultProps={isPending:!1,onCancel(){},response:{}},y.propTypes={isPending:u().bool,onCancel:u().func,response:u().object};var N=y,k=t(24346);const ge=/(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/,Ee=/(^$)|((https?:\/\/.*)(d*)\/?(.*))/,he=({formatMessage:n})=>k.Ry().shape({name:k.Z_().required(n({id:"Settings.webhooks.validation.name.required",defaultMessage:"Name is required"})).matches(ge,n({id:"Settings.webhooks.validation.name.regex",defaultMessage:"The name must start with a letter and only contain letters, numbers, spaces and underscores"})),url:k.Z_().required(n({id:"Settings.webhooks.validation.url.required",defaultMessage:"Url is required"})).matches(Ee,n({id:"Settings.webhooks.validation.url.regex",defaultMessage:"The value must be a valid Url"})),headers:k.Vo(a=>{let o=k.IX();if(a.length===1){const{key:c,value:h}=a[0];if(!c&&!h)return o}return o.of(k.Ry().shape({key:k.Z_().required(n({id:"Settings.webhooks.validation.key",defaultMessage:"Key is required"})),value:k.Z_().required(n({id:"Settings.webhooks.validation.value",defaultMessage:"Value is required"}))}))}),events:k.IX()}),ue=({handleSubmit:n,triggerWebhook:a,isCreating:o,isTriggering:c,triggerResponse:h,data:O})=>{const{formatMessage:l}=(0,B.Z)(),[H,z]=(0,e.useState)(!1),p=(0,oe.c)(J,async()=>(await t.e(7030).then(t.bind(t,61442))).EventTableEE),x=Z=>Object.keys(Z).length?Object.entries(Z).map(([ne,ae])=>({key:ne,value:ae})):[{key:"",value:""}],R=(0,D.TA)({initialValues:{name:O?.name||"",url:O?.url||"",headers:x(O?.headers||{}),events:O?.events||[]},onSubmit(Z,{resetForm:ne,setSubmitting:ae}){n(Z),ne({values:Z}),ae(!1)},validationSchema:he({formatMessage:l}),validateOnChange:!1,validateOnBlur:!1});return p?e.createElement(D.Hy,{value:R},e.createElement(g.l0,{onSubmit:R.handleSubmit},e.createElement(U.T,{primaryAction:e.createElement(i.k,{gap:2},e.createElement(se.z,{onClick:()=>{a(),z(!0)},variant:"tertiary",startIcon:e.createElement(ie.Z,null),disabled:o||c,size:"L"},l({id:"Settings.webhooks.trigger",defaultMessage:"Trigger"})),e.createElement(se.z,{startIcon:e.createElement(f.Z,null),type:"submit",size:"L",disabled:!R.dirty,loading:R.isSubmitting},l({id:"global.save",defaultMessage:"Save"}))),title:o?l({id:"Settings.webhooks.create",defaultMessage:"Create a webhook"}):O?.name,navigationAction:e.createElement(g.rU,{startIcon:e.createElement(_.Z,null),to:"/settings/webhooks"},l({id:"global.back",defaultMessage:"Back"}))}),e.createElement(re.D,null,e.createElement(i.k,{direction:"column",alignItems:"stretch",gap:4},H&&e.createElement(N,{isPending:c,response:h,onCancel:()=>z(!1)}),e.createElement(j.x,{background:"neutral0",padding:8,shadow:"filterShadow",hasRadius:!0},e.createElement(i.k,{direction:"column",alignItems:"stretch",gap:6},e.createElement(X.r,{gap:6},e.createElement(S.P,{col:6},e.createElement(D.gN,{as:Q.o,name:"name",error:R?.errors?.name&&R.errors.name,label:l({id:"global.name",defaultMessage:"Name"}),required:!0})),e.createElement(S.P,{col:12},e.createElement(D.gN,{as:Q.o,name:"url",error:R?.errors?.url&&R.errors.url,label:l({id:"Settings.roles.form.input.url",defaultMessage:"Url"}),required:!0}))),e.createElement(C,null),e.createElement(p,null))))))):null};ue.propTypes={data:u().object,handleSubmit:u().func.isRequired,triggerWebhook:u().func.isRequired,isCreating:u().bool.isRequired,isTriggering:u().bool.isRequired,triggerResponse:u().object},ue.defaultProps={data:void 0,triggerResponse:void 0};var pe=ue;const me=n=>({...n,headers:n.headers.reduce((a,{key:o,value:c})=>(o!==""&&(a[o]=c),a),{})});var fe=()=>{const{params:{id:n}}=(0,W.$B)("/settings/webhooks/:id"),a=n==="create",{replace:o}=(0,W.k6)(),c=(0,g.lm)(),{formatAPIError:h}=(0,g.So)(),O=(0,b.useQueryClient)(),{isLoading:l}=(0,K.G)(),{put:H,get:z,post:p}=(0,g.kY)(),{isLoading:x,data:R,error:Z}=(0,b.useQuery)(["webhooks",n],async()=>{const{data:{data:I}}=await z(`/admin/webhooks/${n}`);return I},{enabled:!a});e.useEffect(()=>{Z&&c({type:"warning",message:h(Z)})},[Z,c,h]);const{isLoading:ne,data:ae,isIdle:ve,mutate:Me}=(0,b.useMutation)(()=>p(`/admin/webhooks/${n}/trigger`)),Ce=()=>Me(null,{onError(I){c({type:"warning",message:h(I)})}}),ye=(0,b.useMutation)(I=>p("/admin/webhooks",I)),Pe=(0,b.useMutation)(({id:I,body:V})=>H(`/admin/webhooks/${I}`,V)),be=async I=>{if(a){ye.mutate(me(I),{onSuccess({data:V}){c({type:"success",message:{id:"Settings.webhooks.created"}}),o(`/settings/webhooks/${V.data.id}`)},onError(V){c({type:"warning",message:h(V)})}});return}Pe.mutate({id:n,body:me(I)},{onSuccess(){O.invalidateQueries(["webhooks",n]),c({type:"success",message:{id:"notification.form.success.fields"}})},onError(V){c({type:"warning",message:h(V)})}})};return x||l?e.createElement(g.dO,null):e.createElement(T.o,null,e.createElement(g.SL,{name:"Webhooks"}),e.createElement(pe,{data:R,handleSubmit:be,triggerWebhook:Ce,isCreating:a,isTriggering:ne,isTriggerIdle:ve,triggerResponse:ae?.data.data}))}},5722:function(G,P,t){t.r(P);var e=t(32735),T=t(30126),g=t(15062),b=t(30305),W=t(77476);const K=()=>{const U=(0,g.v9)(b._);return e.createElement(T.O4,{permissions:U.settings.webhooks.create},e.createElement(W.Z,null))};P.default=K},63939:function(G,P,t){t.r(P);var e=t(32735),T=t(30126),g=t(15062),b=t(30305),W=t(77476);const K=()=>{const U=(0,g.v9)(b._);return e.createElement(T.O4,{permissions:U.settings.webhooks.update},e.createElement(W.Z,null))};P.default=K},8241:function(G,P,t){t.d(P,{O:function(){return T}});var e=t(70843);const T=e.Wx},70788:function(G,P,t){t.d(P,{Z:function(){return g}});var e=t(74512);const T=b=>(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1rem",height:"1rem",fill:"none",viewBox:"0 0 24 24",...b,children:(0,e.jsx)("path",{fill:"#212134",d:"M24 13.3a.2.2 0 0 1-.2.2H5.74l8.239 8.239a.2.2 0 0 1 0 .282L12.14 23.86a.2.2 0 0 1-.282 0L.14 12.14a.2.2 0 0 1 0-.282L11.86.14a.2.2 0 0 1 .282 0L13.98 1.98a.2.2 0 0 1 0 .282L5.74 10.5H23.8c.11 0 .2.09.2.2v2.6Z"})}),g=T}}]);
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4121],{80290:function(R,h,t){t.r(h),t.d(h,{default:function(){return ue}});var e=t(32735),s=t(30126),c=t(15062),u=t(30305),g=t(36150),L=t(99226),S=t(95162),D=t(64092),P=t(95181),l=t(8365),y=t(91779),j=t(56932),U=t(77981),_=t(23699),ee=t(22116),te=t(41013),K=t(45037),i=t(27947),V=t(96669),ne=t(99320),ae=t(1690),k=t(84642),E=t(74512),F=t(8471);const w=F.ZP.div`
|
|
2
|
+
background: ${({theme:o})=>o.colors.danger500};
|
|
3
|
+
border: none;
|
|
4
|
+
border-radius: 16px;
|
|
5
|
+
position: relative;
|
|
6
|
+
height: ${24/16}rem;
|
|
7
|
+
width: ${40/16}rem;
|
|
8
|
+
|
|
9
|
+
& span {
|
|
10
|
+
font-size: ${({visibleLabels:o})=>o?"1rem":0};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&:before {
|
|
14
|
+
content: '';
|
|
15
|
+
background: ${({theme:o})=>o.colors.neutral0};
|
|
16
|
+
width: 1rem;
|
|
17
|
+
height: 1rem;
|
|
18
|
+
border-radius: 50%;
|
|
19
|
+
position: absolute;
|
|
20
|
+
transition: all 0.5s;
|
|
21
|
+
left: ${({theme:o})=>o.spaces[1]};
|
|
22
|
+
top: ${({theme:o})=>o.spaces[1]};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@media (prefers-reduced-motion: reduce) {
|
|
26
|
+
&:before {
|
|
27
|
+
transition: none;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
`,se=F.ZP.button`
|
|
31
|
+
background: transparent;
|
|
32
|
+
padding: 0;
|
|
33
|
+
border: none;
|
|
34
|
+
|
|
35
|
+
&[aria-checked='true'] ${w} {
|
|
36
|
+
background: ${({theme:o})=>o.colors.success500};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
&[aria-checked='true'] ${w}:before {
|
|
40
|
+
transform: translateX(1rem);
|
|
41
|
+
}
|
|
42
|
+
`,oe=e.forwardRef(({label:o,onChange:m,onLabel:f="On",offLabel:d="Off",selected:M,visibleLabels:a=!1,...v},b)=>(0,E.jsx)(se,{ref:b,role:"switch","aria-checked":M,"aria-label":o,onClick:m,visibleLabels:a,type:"button",...v,children:(0,E.jsxs)(k.k,{children:[(0,E.jsxs)(w,{children:[(0,E.jsx)("span",{children:f}),(0,E.jsx)("span",{children:d})]}),a&&(0,E.jsx)(U.x,{as:"span","aria-hidden":!0,paddingLeft:2,color:M?"success600":"danger600",children:M?f:d})]})}));var z=t(14763),le=t(80564),$=t(82064),H=t(94997),re=t(63318),ie=t(23982),de=t(67879),B=t(20108),N=t(53038),ce=()=>{const[o,m]=(0,e.useState)(!1),[f,d]=(0,e.useState)([]),M=(0,c.v9)(u._),{formatMessage:a}=(0,de.Z)(),{formatAPIError:v}=(0,s.So)(),b=(0,s.lm)();(0,s.go)();const{push:me}=(0,N.k6)(),{pathname:Q}=(0,N.TH)(),{isLoading:he,allowedActions:{canCreate:O,canUpdate:Y,canDelete:G}}=(0,s.ss)(M.settings.webhooks),{get:ge,post:Ee,put:fe}=(0,s.kY)(),{notifyStatus:X}=(0,g.G)(),ve="webhooks",{isLoading:be,data:x,error:Z,refetch:J}=(0,B.useQuery)(ve,async()=>{const{data:{data:n}}=await ge("/admin/webhooks");return n});(0,e.useEffect)(()=>{if(Z){b({type:"warning",message:v(Z)});return}x&&X(a({id:"Settings.webhooks.list.loading.success",defaultMessage:"Webhooks have been loaded"}))},[x,Z,b,a,X,v]);const q=(0,B.useMutation)(async()=>{await Ee("/admin/webhooks/batch-delete",{ids:f})},{onError(n){b({type:"warning",message:v(n)}),m(!1)},onSuccess(){d([]),m(!1),J()}}),xe=(0,B.useMutation)(async({isEnabled:n,id:r})=>{const{id:T,...I}=x.find(Te=>Te.id===r)??{},Ce={...I,isEnabled:n};await fe(`/admin/webhooks/${r}`,Ce)},{onError(n){b({type:"warning",message:v(n)})},onSuccess(){J()}}),Me=()=>q.mutate(),pe=n=>d(n?x.map(r=>r.id):[]),ye=(n,r)=>d(n?T=>[...T,r]:T=>T.filter(I=>I!==r)),W=n=>me(`${Q}/${n}`),A=he||be,C=x?.length??0,p=f.length;return e.createElement(L.A,null,e.createElement(s.SL,{name:"Webhooks"}),e.createElement(S.o,{"aria-busy":A},e.createElement(D.T,{title:a({id:"Settings.webhooks.title",defaultMessage:"Webhooks"}),subtitle:a({id:"Settings.webhooks.list.description",defaultMessage:"Get POST changes notifications"}),primaryAction:O&&!A&&e.createElement(s.Qj,{startIcon:e.createElement($.Z,null),variant:"default",to:`${Q}/create`,size:"S"},a({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}),p>0&&G&&e.createElement(P.Z,{startActions:e.createElement(e.Fragment,null,e.createElement(l.Z,{variant:"epsilon",textColor:"neutral600"},a({id:"Settings.webhooks.to.delete",defaultMessage:"{webhooksToDeleteLength, plural, one {# webhook} other {# webhooks}} selected"},{webhooksToDeleteLength:p})),e.createElement(y.z,{onClick:()=>m(!0),startIcon:e.createElement(H.Z,null),size:"L",variant:"danger-light"},a({id:"global.delete",defaultMessage:"Delete"})))}),e.createElement(j.D,null,A?e.createElement(U.x,{background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},e.createElement(s.dO,null)):C>0?e.createElement(_.i,{colCount:5,rowCount:C+1,footer:e.createElement(ee.c,{onClick:()=>O?W("create"):{},icon:e.createElement($.Z,null)},a({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))},e.createElement(te.h,null,e.createElement(K.Tr,null,e.createElement(i.Th,null,e.createElement(V.C,{"aria-label":a({id:"global.select-all-entries",defaultMessage:"Select all entries"}),indeterminate:p>0&&p<C,value:p===C,onValueChange:pe})),e.createElement(i.Th,{width:"20%"},e.createElement(l.Z,{variant:"sigma",textColor:"neutral600"},a({id:"global.name",defaultMessage:"Name"}))),e.createElement(i.Th,{width:"60%"},e.createElement(l.Z,{variant:"sigma",textColor:"neutral600"},a({id:"Settings.webhooks.form.url",defaultMessage:"URL"}))),e.createElement(i.Th,{width:"20%"},e.createElement(l.Z,{variant:"sigma",textColor:"neutral600"},a({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"}))),e.createElement(i.Th,null,e.createElement(ne.T,null,a({id:"Settings.webhooks.list.th.actions",defaultMessage:"Actions"}))))),e.createElement(ae.p,null,x.map(n=>e.createElement(K.Tr,{key:n.id,...(0,s.X7)({fn:()=>W(n.id),condition:Y})},e.createElement(i.Td,{...s.UW},e.createElement(V.C,{"aria-label":`${a({id:"global.select",defaultMessage:"Select"})} ${n.name}`,value:f?.includes(n.id),onValueChange:r=>ye(r,n.id),name:"select"})),e.createElement(i.Td,null,e.createElement(l.Z,{fontWeight:"semiBold",textColor:"neutral800"},n.name)),e.createElement(i.Td,null,e.createElement(l.Z,{textColor:"neutral800"},n.url)),e.createElement(i.Td,null,e.createElement(k.k,null,e.createElement(oe,{onLabel:a({id:"global.enabled",defaultMessage:"Enabled"}),offLabel:a({id:"global.disabled",defaultMessage:"Disabled"}),label:`${n.name} ${a({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"})}`,selected:n.isEnabled,onChange:r=>{r.stopPropagation(),xe.mutate({isEnabled:!n.isEnabled,id:n.id})},visibleLabels:!0}))),e.createElement(i.Td,null,e.createElement(k.k,{gap:1},Y&&e.createElement(z.h,{label:a({id:"Settings.webhooks.events.update",defaultMessage:"Update"}),icon:e.createElement(re.Z,null),noBorder:!0}),G&&e.createElement(z.h,{onClick:r=>{r.stopPropagation(),d([n.id]),m(!0)},label:a({id:"Settings.webhooks.events.delete",defaultMessage:"Delete webhook"}),icon:e.createElement(H.Z,null),noBorder:!0}))))))):e.createElement(le.x,{icon:e.createElement(ie.Z,{width:"160px"}),content:a({id:"Settings.webhooks.list.empty.description",defaultMessage:"No webhooks found"}),action:e.createElement(y.z,{variant:"secondary",startIcon:e.createElement($.Z,null),onClick:()=>O?W("create"):{}},a({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}))),e.createElement(s.QH,{isOpen:o,onToggleDialog:()=>m(n=>!n),onConfirm:Me,isConfirmButtonLoading:q.isLoading}))},ue=()=>{const o=(0,c.v9)(u._);return e.createElement(s.O4,{permissions:o.settings.webhooks.main},e.createElement(ce,null))}},95181:function(R,h,t){t.d(h,{Z:function(){return c}});var e=t(74512),s=t(84642);const c=({startActions:u,endActions:g})=>!u&&!g?null:(0,e.jsxs)(s.k,{justifyContent:"space-between",alignItems:"flex-start",paddingBottom:4,paddingLeft:10,paddingRight:10,children:[(0,e.jsx)(s.k,{gap:2,wrap:"wrap",children:u}),(0,e.jsx)(s.k,{gap:2,shrink:0,wrap:"wrap",children:g})]})},22116:function(R,h,t){t.d(h,{c:function(){return P}});var e=t(74512),s=t(8471),c=t(77981),u=t(2775),g=t(84642),L=t(8365);const S=(0,s.ZP)(c.x)`
|
|
43
|
+
height: ${24/16}rem;
|
|
44
|
+
width: ${24/16}rem;
|
|
45
|
+
border-radius: 50%;
|
|
46
|
+
display: flex;
|
|
47
|
+
justify-content: center;
|
|
48
|
+
align-items: center;
|
|
49
|
+
|
|
50
|
+
svg {
|
|
51
|
+
height: ${10/16}rem;
|
|
52
|
+
width: ${10/16}rem;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
svg path {
|
|
56
|
+
fill: ${({theme:l})=>l.colors.primary600};
|
|
57
|
+
}
|
|
58
|
+
`,D=(0,s.ZP)(c.x)`
|
|
59
|
+
border-radius: 0 0 ${({theme:l})=>l.borderRadius} ${({theme:l})=>l.borderRadius};
|
|
60
|
+
display: block;
|
|
61
|
+
width: 100%;
|
|
62
|
+
border: none;
|
|
63
|
+
`,P=({children:l,icon:y,...j})=>(0,e.jsxs)("div",{children:[(0,e.jsx)(u.i,{}),(0,e.jsx)(D,{as:"button",background:"primary100",padding:5,...j,children:(0,e.jsxs)(g.k,{children:[(0,e.jsx)(S,{"aria-hidden":!0,background:"primary200",children:y}),(0,e.jsx)(c.x,{paddingLeft:3,children:(0,e.jsx)(L.Z,{variant:"pi",fontWeight:"bold",textColor:"primary600",children:l})})]})})]})}}]);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
|
|
3
|
-
import { Combobox, ComboboxOption, Field, Flex
|
|
3
|
+
import { Combobox, ComboboxOption, Field, Flex } from '@strapi/design-system';
|
|
4
4
|
import {
|
|
5
5
|
useCMEditViewDataManager,
|
|
6
6
|
useAPIErrorHandler,
|
|
@@ -31,13 +31,14 @@ export function AssigneeSelect() {
|
|
|
31
31
|
const { put } = useFetchClient();
|
|
32
32
|
const {
|
|
33
33
|
allowedActions: { canReadUsers },
|
|
34
|
+
isLoading: isLoadingPermissions,
|
|
34
35
|
} = useRBAC({
|
|
35
36
|
readUsers: permissions.settings.users.read,
|
|
36
37
|
});
|
|
37
38
|
const { users, isLoading, isError } = useAdminUsers(
|
|
38
39
|
{},
|
|
39
40
|
{
|
|
40
|
-
enabled: canReadUsers,
|
|
41
|
+
enabled: !isLoadingPermissions && canReadUsers,
|
|
41
42
|
}
|
|
42
43
|
);
|
|
43
44
|
|
|
@@ -102,7 +103,7 @@ export function AssigneeSelect() {
|
|
|
102
103
|
})) ||
|
|
103
104
|
(mutation.error && formatAPIError(mutation.error))
|
|
104
105
|
}
|
|
105
|
-
disabled={!isLoading && users.length === 0}
|
|
106
|
+
disabled={!isLoadingPermissions && !isLoading && users.length === 0}
|
|
106
107
|
name={ASSIGNEE_ATTRIBUTE_NAME}
|
|
107
108
|
id={ASSIGNEE_ATTRIBUTE_NAME}
|
|
108
109
|
value={currentAssignee ? currentAssignee.id : null}
|
|
@@ -116,18 +117,7 @@ export function AssigneeSelect() {
|
|
|
116
117
|
id: 'content-manager.reviewWorkflows.assignee.label',
|
|
117
118
|
defaultMessage: 'Assignee',
|
|
118
119
|
})}
|
|
119
|
-
|
|
120
|
-
customizeContent={() => (
|
|
121
|
-
<Flex as="span" justifyContent="space-between" alignItems="center" width="100%">
|
|
122
|
-
<Typography textColor="neutral800" ellipsis>
|
|
123
|
-
{currentAssignee ? getDisplayName(currentAssignee, formatMessage) : null}
|
|
124
|
-
</Typography>
|
|
125
|
-
|
|
126
|
-
{isLoading || mutation.isLoading ? (
|
|
127
|
-
<Loader small style={{ display: 'flex' }} />
|
|
128
|
-
) : null}
|
|
129
|
-
</Flex>
|
|
130
|
-
)}
|
|
120
|
+
loading={isLoading || isLoadingPermissions || mutation.isLoading}
|
|
131
121
|
>
|
|
132
122
|
{users.map((user) => {
|
|
133
123
|
return (
|
|
@@ -36,8 +36,8 @@ const getDisplayedFilters = ({ formatMessage, users, canReadUsers }) => {
|
|
|
36
36
|
id: 'Settings.permissions.auditLogs.action',
|
|
37
37
|
defaultMessage: 'Action',
|
|
38
38
|
}),
|
|
39
|
-
options: actionOptions,
|
|
40
39
|
customInput: ComboboxFilter,
|
|
40
|
+
options: actionOptions,
|
|
41
41
|
},
|
|
42
42
|
fieldSchema: { type: 'enumeration' },
|
|
43
43
|
},
|
package/ee/server/bootstrap.js
CHANGED
|
@@ -7,7 +7,7 @@ const { getService } = require('../../server/utils');
|
|
|
7
7
|
const actions = require('./config/admin-actions');
|
|
8
8
|
const { persistTablesWithPrefix } = require('./utils/persisted-tables');
|
|
9
9
|
|
|
10
|
-
module.exports = async () => {
|
|
10
|
+
module.exports = async (args) => {
|
|
11
11
|
const { actionProvider } = getService('permission');
|
|
12
12
|
|
|
13
13
|
if (features.isEnabled('sso')) {
|
|
@@ -37,5 +37,5 @@ module.exports = async () => {
|
|
|
37
37
|
|
|
38
38
|
await getService('seat-enforcement').seatEnforcementWorkflow();
|
|
39
39
|
|
|
40
|
-
await executeCEBootstrap();
|
|
40
|
+
await executeCEBootstrap(args);
|
|
41
41
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/admin",
|
|
3
|
-
"version": "4.13.
|
|
3
|
+
"version": "4.13.7",
|
|
4
4
|
"description": "Strapi Admin",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -42,14 +42,14 @@
|
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@casl/ability": "^5.4.3",
|
|
44
44
|
"@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
|
|
45
|
-
"@strapi/data-transfer": "4.13.
|
|
46
|
-
"@strapi/design-system": "1.
|
|
47
|
-
"@strapi/helper-plugin": "4.13.
|
|
48
|
-
"@strapi/icons": "1.
|
|
49
|
-
"@strapi/permissions": "4.13.
|
|
50
|
-
"@strapi/provider-audit-logs-local": "4.13.
|
|
51
|
-
"@strapi/typescript-utils": "4.13.
|
|
52
|
-
"@strapi/utils": "4.13.
|
|
45
|
+
"@strapi/data-transfer": "4.13.7",
|
|
46
|
+
"@strapi/design-system": "1.10.1",
|
|
47
|
+
"@strapi/helper-plugin": "4.13.7",
|
|
48
|
+
"@strapi/icons": "1.10.1",
|
|
49
|
+
"@strapi/permissions": "4.13.7",
|
|
50
|
+
"@strapi/provider-audit-logs-local": "4.13.7",
|
|
51
|
+
"@strapi/typescript-utils": "4.13.7",
|
|
52
|
+
"@strapi/utils": "4.13.7",
|
|
53
53
|
"axios": "1.5.0",
|
|
54
54
|
"bcryptjs": "2.4.3",
|
|
55
55
|
"browserslist": "^4.17.3",
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
"sift": "16.0.1",
|
|
122
122
|
"style-loader": "3.3.1",
|
|
123
123
|
"styled-components": "5.3.3",
|
|
124
|
-
"typescript": "5.
|
|
124
|
+
"typescript": "5.2.2",
|
|
125
125
|
"webpack": "^5.88.1",
|
|
126
126
|
"webpack-cli": "^5.1.0",
|
|
127
127
|
"webpack-dev-server": "^4.15.0",
|
|
@@ -154,5 +154,5 @@
|
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
},
|
|
157
|
-
"gitHead": "
|
|
157
|
+
"gitHead": "c11abe88239142c58d6fa4aebea8c30637237424"
|
|
158
158
|
}
|
package/scripts/build.js
CHANGED
|
@@ -7,8 +7,7 @@ const { isObject } = require('lodash');
|
|
|
7
7
|
const SpeedMeasurePlugin = require('speed-measure-webpack-plugin');
|
|
8
8
|
|
|
9
9
|
const webpackConfig = require('../webpack.config');
|
|
10
|
-
const { getPlugins } = require('../utils/
|
|
11
|
-
const { createPluginsJs } = require('../utils/create-cache-dir');
|
|
10
|
+
const { getPlugins, createPluginFile } = require('../utils/plugins');
|
|
12
11
|
|
|
13
12
|
// Wrapper that outputs the webpack speed
|
|
14
13
|
const smp = new SpeedMeasurePlugin();
|
|
@@ -30,7 +29,7 @@ const buildAdmin = async () => {
|
|
|
30
29
|
'@strapi/plugin-users-permissions',
|
|
31
30
|
]);
|
|
32
31
|
|
|
33
|
-
await
|
|
32
|
+
await createPluginFile(plugins, path.join(__dirname, '..'));
|
|
34
33
|
|
|
35
34
|
const args = {
|
|
36
35
|
entry,
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const { join } = require('path');
|
|
4
4
|
const fs = require('fs-extra');
|
|
5
|
-
const { getPlugins } = require('../utils/
|
|
6
|
-
const { createPluginsJs } = require('../utils/create-cache-dir');
|
|
5
|
+
const { getPlugins, createPluginFile } = require('../utils/plugins');
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* Write the plugins.js file or copy the plugins-dev.js file if it exists
|
|
@@ -20,7 +19,7 @@ const createFile = async () => {
|
|
|
20
19
|
|
|
21
20
|
const plugins = getPlugins();
|
|
22
21
|
|
|
23
|
-
return
|
|
22
|
+
return createPluginFile(plugins, join(__dirname, '..'));
|
|
24
23
|
};
|
|
25
24
|
|
|
26
25
|
createFile()
|
package/server/bootstrap.js
CHANGED
|
@@ -70,7 +70,7 @@ const syncAPITokensPermissions = async () => {
|
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
72
|
|
|
73
|
-
module.exports = async () => {
|
|
73
|
+
module.exports = async ({ strapi }) => {
|
|
74
74
|
await registerAdminConditions();
|
|
75
75
|
await registerPermissionActions();
|
|
76
76
|
registerModelHooks();
|
|
@@ -93,6 +93,8 @@ module.exports = async () => {
|
|
|
93
93
|
await syncAuthSettings();
|
|
94
94
|
await syncAPITokensPermissions();
|
|
95
95
|
|
|
96
|
+
getService('metrics').startCron(strapi);
|
|
97
|
+
|
|
96
98
|
apiTokenService.checkSaltIsDefined();
|
|
97
99
|
transferService.token.checkSaltIsDefined();
|
|
98
100
|
tokenService.checkSecretIsDefined();
|
|
@@ -20,8 +20,25 @@ const sendDidChangeInterfaceLanguage = async () => {
|
|
|
20
20
|
strapi.telemetry.send('didChangeInterfaceLanguage', { userProperties: { languagesInUse } });
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
+
const sendUpdateProjectInformation = async () => {
|
|
24
|
+
const numberOfActiveAdminUsers = await getService('user').count({ isActive: true });
|
|
25
|
+
const numberOfAdminUsers = await getService('user').count();
|
|
26
|
+
|
|
27
|
+
strapi.telemetry.send('didUpdateProjectInformation', {
|
|
28
|
+
groupProperties: { numberOfActiveAdminUsers, numberOfAdminUsers },
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const startCron = (strapi) => {
|
|
33
|
+
strapi.cron.add({
|
|
34
|
+
'0 0 0 * * *': () => sendUpdateProjectInformation(),
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
|
|
23
38
|
module.exports = {
|
|
24
39
|
sendDidInviteUser,
|
|
25
40
|
sendDidUpdateRolePermissions,
|
|
26
41
|
sendDidChangeInterfaceLanguage,
|
|
42
|
+
sendUpdateProjectInformation,
|
|
43
|
+
startCron,
|
|
27
44
|
};
|