@strapi/admin 4.5.3 → 4.5.4
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/AuthenticatedApp/index.js +13 -2
- package/admin/src/content-manager/components/DynamicZone/components/DynamicComponent.js +1 -1
- package/admin/src/content-manager/components/EditViewDataManagerProvider/index.js +39 -3
- package/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +5 -1
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/recursivelyFindPathsBasedOnCondition.js +8 -1
- package/admin/src/content-manager/components/NonRepeatableComponent/index.js +4 -0
- package/admin/src/content-manager/components/RelationInput/RelationInput.js +4 -9
- package/admin/src/content-manager/components/RelationInputDataManager/RelationInputDataManager.js +1 -1
- package/admin/src/content-manager/components/RepeatableComponent/DraggedItem/index.js +4 -0
- package/admin/src/content-manager/components/SingleTypeFormWrapper/index.js +1 -1
- package/admin/src/content-manager/components/Wysiwyg/Editor.js +1 -1
- package/admin/src/content-manager/hooks/useLazyComponents/index.js +40 -15
- package/admin/src/content-manager/sharedReducers/crudReducer/actions.js +5 -0
- package/admin/src/content-manager/sharedReducers/crudReducer/constants.js +2 -0
- package/admin/src/content-manager/sharedReducers/crudReducer/reducer.js +7 -0
- package/admin/src/core/utils/axiosInstance.js +4 -2
- package/admin/src/hooks/index.js +1 -0
- package/admin/src/hooks/useFetchClient/index.js +23 -0
- package/admin/src/pages/App/index.js +20 -13
- package/admin/src/pages/HomePage/SocialLinks.js +4 -4
- package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +2 -3
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/index.js +23 -18
- package/admin/src/translations/tr.json +485 -5
- package/admin/src/utils/fetchClient.js +45 -0
- package/admin/src/utils/getFetchClient.js +10 -0
- package/admin/src/utils/index.js +1 -0
- package/admin/src/utils/uniqueAdminHash.js +22 -0
- package/build/{1233.80b05d66.chunk.js → 1233.802422fa.chunk.js} +61 -61
- package/build/4306.df40a798.chunk.js +98 -0
- package/build/4318.9283c350.chunk.js +30 -0
- package/build/5057.195a59ff.chunk.js +65 -0
- package/build/{4986.3820d11d.chunk.js → 8176.e929d326.chunk.js} +3 -3
- package/build/{8633.8da5488a.chunk.js → 8633.43ec9042.chunk.js} +1 -1
- package/build/8881.c693411a.chunk.js +245 -0
- package/build/9161.4a0ab137.chunk.js +2119 -0
- package/build/9279.6290c87a.chunk.js +117 -0
- package/build/Admin-authenticatedApp.0da578b8.chunk.js +80 -0
- package/build/{Admin_homePage.54e33c2d.chunk.js → Admin_homePage.8945f71a.chunk.js} +5 -5
- package/build/{Admin_marketplace.8219fda6.chunk.js → Admin_marketplace.ed754a4a.chunk.js} +1 -1
- package/build/{Admin_profilePage.e9fcce92.chunk.js → Admin_profilePage.60ab80bb.chunk.js} +1 -1
- package/build/{Admin_settingsPage.a1a5218b.chunk.js → Admin_settingsPage.6ef8acc9.chunk.js} +6 -6
- package/build/admin-app.a3277e72.chunk.js +112 -0
- package/build/admin-edit-roles-page.f407538c.chunk.js +1 -0
- package/build/admin-edit-users.5547b126.chunk.js +10 -0
- package/build/{admin-users.a0748674.chunk.js → admin-users.e64fb0f1.chunk.js} +1 -1
- package/build/content-manager.f9630c3b.chunk.js +1197 -0
- package/build/content-type-builder-translation-tr-json.949e22eb.chunk.js +1 -0
- package/build/content-type-builder.b132b5f4.chunk.js +145 -0
- package/build/email-settings-page.c6e62f6b.chunk.js +15 -0
- package/build/email-translation-tr-json.8aa034bb.chunk.js +1 -0
- package/build/i18n-translation-tr-json.34ca9d61.chunk.js +1 -0
- package/build/index.html +1 -1
- package/build/{main.f31112a5.js → main.71f24343.js} +371 -371
- package/build/runtime~main.1115f82b.js +2 -0
- package/build/sso-settings-page.feed2f45.chunk.js +1 -0
- package/build/tr-json.eac8bd79.chunk.js +1 -0
- package/build/upload-translation-tr-json.b173223a.chunk.js +1 -0
- package/build/upload.74540aab.chunk.js +64 -0
- package/build/users-advanced-settings-page.0c0b8230.chunk.js +13 -0
- package/build/users-email-settings-page.3126ff8c.chunk.js +28 -0
- package/build/users-permissions-translation-tr-json.9bebc250.chunk.js +1 -0
- package/build/users-providers-settings-page.b7b602e2.chunk.js +33 -0
- package/build/users-roles-settings-page.ce5b582d.chunk.js +30 -0
- package/build/{webhook-edit-page.14ad1e6e.chunk.js → webhook-edit-page.1215a6b7.chunk.js} +1 -1
- package/package.json +11 -11
- package/server/controllers/admin.js +2 -0
- package/server/routes/admin.js +1 -1
- package/server/services/metrics.js +5 -2
- package/utils/get-plugins-path.js +17 -3
- package/build/1920.74a262e7.chunk.js +0 -245
- package/build/2438.61291207.chunk.js +0 -2183
- package/build/2517.9b4940f3.chunk.js +0 -117
- package/build/4306.f03c2b46.chunk.js +0 -98
- package/build/4318.7931eee7.chunk.js +0 -30
- package/build/Admin-authenticatedApp.1e1d3bdd.chunk.js +0 -80
- package/build/admin-app.9cb0abc7.chunk.js +0 -112
- package/build/admin-edit-roles-page.23f15909.chunk.js +0 -1
- package/build/admin-edit-users.283b49ed.chunk.js +0 -10
- package/build/content-manager.01e04e11.chunk.js +0 -1200
- package/build/content-type-builder-translation-tr-json.2e52bc60.chunk.js +0 -1
- package/build/content-type-builder.848a9610.chunk.js +0 -145
- package/build/email-settings-page.d44a57cb.chunk.js +0 -15
- package/build/email-translation-tr-json.87f2feb3.chunk.js +0 -1
- package/build/runtime~main.f91e75cd.js +0 -2
- package/build/sso-settings-page.9f091262.chunk.js +0 -1
- package/build/tr-json.9c44ea0c.chunk.js +0 -1
- package/build/upload.a73936d9.chunk.js +0 -64
- package/build/users-advanced-settings-page.dc23bc56.chunk.js +0 -13
- package/build/users-email-settings-page.6541d372.chunk.js +0 -28
- package/build/users-permissions-translation-tr-json.cdc49a3c.chunk.js +0 -1
- package/build/users-providers-settings-page.e11a2f64.chunk.js +0 -33
- package/build/users-roles-settings-page.445e5e16.chunk.js +0 -30
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[8853],{50832:(ne,F,o)=>{o.r(F),o.d(F,{default:()=>Lr});var r=o(32735),O=o(5141),m=o(88425),R=o(90201),C=o(88369),j=o(41415),H=o(96709),N=o(28356),P=o(99223),D=o(17e3),T=o(27649),x=o(56755),B=o(33827),I=o(94547),b=o(19786),k=o(3685),g=o(88860),K=o(94638),tt=o(19406),U=o(5636),J=o(84968),st=o(58469),Z=o(59677),oe=(s,e,t)=>new Promise((i,u)=>{var l=n=>{try{a(t.next(n))}catch(c){u(c)}},d=n=>{try{a(t.throw(n))}catch(c){u(c)}},a=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);a((t=t.apply(s,e)).next())});const rt=(s,e)=>oe(void 0,null,function*(){try{const{data:t}=yield Z.be.get((0,Z.Gc)("roles"));return e("The roles have loaded successfully"),t}catch(t){throw s({type:"warning",message:{id:"notification.error"}}),new Error("error")}}),nt=(s,e)=>oe(void 0,null,function*(){try{yield Z.be.delete(`${(0,Z.Gc)("roles")}/${s}`)}catch(t){e({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}});var ot=o(60216),E=o.n(ot),ae=o(50563),q=o(36320),at=o(35658),it=o(68625),lt=o(4038),ct=Object.defineProperty,ie=Object.getOwnPropertySymbols,ut=Object.prototype.hasOwnProperty,dt=Object.prototype.propertyIsEnumerable,le=(s,e,t)=>e in s?ct(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,ce=(s,e)=>{for(var t in e||(e={}))ut.call(e,t)&&le(s,t,e[t]);if(ie)for(var t of ie(e))dt.call(e,t)&&le(s,t,e[t]);return s};const ee=({sortedRoles:s,canDelete:e,permissions:t,setRoleToDelete:i,onDelete:u})=>{const{formatMessage:l}=(0,U.useIntl)(),{push:d}=(0,O.useHistory)(),[a,n]=u,c=p=>e&&!["public","authenticated"].includes(p.type),f=p=>{i(p),n(!a)},v=p=>{d(`/settings/${R.Z}/roles/${p}`)};return r.createElement(at.p,null,s==null?void 0:s.map(p=>r.createElement(I.Tr,ce({key:p.name},(0,m.onRowClick)({fn:()=>v(p.id)})),r.createElement(b.Td,{width:"20%"},r.createElement(g.Z,null,p.name)),r.createElement(b.Td,{width:"50%"},r.createElement(g.Z,null,p.description)),r.createElement(b.Td,{width:"30%"},r.createElement(g.Z,null,`${p.nb_users} ${l({id:"global.users",defaultMessage:"users"}).toLowerCase()}`)),r.createElement(b.Td,null,r.createElement(q.k,ce({justifyContent:"end"},m.stopPropagation),r.createElement(m.CheckPermissions,{permissions:t.updateRole},r.createElement(ae.h,{onClick:()=>v(p.id),noBorder:!0,icon:r.createElement(it.Z,null),label:l({id:"app.component.table.edit",defaultMessage:"Edit {target}"},{target:`${p.name}`})})),c(p)&&r.createElement(m.CheckPermissions,{permissions:t.deleteRole},r.createElement(ae.h,{onClick:()=>f(p.id),noBorder:!0,icon:r.createElement(lt.default,null),label:l({id:"global.delete-target",defaultMessage:"Delete {target}"},{target:`${p.name}`})})))))))},mt=ee;ee.defaultProps={canDelete:!1},ee.propTypes={onDelete:E().array.isRequired,permissions:E().object.isRequired,setRoleToDelete:E().func.isRequired,sortedRoles:E().array.isRequired,canDelete:E().bool};var ue=(s,e,t)=>new Promise((i,u)=>{var l=n=>{try{a(t.next(n))}catch(c){u(c)}},d=n=>{try{a(t.throw(n))}catch(c){u(c)}},a=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);a((t=t.apply(s,e)).next())});const pt=()=>{const{trackUsage:s}=(0,m.useTracking)(),{formatMessage:e}=(0,U.useIntl)(),{push:t}=(0,O.useHistory)(),i=(0,m.useNotification)(),{notifyStatus:u}=(0,K.G)(),[{query:l}]=(0,m.useQueryParams)(),d=(l==null?void 0:l._q)||"",[a,n]=(0,r.useState)(!1),[c,f]=(0,r.useState)(!1),[v,p]=(0,r.useState)();(0,m.useFocusWhenNavigate)();const y=(0,J.useQueryClient)(),h=(0,r.useMemo)(()=>({create:C.Z.createRole,read:C.Z.readRoles,update:C.Z.updateRole,delete:C.Z.deleteRole}),[]),{isLoading:L,allowedActions:{canRead:w,canDelete:V}}=(0,m.useRBAC)(h),{isLoading:wr,data:{roles:re},isFetching:Sr}=(0,J.useQuery)("get-roles",()=>rt(i,u),{initialData:{},enabled:w}),et=wr||Sr,Mr=()=>{s("willCreateRole"),t(`/settings/${R.Z}/roles/new`)},Ur=()=>{n(!a)},jr={roles:{id:(0,Z.OB)("Roles.empty"),defaultMessage:"You don't have any roles yet."},search:{id:(0,Z.OB)("Roles.empty.search"),defaultMessage:"No roles match the search."}},Ir=e({id:"global.roles",defaultMessage:"Roles"}),Zr=(0,J.useMutation)(Fr=>nt(Fr,i),{onSuccess(){return ue(this,null,function*(){yield y.invalidateQueries("get-roles")})}}),Nr=()=>ue(void 0,null,function*(){f(!0),yield Zr.mutateAsync(v),n(!a),f(!1)}),W=(0,st.ZP)(re||[],d,{keys:["name","description"]}),xr=d&&!W.length?"search":"roles",Br=4,Gr=((re==null?void 0:re.length)||0)+1;return r.createElement(H.A,null,r.createElement(m.SettingsPageTitle,{name:Ir}),r.createElement(T.o,{"aria-busy":et},r.createElement(N.T,{title:e({id:"global.roles",defaultMessage:"Roles"}),subtitle:e({id:"Settings.roles.list.description",defaultMessage:"List of roles"}),primaryAction:r.createElement(m.CheckPermissions,{permissions:C.Z.createRole},r.createElement(j.z,{onClick:Mr,startIcon:r.createElement(tt.default,null),size:"S"},e({id:(0,Z.OB)("List.button.roles"),defaultMessage:"Add new role"})))}),r.createElement(P.Z,{startActions:r.createElement(m.SearchURLQuery,{label:e({id:"app.component.search.label",defaultMessage:"Search"})})}),r.createElement(D.D,null,!w&&r.createElement(m.NoPermissions,null),(et||L)&&r.createElement(m.LoadingIndicatorPage,null),w&&W&&(W==null?void 0:W.length)?r.createElement(x.i,{colCount:Br,rowCount:Gr},r.createElement(B.h,null,r.createElement(I.Tr,null,r.createElement(b.Th,null,r.createElement(g.Z,{variant:"sigma",textColor:"neutral600"},e({id:"global.name",defaultMessage:"Name"}))),r.createElement(b.Th,null,r.createElement(g.Z,{variant:"sigma",textColor:"neutral600"},e({id:"global.description",defaultMessage:"Description"}))),r.createElement(b.Th,null,r.createElement(g.Z,{variant:"sigma",textColor:"neutral600"},e({id:"global.users",defaultMessage:"Users"}))),r.createElement(b.Th,null,r.createElement(k.T,null,e({id:"global.actions",defaultMessage:"Actions"}))))),r.createElement(mt,{sortedRoles:W,canDelete:V,permissions:C.Z,setRoleToDelete:p,onDelete:[a,n]})):r.createElement(m.EmptyStateLayout,{content:jr[xr]})),r.createElement(m.ConfirmDialog,{isConfirmButtonLoading:c,onConfirm:Nr,onToggleDialog:Ur,isOpen:a})))},gt=()=>r.createElement(m.CheckPagePermissions,{permissions:C.Z.accessRoles},r.createElement(pt,null));var de=o(83281),A=o(27677),S=o(62345),me=o(10369),pe=o(10508),ft=o(29439),ge=o(66456),z=o(15335),G=o(5803),_=o(82069),M=o(92891);const fe=(0,r.createContext)({}),Pe=({children:s,value:e})=>r.createElement(fe.Provider,{value:e},s),te=()=>(0,r.useContext)(fe);Pe.propTypes={children:E().node.isRequired,value:E().object.isRequired};var Q=o(83292),Pt=o(37213),vt=o.n(Pt),Et=o(15738),ht=o.n(Et);const yt=s=>{switch(s){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"}}},Ot=(0,Q.default)(S.x)`
|
|
2
|
+
margin: -1px;
|
|
3
|
+
border-radius: ${({theme:s})=>s.spaces[1]} 0 0 ${({theme:s})=>s.spaces[1]};
|
|
4
|
+
`;function se({route:s}){const{formatMessage:e}=(0,U.useIntl)(),{method:t,handler:i,path:u}=s,l=u?ht()(u.split("/")):[],[d="",a=""]=i?i.split("."):[],n=yt(s.method);return r.createElement(A.K,{spacing:2},r.createElement(g.Z,{variant:"delta",as:"h3"},e({id:"users-permissions.BoundRoute.title",defaultMessage:"Bound route to"}),"\xA0",r.createElement("span",null,d),r.createElement(g.Z,{variant:"delta",textColor:"primary600"},".",a)),r.createElement(A.K,{horizontal:!0,hasRadius:!0,background:"neutral0",borderColor:"neutral200",spacing:0},r.createElement(Ot,{background:n.background,borderColor:n.border,padding:2},r.createElement(g.Z,{fontWeight:"bold",textColor:n.text},t)),r.createElement(S.x,{paddingLeft:2,paddingRight:2},vt()(l,c=>r.createElement(g.Z,{key:c,textColor:c.includes(":")?"neutral600":"neutral900"},"/",c)))))}se.defaultProps={route:{handler:"Nocontroller.error",method:"GET",path:"/there-is-no-path"}},se.propTypes={route:E().shape({handler:E().string,method:E().string,path:E().string})};const Rt=se,Ct=()=>{const{formatMessage:s}=(0,U.useIntl)(),{selectedAction:e,routes:t}=te(),i=(0,M.without)(e.split("."),"controllers"),u=(0,M.get)(t,i[0]),l=i.slice(1).join("."),d=(0,M.isEmpty)(u)?[]:u.filter(a=>a.handler.endsWith(l));return r.createElement(G.P,{col:5,background:"neutral150",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,style:{minHeight:"100%"}},e?r.createElement(A.K,{spacing:2},d.map((a,n)=>r.createElement(Rt,{key:n,route:a}))):r.createElement(A.K,{spacing:2},r.createElement(g.Z,{variant:"delta",as:"h3"},s({id:"users-permissions.Policies.header.title",defaultMessage:"Advanced settings"})),r.createElement(g.Z,{as:"p",textColor:"neutral600"},s({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"}))))};var bt=o(83828),Dt=o(61762),Tt=o(89966),At=o(23940),Lt=o.n(At);function wt(s){switch(s){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 Lt()(s.replace("api::","").replace("plugin::",""))}}const St=wt;var Mt=o(98978),ve=o.n(Mt),Ee=o(8284),Ut=o(45112);const he=Q.css`
|
|
5
|
+
background: ${s=>s.theme.colors.primary100};
|
|
6
|
+
svg {
|
|
7
|
+
opacity: 1;
|
|
8
|
+
}
|
|
9
|
+
`,jt=(0,Q.default)(S.x)`
|
|
10
|
+
display: flex;
|
|
11
|
+
justify-content: space-between;
|
|
12
|
+
align-items: center;
|
|
13
|
+
|
|
14
|
+
svg {
|
|
15
|
+
opacity: 0;
|
|
16
|
+
path {
|
|
17
|
+
fill: ${s=>s.theme.colors.primary600};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Show active style both on hover and when the action is selected */
|
|
22
|
+
${s=>s.isActive&&he}
|
|
23
|
+
&:hover {
|
|
24
|
+
${he}
|
|
25
|
+
}
|
|
26
|
+
`,It=Q.default.div`
|
|
27
|
+
flex: 1;
|
|
28
|
+
align-self: center;
|
|
29
|
+
border-top: 1px solid ${({theme:s})=>s.colors.neutral150};
|
|
30
|
+
`,ye=({subCategory:s})=>{const{formatMessage:e}=(0,U.useIntl)(),{onChange:t,onChangeSelectAll:i,onSelectedAction:u,selectedAction:l,modifiedData:d}=te(),a=(0,r.useMemo)(()=>(0,M.get)(d,s.name,{}),[d,s]),n=(0,r.useMemo)(()=>Object.values(a).every(p=>p.enabled===!0),[a]),c=(0,r.useMemo)(()=>Object.values(a).some(p=>p.enabled===!0)&&!n,[a,n]),f=(0,r.useCallback)(({target:{name:p}})=>{i({target:{name:p,value:!n}})},[n,i]),v=(0,r.useCallback)(p=>l===p,[l]);return r.createElement(S.x,null,r.createElement(q.k,{justifyContent:"space-between",alignItems:"center"},r.createElement(S.x,{paddingRight:4},r.createElement(g.Z,{variant:"sigma",textColor:"neutral600"},s.label)),r.createElement(It,null),r.createElement(S.x,{paddingLeft:4},r.createElement(Ee.X,{name:s.name,value:n,onValueChange:p=>f({target:{name:s.name,value:p}}),indeterminate:c},e({id:"app.utils.select-all",defaultMessage:"Select all"})))),r.createElement(q.k,{paddingTop:6,paddingBottom:6},r.createElement(z.r,{gap:2,style:{flex:1}},s.actions.map(p=>{const y=`${p.name}.enabled`;return r.createElement(G.P,{col:6,key:p.name},r.createElement(jt,{isActive:v(p.name),padding:2,hasRadius:!0},r.createElement(Ee.X,{value:(0,M.get)(d,y,!1),name:y,onValueChange:h=>t({target:{name:y,value:h}})},p.label),r.createElement("button",{type:"button","data-testid":"action-cog",onClick:()=>u(p.name),style:{display:"inline-flex",alignItems:"center"}},r.createElement(Ut.Z,null))))}))))};ye.propTypes={subCategory:E().object.isRequired};const Zt=ye;var Nt=Object.defineProperty,xt=Object.defineProperties,Bt=Object.getOwnPropertyDescriptors,Oe=Object.getOwnPropertySymbols,Gt=Object.prototype.hasOwnProperty,Ft=Object.prototype.propertyIsEnumerable,Re=(s,e,t)=>e in s?Nt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,_t=(s,e)=>{for(var t in e||(e={}))Gt.call(e,t)&&Re(s,t,e[t]);if(Oe)for(var t of Oe(e))Ft.call(e,t)&&Re(s,t,e[t]);return s},$t=(s,e)=>xt(s,Bt(e));const Ce=({name:s,permissions:e})=>{const t=(0,r.useMemo)(()=>ve()(Object.values(e.controllers).reduce((i,u,l)=>{const d=`${s}.controllers.${Object.keys(e.controllers)[l]}`,a=ve()(Object.keys(u).reduce((n,c)=>[...n,$t(_t({},u[c]),{label:c,name:`${d}.${c}`})],[]),"label");return[...i,{actions:a,label:Object.keys(e.controllers)[l],name:d}]},[]),"label"),[s,e]);return r.createElement(S.x,{padding:6},t.map(i=>r.createElement(Zt,{key:i.name,subCategory:i})))};Ce.propTypes={name:E().string.isRequired,permissions:E().object.isRequired};const Vt=Ce;var kt=Object.defineProperty,Kt=Object.defineProperties,Wt=Object.getOwnPropertyDescriptors,be=Object.getOwnPropertySymbols,Ht=Object.prototype.hasOwnProperty,zt=Object.prototype.propertyIsEnumerable,De=(s,e,t)=>e in s?kt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Qt=(s,e)=>{for(var t in e||(e={}))Ht.call(e,t)&&De(s,t,e[t]);if(be)for(var t of be(e))zt.call(e,t)&&De(s,t,e[t]);return s},Xt=(s,e)=>Kt(s,Wt(e));const Yt=(s,e)=>{const t=Object.keys(e).sort().map(i=>({name:i,isOpen:!1}));return Xt(Qt({},s),{collapses:t})};var X=o(97889),Jt=Object.defineProperty,qt=Object.defineProperties,es=Object.getOwnPropertyDescriptors,Te=Object.getOwnPropertySymbols,ts=Object.prototype.hasOwnProperty,ss=Object.prototype.propertyIsEnumerable,Ae=(s,e,t)=>e in s?Jt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Le=(s,e)=>{for(var t in e||(e={}))ts.call(e,t)&&Ae(s,t,e[t]);if(Te)for(var t of Te(e))ss.call(e,t)&&Ae(s,t,e[t]);return s},we=(s,e)=>qt(s,es(e));const rs={collapses:[]},ns=(s,e)=>(0,X.default)(s,t=>{switch(e.type){case"TOGGLE_COLLAPSE":{t.collapses=s.collapses.map((i,u)=>u===e.index?we(Le({},i),{isOpen:!i.isOpen}):we(Le({},i),{isOpen:!1}));break}default:return t}}),os=()=>{const{modifiedData:s}=te(),{formatMessage:e}=(0,U.useIntl)(),[{collapses:t},i]=(0,r.useReducer)(ns,rs,l=>Yt(l,s)),u=l=>i({type:"TOGGLE_COLLAPSE",index:l});return r.createElement(A.K,{spacing:1},t.map((l,d)=>r.createElement(bt.U,{expanded:l.isOpen,onToggle:()=>u(d),key:l.name,variant:d%2===0?"secondary":void 0},r.createElement(Dt.B,{title:St(l.name),description:e({id:"users-permissions.Plugin.permissions.plugins.description",defaultMessage:"Define all allowed actions for the {name} plugin."},{name:l.name}),variant:d%2?"primary":"secondary"}),r.createElement(Tt.v,null,r.createElement(S.x,null,r.createElement(Vt,{permissions:s[l.name],name:l.name}))))))};var as=Object.defineProperty,is=Object.defineProperties,ls=Object.getOwnPropertyDescriptors,Se=Object.getOwnPropertySymbols,cs=Object.prototype.hasOwnProperty,us=Object.prototype.propertyIsEnumerable,Me=(s,e,t)=>e in s?as(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,ds=(s,e)=>{for(var t in e||(e={}))cs.call(e,t)&&Me(s,t,e[t]);if(Se)for(var t of Se(e))us.call(e,t)&&Me(s,t,e[t]);return s},ms=(s,e)=>is(s,ls(e));const ps={initialData:{},modifiedData:{},routes:{},selectedAction:"",policies:[]},gs=(s,e)=>(0,X.default)(s,t=>{switch(e.type){case"ON_CHANGE":{const i=e.keys.length,u=e.keys[i-1]==="enabled";if(e.value&&u){const l=(0,M.take)(e.keys,i-1).join(".");t.selectedAction=l}(0,M.set)(t,["modifiedData",...e.keys],e.value);break}case"ON_CHANGE_SELECT_ALL":{const i=["modifiedData",...e.keys],u=(0,M.get)(s,i,{}),l=Object.keys(u).reduce((d,a)=>(d[a]=ms(ds({},u[a]),{enabled:e.value}),d),{});(0,M.set)(t,i,l);break}case"ON_RESET":{t.modifiedData=s.initialData;break}case"ON_SUBMIT_SUCCEEDED":{t.initialData=s.modifiedData;break}case"SELECT_ACTION":{const{actionToSelect:i}=e;t.selectedAction=i===s.selectedAction?"":i;break}default:return t}});var fs=Object.defineProperty,Ps=Object.defineProperties,vs=Object.getOwnPropertyDescriptors,Ue=Object.getOwnPropertySymbols,Es=Object.prototype.hasOwnProperty,hs=Object.prototype.propertyIsEnumerable,je=(s,e,t)=>e in s?fs(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,ys=(s,e)=>{for(var t in e||(e={}))Es.call(e,t)&&je(s,t,e[t]);if(Ue)for(var t of Ue(e))hs.call(e,t)&&je(s,t,e[t]);return s},Os=(s,e)=>Ps(s,vs(e));const Rs=(s,e,t)=>Os(ys({},s),{initialData:e,modifiedData:e,routes:t});var Cs=Object.defineProperty,bs=Object.defineProperties,Ds=Object.getOwnPropertyDescriptors,Ie=Object.getOwnPropertySymbols,Ts=Object.prototype.hasOwnProperty,As=Object.prototype.propertyIsEnumerable,Ze=(s,e,t)=>e in s?Cs(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Ls=(s,e)=>{for(var t in e||(e={}))Ts.call(e,t)&&Ze(s,t,e[t]);if(Ie)for(var t of Ie(e))As.call(e,t)&&Ze(s,t,e[t]);return s},ws=(s,e)=>bs(s,Ds(e));const Ne=(0,r.forwardRef)(({permissions:s,routes:e},t)=>{const{formatMessage:i}=(0,U.useIntl)(),[u,l]=(0,r.useReducer)(gs,ps,f=>Rs(f,s,e));(0,r.useImperativeHandle)(t,()=>({getPermissions(){return{permissions:u.modifiedData}},resetForm(){l({type:"ON_RESET"})},setFormAfterSubmit(){l({type:"ON_SUBMIT_SUCCEEDED"})}}));const d=({target:{name:f,value:v}})=>l({type:"ON_CHANGE",keys:f.split("."),value:v==="empty__string_value"?"":v}),a=({target:{name:f,value:v}})=>l({type:"ON_CHANGE_SELECT_ALL",keys:f.split("."),value:v}),n=f=>l({type:"SELECT_ACTION",actionToSelect:f}),c=ws(Ls({},u),{onChange:d,onChangeSelectAll:a,onSelectedAction:n});return r.createElement(Pe,{value:c},r.createElement(z.r,{gap:0,shadow:"filterShadow",hasRadius:!0,background:"neutral0"},r.createElement(G.P,{col:7,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},r.createElement(A.K,{spacing:6},r.createElement(A.K,{spacing:2},r.createElement(g.Z,{variant:"delta",as:"h2"},i({id:(0,_.Z)("Plugins.header.title"),defaultMessage:"Permissions"})),r.createElement(g.Z,{as:"p",textColor:"neutral600"},i({id:(0,_.Z)("Plugins.header.description"),defaultMessage:"Only actions bound by a route are listed below."}))),r.createElement(os,null))),r.createElement(Ct,null)))});Ne.propTypes={permissions:E().object.isRequired,routes:E().object.isRequired};const xe=(0,r.memo)(Ne),Xr={isLoading:!0,modifiedData:{}},Yr=(s,e)=>produce(s,t=>{switch(e.type){case"GET_DATA":{t.isLoading=!0,t.modifiedData={};break}case"GET_DATA_SUCCEEDED":{t.isLoading=!1,t.modifiedData=e.data;break}case"GET_DATA_ERROR":{t.isLoading=!0;break}case"ON_SUBMIT_SUCCEEDED":{t.modifiedData=e.data;break}default:return t}}),Jr=null;var Ss=o(98399),Ms=(s,e,t)=>new Promise((i,u)=>{var l=n=>{try{a(t.next(n))}catch(c){u(c)}},d=n=>{try{a(t.throw(n))}catch(c){u(c)}},a=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);a((t=t.apply(s,e)).next())});const qr=(s,e)=>{const{isLoading:t,allowedActions:i}=useRBAC(e),[{isLoading:u,modifiedData:l},d]=useReducer(reducer,initialState),a=useNotification(),n=useRef(!0),c=new AbortController,{signal:f}=c;useEffect(()=>(t||(()=>Ms(void 0,null,function*(){try{d({type:"GET_DATA"});const y=yield request(getRequestURL(s),{method:"GET",signal:f});d({type:"GET_DATA_SUCCEEDED",data:y})}catch(y){n.current&&(d({type:"GET_DATA_ERROR"}),Ss.error(y),a({type:"warning",message:{id:"notification.error"}}))}}))(),()=>{c.abort(),n.current=!1}),[t,s]);const v=useCallback(p=>{d({type:"ON_SUBMIT_SUCCEEDED",data:p})},[]);return{allowedActions:i,dispatchSubmitSucceeded:v,isLoading:u,isLoadingForPermissions:t,modifiedData:l}},en=null;var Us=Object.defineProperty,js=Object.defineProperties,Is=Object.getOwnPropertyDescriptors,Be=Object.getOwnPropertySymbols,Zs=Object.prototype.hasOwnProperty,Ns=Object.prototype.propertyIsEnumerable,Ge=(s,e,t)=>e in s?Us(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,xs=(s,e)=>{for(var t in e||(e={}))Zs.call(e,t)&&Ge(s,t,e[t]);if(Be)for(var t of Be(e))Ns.call(e,t)&&Ge(s,t,e[t]);return s},Bs=(s,e)=>js(s,Is(e));const tn=(s,e)=>Bs(xs({},s),{isLoading:e}),sn=null,rn={roles:[],isLoading:!0},nn=(s,e)=>produce(s,t=>{switch(e.type){case"GET_DATA":{t.isLoading=!0,t.roles=[];break}case"GET_DATA_SUCCEEDED":{t.roles=e.data,t.isLoading=!1;break}case"GET_DATA_ERROR":{t.isLoading=!1;break}default:return t}}),on=null;var Gs=(s,e,t)=>new Promise((i,u)=>{var l=n=>{try{a(t.next(n))}catch(c){u(c)}},d=n=>{try{a(t.throw(n))}catch(c){u(c)}},a=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);a((t=t.apply(s,e)).next())});const an=(s=!0)=>{const[{roles:e,isLoading:t},i]=useReducer(reducer,initialState,()=>init(initialState,s)),u=useNotification(),l=useRef(!0),d=new AbortController,{signal:a}=d;useEffect(()=>(s&&n(),()=>{d.abort(),l.current=!1}),[s]);const n=()=>Gs(void 0,null,function*(){try{i({type:"GET_DATA"});const{roles:c}=yield request(`/${pluginId}/roles`,{method:"GET",signal:a});i({type:"GET_DATA_SUCCEEDED",data:c})}catch(c){const f=get(c,["response","payload","message"],"An error occured");l.current&&(i({type:"GET_DATA_ERROR"}),f!=="Forbidden"&&u({type:"warning",message:f}))}});return{roles:e,isLoading:t,getData:n}},ln=null;var Fs=Object.defineProperty,_s=Object.defineProperties,$s=Object.getOwnPropertyDescriptors,Fe=Object.getOwnPropertySymbols,Vs=Object.prototype.hasOwnProperty,ks=Object.prototype.propertyIsEnumerable,_e=(s,e,t)=>e in s?Fs(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Ks=(s,e)=>{for(var t in e||(e={}))Vs.call(e,t)&&_e(s,t,e[t]);if(Fe)for(var t of Fe(e))ks.call(e,t)&&_e(s,t,e[t]);return s},Ws=(s,e)=>_s(s,$s(e));const Hs=(s,e)=>Ws(Ks({},s),{isLoading:e});var Y=o(8917);const $e={permissions:{},routes:{},isLoading:!0},zs=(s,e)=>(0,X.default)(s,t=>{switch(e.type){case"GET_DATA":{t.isLoading=!0,t.permissions={},t.routes={};break}case"GET_DATA_SUCCEEDED":{t.permissions=e.permissions,t.routes=e.routes,t.isLoading=!1;break}case"GET_DATA_ERROR":{t.isLoading=!1;break}default:return t}});var Ve=(s,e,t)=>new Promise((i,u)=>{var l=n=>{try{a(t.next(n))}catch(c){u(c)}},d=n=>{try{a(t.throw(n))}catch(c){u(c)}},a=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);a((t=t.apply(s,e)).next())});const ke=(s=!0)=>{const e=(0,m.useNotification)(),[{permissions:t,routes:i,isLoading:u},l]=(0,r.useReducer)(zs,$e,()=>Hs($e,s)),d=(0,r.useCallback)(()=>Ve(void 0,null,function*(){try{l({type:"GET_DATA"});const[{permissions:a},{routes:n}]=yield Promise.all([`/${R.Z}/permissions`,`/${R.Z}/routes`].map(c=>Ve(void 0,null,function*(){return(yield Y.Z.get(c)).data})));l({type:"GET_DATA_SUCCEEDED",permissions:(0,Z.YX)(a),routes:n})}catch(a){const n=(0,M.get)(a,["response","payload","message"],"An error occured");l({type:"GET_DATA_ERROR"}),n!=="Forbidden"&&e({type:"warning",message:n})}}),[e]);return(0,r.useEffect)(()=>{s&&d()},[d,s]),{permissions:t,routes:i,getData:d,isLoading:u}},Qs={role:{},isLoading:!0},Xs=(s,e)=>(0,X.default)(s,t=>{switch(e.type){case"GET_DATA_SUCCEEDED":{t.role=e.role,t.isLoading=!1;break}case"GET_DATA_ERROR":{t.isLoading=!1;break}case"ON_SUBMIT_SUCCEEDED":{t.role.name=e.name,t.role.description=e.description;break}default:return t}});var Ys=o(98399),Js=Object.defineProperty,qs=Object.defineProperties,er=Object.getOwnPropertyDescriptors,Ke=Object.getOwnPropertySymbols,tr=Object.prototype.hasOwnProperty,sr=Object.prototype.propertyIsEnumerable,We=(s,e,t)=>e in s?Js(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,He=(s,e)=>{for(var t in e||(e={}))tr.call(e,t)&&We(s,t,e[t]);if(Ke)for(var t of Ke(e))sr.call(e,t)&&We(s,t,e[t]);return s},rr=(s,e)=>qs(s,er(e)),nr=(s,e,t)=>new Promise((i,u)=>{var l=n=>{try{a(t.next(n))}catch(c){u(c)}},d=n=>{try{a(t.throw(n))}catch(c){u(c)}},a=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);a((t=t.apply(s,e)).next())});const or=s=>{const[e,t]=(0,r.useReducer)(Xs,Qs),i=(0,m.useNotification)(),u=(0,r.useRef)(null);(0,r.useEffect)(()=>(u.current=!0,s?l(s):t({type:"GET_DATA_SUCCEEDED",role:{}}),()=>u.current=!1),[s]);const l=a=>nr(void 0,null,function*(){try{const{data:{role:n}}=yield Y.Z.get(`/${R.Z}/roles/${a}`);u.current&&t({type:"GET_DATA_SUCCEEDED",role:n})}catch(n){Ys.error(n),t({type:"GET_DATA_ERROR"}),i({type:"warning",message:{id:"notification.error"}})}}),d=(0,r.useCallback)(a=>{t(He({type:"ON_SUBMIT_SUCCEEDED"},a))},[]);return rr(He({},e),{onSubmitSucceeded:d})};var $=o(5173);const ar=$.Ry().shape({name:$.Z_().required(m.translatedErrors.required),description:$.Z_().required(m.translatedErrors.required)});var ir=o(98399),lr=Object.defineProperty,cr=Object.defineProperties,ur=Object.getOwnPropertyDescriptors,ze=Object.getOwnPropertySymbols,dr=Object.prototype.hasOwnProperty,mr=Object.prototype.propertyIsEnumerable,Qe=(s,e,t)=>e in s?lr(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Xe=(s,e)=>{for(var t in e||(e={}))dr.call(e,t)&&Qe(s,t,e[t]);if(ze)for(var t of ze(e))mr.call(e,t)&&Qe(s,t,e[t]);return s},pr=(s,e)=>cr(s,ur(e)),gr=(s,e,t)=>new Promise((i,u)=>{var l=n=>{try{a(t.next(n))}catch(c){u(c)}},d=n=>{try{a(t.throw(n))}catch(c){u(c)}},a=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);a((t=t.apply(s,e)).next())});const fr=()=>{const{formatMessage:s}=(0,U.useIntl)(),[e,t]=(0,r.useState)(!1),i=(0,m.useNotification)(),{lockApp:u,unlockApp:l}=(0,m.useOverlayBlocker)(),{params:{id:d}}=(0,O.useRouteMatch)(`/settings/${R.Z}/roles/:id`),{isLoading:a,routes:n}=ke(),{role:c,onSubmitSucceeded:f,isLoading:v}=or(d),p=(0,r.useRef)(),y=h=>gr(void 0,null,function*(){u(),t(!0);try{const L=p.current.getPermissions();yield Y.Z.put(`/${R.Z}/roles/${d}`,pr(Xe(Xe({},h),L),{users:[]})),f({name:h.name,description:h.description}),i({type:"success",message:{id:(0,_.Z)("Settings.roles.edited"),defaultMessage:"Role edited"}})}catch(L){ir.error(L),i({type:"warning",message:{id:"notification.error",defaultMessage:"An error occurred"}})}t(!1),l()});return v?r.createElement(m.LoadingIndicatorPage,null):r.createElement(T.o,null,r.createElement(m.SettingsPageTitle,{name:"Roles"}),r.createElement(de.Formik,{enableReinitialize:!0,initialValues:{name:c.name,description:c.description},onSubmit:y,validationSchema:ar},({handleSubmit:h,values:L,handleChange:w,errors:V})=>r.createElement(m.Form,{noValidate:!0,onSubmit:h},r.createElement(N.T,{primaryAction:!a&&r.createElement(j.z,{disabled:c.code==="strapi-super-admin",type:"submit",loading:e,startIcon:r.createElement(ge.Z,null)},s({id:"global.save",defaultMessage:"Save"})),title:c.name,subtitle:c.description,navigationAction:r.createElement(m.Link,{startIcon:r.createElement(ft.Z,null),to:"/settings/users-permissions/roles"},s({id:"global.back",defaultMessage:"Back"}))}),r.createElement(D.D,null,r.createElement(A.K,{spacing:7},r.createElement(S.x,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},r.createElement(A.K,{spacing:4},r.createElement(g.Z,{variant:"delta",as:"h2"},s({id:(0,_.Z)("EditPage.form.roles"),defaultMessage:"Role details"})),r.createElement(z.r,{gap:4},r.createElement(G.P,{col:6},r.createElement(me.o,{name:"name",value:L.name||"",onChange:w,label:s({id:"global.name",defaultMessage:"Name"}),error:V.name?s({id:V.name,defaultMessage:"Invalid value"}):null})),r.createElement(G.P,{col:6},r.createElement(pe.g,{name:"description",value:L.description||"",onChange:w,label:s({id:"global.description",defaultMessage:"Description"}),error:V.description?s({id:V.description,defaultMessage:"Invalid value"}):null}))))),!a&&r.createElement(xe,{ref:p,permissions:c.permissions,routes:n}))))))},Pr=()=>r.createElement(m.CheckPagePermissions,{permissions:C.Z.updateRole},r.createElement(fr,null)),vr=$.Ry().shape({name:$.Z_().required(m.translatedErrors.required),description:$.Z_().required(m.translatedErrors.required)});var Er=o(98399),hr=Object.defineProperty,yr=Object.defineProperties,Or=Object.getOwnPropertyDescriptors,Ye=Object.getOwnPropertySymbols,Rr=Object.prototype.hasOwnProperty,Cr=Object.prototype.propertyIsEnumerable,Je=(s,e,t)=>e in s?hr(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,qe=(s,e)=>{for(var t in e||(e={}))Rr.call(e,t)&&Je(s,t,e[t]);if(Ye)for(var t of Ye(e))Cr.call(e,t)&&Je(s,t,e[t]);return s},br=(s,e)=>yr(s,Or(e)),Dr=(s,e,t)=>new Promise((i,u)=>{var l=n=>{try{a(t.next(n))}catch(c){u(c)}},d=n=>{try{a(t.throw(n))}catch(c){u(c)}},a=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);a((t=t.apply(s,e)).next())});const Tr=()=>{const{formatMessage:s}=(0,U.useIntl)(),[e,t]=(0,r.useState)(!1),i=(0,m.useNotification)(),{goBack:u}=(0,O.useHistory)(),{lockApp:l,unlockApp:d}=(0,m.useOverlayBlocker)(),{isLoading:a,permissions:n,routes:c}=ke(),{trackUsage:f}=(0,m.useTracking)(),v=(0,r.useRef)(),p=y=>Dr(void 0,null,function*(){l(),t(!0);try{const h=v.current.getPermissions();yield Y.Z.post(`/${R.Z}/roles`,br(qe(qe({},y),h),{users:[]})),f("didCreateRole"),i({type:"success",message:{id:(0,_.Z)("Settings.roles.created"),defaultMessage:"Role created"}}),u()}catch(h){Er.error(h),i({type:"warning",message:{id:"notification.error",defaultMessage:"An error occurred"}})}t(!1),d()});return r.createElement(T.o,null,r.createElement(m.SettingsPageTitle,{name:"Roles"}),r.createElement(de.Formik,{enableReinitialize:!0,initialValues:{name:"",description:""},onSubmit:p,validationSchema:vr},({handleSubmit:y,values:h,handleChange:L,errors:w})=>r.createElement(m.Form,{noValidate:!0,onSubmit:y},r.createElement(N.T,{primaryAction:!a&&r.createElement(j.z,{type:"submit",loading:e,startIcon:r.createElement(ge.Z,null)},s({id:"global.save",defaultMessage:"Save"})),title:s({id:"Settings.roles.create.title",defaultMessage:"Create a role"}),subtitle:s({id:"Settings.roles.create.description",defaultMessage:"Define the rights given to the role"})}),r.createElement(D.D,null,r.createElement(A.K,{spacing:7},r.createElement(S.x,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},r.createElement(A.K,{spacing:4},r.createElement(g.Z,{variant:"delta",as:"h2"},s({id:(0,_.Z)("EditPage.form.roles"),defaultMessage:"Role details"})),r.createElement(z.r,{gap:4},r.createElement(G.P,{col:6},r.createElement(me.o,{name:"name",value:h.name||"",onChange:L,label:s({id:"global.name",defaultMessage:"Name"}),error:w.name?s({id:w.name,defaultMessage:"Invalid value"}):null})),r.createElement(G.P,{col:6},r.createElement(pe.g,{name:"description",value:h.description||"",onChange:L,label:s({id:"global.description",defaultMessage:"Description"}),error:w.description?s({id:w.description,defaultMessage:"Invalid value"}):null}))))),!a&&r.createElement(xe,{ref:v,permissions:n,routes:c}))))))},Ar=()=>r.createElement(m.CheckPagePermissions,{permissions:C.Z.createRole},r.createElement(Tr,null)),Lr=()=>r.createElement(m.CheckPagePermissions,{permissions:C.Z.accessRoles},r.createElement(O.Switch,null,r.createElement(O.Route,{path:`/settings/${R.Z}/roles/new`,component:Ar,exact:!0}),r.createElement(O.Route,{path:`/settings/${R.Z}/roles/:id`,component:Pr,exact:!0}),r.createElement(O.Route,{path:`/settings/${R.Z}/roles`,component:gt,exact:!0}),r.createElement(O.Route,{path:"",component:m.NotFound})))},8917:(ne,F,o)=>{o.d(F,{Z:()=>N});var r=o(43653),O=o.n(r),m=o(88425),R=o.n(m),C=(P,D,T)=>new Promise((x,B)=>{var I=g=>{try{k(T.next(g))}catch(K){B(K)}},b=g=>{try{k(T.throw(g))}catch(K){B(K)}},k=g=>g.done?x(g.value):Promise.resolve(g.value).then(I,b);k((T=T.apply(P,D)).next())});const j=O().create({baseURL:"http://localhost:1337"});j.interceptors.request.use(P=>C(void 0,null,function*(){return P.headers={Authorization:`Bearer ${m.auth.getToken()}`,Accept:"application/json","Content-Type":"application/json"},P}),P=>{Promise.reject(P)}),j.interceptors.response.use(P=>P,P=>{var D;throw((D=P.response)==null?void 0:D.status)===401&&(m.auth.clearAppStorage(),window.location.reload()),P});const N=(0,m.wrapAxiosInstance)(j)},59677:(ne,F,o)=>{o.d(F,{be:()=>r.Z,YX:()=>R,Gc:()=>H,OB:()=>N.Z});var r=o(8917),O=o(92891);const R=P=>Object.keys(P).reduce((D,T)=>{const x=P[T].controllers,B=Object.keys(x).reduce((I,b)=>((0,O.isEmpty)(x[b])||(I[b]=x[b]),I),{});return(0,O.isEmpty)(B)||(D[T]={controllers:B}),D},{});var C=o(90201);const H=P=>`/${C.Z}/${P}`;var N=o(82069)}}]);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{41513:(Pe,k,n)=>{n.d(k,{Z:()=>ie});var e=n(32735),o=n(88425),X=n(27649),T=n(84968),F=n(5141),K=n(
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{41513:(Pe,k,n)=>{n.d(k,{Z:()=>ie});var e=n(32735),o=n(88425),X=n(27649),T=n(84968),F=n(5141),K=n(49737),P=n(17247),f=n(60216),c=n.n(f),v=n(29439),W=n(66456),Q=Object.defineProperty,E=Object.getOwnPropertySymbols,O=Object.prototype.hasOwnProperty,y=Object.prototype.propertyIsEnumerable,M=(a,t,r)=>t in a?Q(a,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):a[t]=r,Oe=(a,t)=>{for(var r in t||(t={}))O.call(t,r)&&M(a,r,t[r]);if(E)for(var r of E(t))y.call(t,r)&&M(a,r,t[r]);return a};function ue(a){return e.createElement("svg",Oe({width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},a),e.createElement("path",{d:"M4 20.252V3.748a1 1 0 011.507-.862l14.028 8.252a1 1 0 010 1.724L5.507 21.113A1 1 0 014 20.252z",fill:"#212134"}))}var at=n(28356),me=n(17e3),pe=n(62345),ge=n(41415),V=n(27677),Me=n(10369),xe=n(15335),G=n(5803),J=n(83281),q=n(5636),je=n(76437),Z=n(88860),Be=n(83292),fe=n(44426),Fe=n(8284),Ke=n(23940),We=n.n(Ke);const ve=({disabledEvents:a,name:t,events:r,inputValue:s,handleChange:g,handleChangeAll:I})=>{const B=r.filter(m=>!a.includes(m)),i=s.length===B.length,b=s.length>0,R=({target:{name:m}})=>{I({target:{name:m,value:!i}})};return e.createElement("tr",null,e.createElement("td",null,e.createElement(Fe.X,{indeterminate:b&&!i,"aria-label":"Select all entries",name:t,onChange:R,value:i},We()(t))),r.map(m=>e.createElement("td",{key:m},e.createElement(fe.C,{disabled:a.includes(m),"aria-label":m,name:m,value:s.includes(m),onValueChange:S=>g({target:{name:m,value:S}})}))))};ve.defaultProps={disabledEvents:[],events:[],inputValue:[],handleChange(){},handleChangeAll(){}},ve.propTypes={disabledEvents:c().array,events:c().array,inputValue:c().array,handleChange:c().func,handleChangeAll:c().func,name:c().string.isRequired};const Ue=ve,le=a=>a.reduce((t,r)=>{const s=r.split(".")[0];return t[s]||(t[s]=[]),t[s].push(r),t},{}),Se=Be.default.table`
|
|
2
2
|
td {
|
|
3
3
|
height: ${52/16}rem;
|
|
4
4
|
width: 10%;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/admin",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.4",
|
|
4
4
|
"description": "Strapi Admin",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -51,13 +51,13 @@
|
|
|
51
51
|
"@fortawesome/free-solid-svg-icons": "^5.15.3",
|
|
52
52
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
53
53
|
"@pmmmwh/react-refresh-webpack-plugin": "0.5.7",
|
|
54
|
-
"@strapi/babel-plugin-switch-ee-ce": "4.5.
|
|
54
|
+
"@strapi/babel-plugin-switch-ee-ce": "4.5.4",
|
|
55
55
|
"@strapi/design-system": "1.4.0",
|
|
56
|
-
"@strapi/helper-plugin": "4.5.
|
|
56
|
+
"@strapi/helper-plugin": "4.5.4",
|
|
57
57
|
"@strapi/icons": "1.4.0",
|
|
58
|
-
"@strapi/permissions": "4.5.
|
|
59
|
-
"@strapi/typescript-utils": "4.5.
|
|
60
|
-
"@strapi/utils": "4.5.
|
|
58
|
+
"@strapi/permissions": "4.5.4",
|
|
59
|
+
"@strapi/typescript-utils": "4.5.4",
|
|
60
|
+
"@strapi/utils": "4.5.4",
|
|
61
61
|
"axios": "0.27.2",
|
|
62
62
|
"babel-loader": "8.2.5",
|
|
63
63
|
"babel-plugin-styled-components": "2.0.2",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"markdown-it-sup": "1.0.0",
|
|
103
103
|
"match-sorter": "^4.0.2",
|
|
104
104
|
"mini-css-extract-plugin": "2.4.4",
|
|
105
|
-
"msw": "0.
|
|
105
|
+
"msw": "0.49.1",
|
|
106
106
|
"node-polyfill-webpack-plugin": "2.0.1",
|
|
107
107
|
"p-map": "4.0.0",
|
|
108
108
|
"passport-local": "1.0.0",
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"react-dnd": "^14.0.2",
|
|
114
114
|
"react-dnd-html5-backend": "^14.0.0",
|
|
115
115
|
"react-dom": "^17.0.2",
|
|
116
|
-
"react-error-boundary": "3.1.
|
|
116
|
+
"react-error-boundary": "3.1.4",
|
|
117
117
|
"react-fast-compare": "^3.2.0",
|
|
118
118
|
"react-helmet": "^6.1.0",
|
|
119
119
|
"react-intl": "5.25.1",
|
|
@@ -122,12 +122,12 @@
|
|
|
122
122
|
"react-redux": "7.2.8",
|
|
123
123
|
"react-refresh": "0.14.0",
|
|
124
124
|
"react-router": "5.2.0",
|
|
125
|
-
"react-router-dom": "5.
|
|
125
|
+
"react-router-dom": "5.3.4",
|
|
126
126
|
"react-window": "1.8.7",
|
|
127
127
|
"redux": "^4.0.1",
|
|
128
128
|
"reselect": "^4.0.0",
|
|
129
129
|
"rimraf": "3.0.2",
|
|
130
|
-
"sanitize-html": "2.7.
|
|
130
|
+
"sanitize-html": "2.7.3",
|
|
131
131
|
"semver": "7.3.8",
|
|
132
132
|
"sift": "16.0.0",
|
|
133
133
|
"style-loader": "3.3.1",
|
|
@@ -166,5 +166,5 @@
|
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
},
|
|
169
|
-
"gitHead": "
|
|
169
|
+
"gitHead": "8716ecc920130db5341b0904cf868c6e6b581a5d"
|
|
170
170
|
}
|
|
@@ -110,6 +110,7 @@ module.exports = {
|
|
|
110
110
|
const autoReload = strapi.config.get('autoReload', false);
|
|
111
111
|
const strapiVersion = strapi.config.get('info.strapi', null);
|
|
112
112
|
const dependencies = strapi.config.get('info.dependencies', {});
|
|
113
|
+
const projectId = strapi.config.get('uuid', null);
|
|
113
114
|
const nodeVersion = process.version;
|
|
114
115
|
const communityEdition = !strapi.EE;
|
|
115
116
|
const useYarn = await exists(path.join(process.cwd(), 'yarn.lock'));
|
|
@@ -120,6 +121,7 @@ module.exports = {
|
|
|
120
121
|
autoReload,
|
|
121
122
|
strapiVersion,
|
|
122
123
|
dependencies,
|
|
124
|
+
projectId,
|
|
123
125
|
nodeVersion,
|
|
124
126
|
communityEdition,
|
|
125
127
|
useYarn,
|
package/server/routes/admin.js
CHANGED
|
@@ -5,7 +5,9 @@ const { getService } = require('../utils');
|
|
|
5
5
|
const sendDidInviteUser = async () => {
|
|
6
6
|
const numberOfUsers = await getService('user').count();
|
|
7
7
|
const numberOfRoles = await getService('role').count();
|
|
8
|
-
strapi.telemetry.send('didInviteUser', {
|
|
8
|
+
strapi.telemetry.send('didInviteUser', {
|
|
9
|
+
groupProperties: { numberOfRoles, numberOfUsers },
|
|
10
|
+
});
|
|
9
11
|
};
|
|
10
12
|
|
|
11
13
|
const sendDidUpdateRolePermissions = async () => {
|
|
@@ -14,7 +16,8 @@ const sendDidUpdateRolePermissions = async () => {
|
|
|
14
16
|
|
|
15
17
|
const sendDidChangeInterfaceLanguage = async () => {
|
|
16
18
|
const languagesInUse = await getService('user').getLanguagesInUse();
|
|
17
|
-
|
|
19
|
+
// This event is anonymous
|
|
20
|
+
strapi.telemetry.send('didChangeInterfaceLanguage', { userProperties: { languagesInUse } });
|
|
18
21
|
};
|
|
19
22
|
|
|
20
23
|
module.exports = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const { join, resolve } = require('path');
|
|
3
|
+
const { join, resolve, sep, posix } = require('path');
|
|
4
4
|
const fs = require('fs-extra');
|
|
5
5
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
6
6
|
const glob = require('glob');
|
|
@@ -8,8 +8,22 @@ const glob = require('glob');
|
|
|
8
8
|
// Only for dev environement
|
|
9
9
|
const getPluginsPath = () => {
|
|
10
10
|
const rootPath = resolve(__dirname, '..', join('..', '..', '..', 'packages'));
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* So `glob` only supports '/' as a path separator, so we need to replace
|
|
13
|
+
* the path separator for the current OS with '/'. e.g. on windows it's `\`.
|
|
14
|
+
*
|
|
15
|
+
* see https://github.com/isaacs/node-glob/#windows for more information
|
|
16
|
+
*
|
|
17
|
+
* and see https://github.com/isaacs/node-glob/issues/467#issuecomment-1114240501 for the recommended fix.
|
|
18
|
+
*/
|
|
19
|
+
let corePath = join(rootPath, 'core', '*');
|
|
20
|
+
let pluginsPath = join(rootPath, 'plugins', '*');
|
|
21
|
+
|
|
22
|
+
if (process.platform === 'win32') {
|
|
23
|
+
corePath = corePath.split(sep).join(posix.sep);
|
|
24
|
+
pluginsPath = pluginsPath.split(sep).join(posix.sep);
|
|
25
|
+
}
|
|
26
|
+
|
|
13
27
|
const corePackageDirs = glob.sync(corePath);
|
|
14
28
|
const pluginsPackageDirs = glob.sync(pluginsPath);
|
|
15
29
|
|