@strapi/admin 4.8.2 → 4.9.0-beta.1
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/content-manager/components/DynamicZone/utils/select.js +1 -1
- package/admin/src/content-manager/components/FieldComponent/utils/select.js +2 -1
- package/admin/src/content-manager/components/Inputs/utils/getInputType.js +1 -1
- package/admin/src/content-manager/components/Inputs/utils/select.js +1 -1
- package/admin/src/content-manager/hooks/useContentTypeLayout/index.js +1 -2
- package/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js +4 -1
- package/admin/src/content-manager/pages/CollectionTypeRecursivePath/index.js +1 -2
- package/admin/src/content-manager/pages/EditSettingsView/init.js +3 -1
- package/admin/src/content-manager/pages/EditSettingsView/utils/createPossibleMainFieldsForModelsAndComponents.js +2 -4
- package/admin/src/content-manager/pages/EditView/DeleteLink/utils/select.js +1 -1
- package/admin/src/content-manager/pages/EditView/utils/createAttributesLayout.js +2 -1
- package/admin/src/content-manager/pages/EditView/utils/getFieldsActionMatchingPermissions.js +2 -1
- package/admin/src/content-manager/utils/checkIfAttributeIsDisplayable.js +1 -1
- package/admin/src/content-manager/utils/createDefaultForm.js +2 -2
- package/admin/src/content-manager/utils/formatLayoutToApi.js +2 -1
- package/admin/src/content-manager/utils/getFieldName.js +1 -1
- package/admin/src/content-manager/utils/mergeMetasWithSchema.js +1 -1
- package/admin/src/content-manager/utils/paths.js +1 -1
- package/admin/src/content-manager/utils/removePasswordFieldsFromData.js +1 -1
- package/admin/src/hooks/useRegenerate/index.js +12 -7
- package/admin/src/hooks/useSettingsForm/index.js +3 -3
- package/admin/src/hooks/useSettingsForm/reducer.js +3 -1
- package/admin/src/hooks/useSettingsMenu/reducer.js +1 -1
- package/admin/src/pages/AuthPage/reducer.js +1 -1
- package/admin/src/pages/SettingsPage/components/Tokens/FormHead/index.js +4 -0
- package/admin/src/pages/SettingsPage/components/Tokens/Regenerate/index.js +5 -3
- package/admin/src/pages/SettingsPage/components/Tokens/TokenTypeSelect/index.js +7 -5
- package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/reducer.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/transformPermissionsData.js +6 -8
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/utils/createDefaultConditionsForm.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/utils/generateCheckboxesActions.js +2 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/utils/getRowLabelCheckboxeState.js +2 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/utils/getRowLabelCheckboxesState.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/reducer.js +6 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/createDefaultCTFormFromLayout.js +5 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/createDefaultPluginsFormFromLayout.js +1 -2
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/formatContentTypesPermissionToAPI.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/updateConditionsToFalse.js +4 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/updateValues.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/utils/formatActions.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/utils/createArrayOfValues.js +2 -1
- package/admin/src/pages/SettingsPage/pages/Roles/ListPage/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/FormTransferTokenContainer/index.js +41 -0
- package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/index.js +53 -9
- package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/schema.js +1 -0
- package/admin/src/pages/SettingsPage/pages/TransferTokens/ListView/index.js +27 -5
- package/admin/src/pages/SettingsPage/pages/Users/ProtectedEditPage/index.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/utils/formatData.js +1 -7
- package/admin/src/permissions/index.js +1 -1
- package/admin/src/translations/en.json +1 -0
- package/admin/src/utils/getAttributesToDisplay.js +2 -4
- package/admin/src/utils/getExistingActions.js +1 -3
- package/admin/src/utils/sortLinks.js +1 -1
- package/build/{8580.0aa21940.chunk.js → 2263.4c5916f9.chunk.js} +61 -61
- package/build/5563.aa832e5f.chunk.js +30 -0
- package/build/6985.66cca29c.chunk.js +1 -0
- package/build/7259.e6ef3b8e.chunk.js +1 -0
- package/build/{7112.2bf13da3.chunk.js → 9505.dbe702ab.chunk.js} +6 -6
- package/build/Admin-authenticatedApp.cb754f73.chunk.js +79 -0
- package/build/{Admin_profilePage.d2a8f9ab.chunk.js → Admin_profilePage.76afeca0.chunk.js} +1 -1
- package/build/{Admin_settingsPage.7450acfc.chunk.js → Admin_settingsPage.0aa4fcdc.chunk.js} +2 -2
- package/build/admin-app.50584489.chunk.js +112 -0
- package/build/admin-edit-roles-page.cf543488.chunk.js +216 -0
- package/build/admin-edit-users.31c20712.chunk.js +10 -0
- package/build/admin-roles-list.489c501f.chunk.js +2 -0
- package/build/{admin-users.af8c3123.chunk.js → admin-users.3e111a7d.chunk.js} +1 -1
- package/build/{api-tokens-create-page.4328b852.chunk.js → api-tokens-create-page.2a6e22bd.chunk.js} +1 -1
- package/build/{api-tokens-edit-page.bce5050f.chunk.js → api-tokens-edit-page.fa38cd63.chunk.js} +1 -1
- package/build/content-manager.f8b9710b.chunk.js +1139 -0
- package/build/content-type-builder.0f5dbcf1.chunk.js +126 -0
- package/build/{en-json.01a88a30.chunk.js → en-json.b052667a.chunk.js} +1 -1
- package/build/index.html +1 -1
- package/build/main.7fa3d343.js +3783 -0
- package/build/{runtime~main.05f8f4a1.js → runtime~main.03d11c09.js} +2 -2
- package/build/sso-settings-page.272b87c8.chunk.js +1 -0
- package/build/transfer-tokens-list-page.3c9b0280.chunk.js +16 -0
- package/build/users-advanced-settings-page.1d3c14c7.chunk.js +1 -0
- package/build/{users-email-settings-page.a3c80419.chunk.js → users-email-settings-page.e8db68c4.chunk.js} +1 -1
- package/build/users-providers-settings-page.14cac425.chunk.js +1 -0
- package/build/users-roles-settings-page.2ea4de84.chunk.js +30 -0
- package/build/{webhook-edit-page.a2a2b7bb.chunk.js → webhook-edit-page.329141a5.chunk.js} +3 -3
- package/ee/server/bootstrap.js +3 -0
- package/ee/server/utils/persisted-tables.js +49 -0
- package/package.json +11 -11
- package/server/controllers/transfer/runner.js +4 -2
- package/server/middlewares/data-transfer.js +4 -1
- package/server/routes/transfer.js +13 -4
- package/server/services/constants.js +4 -0
- package/server/services/permission/permissions-manager/sanitize.js +2 -0
- package/server/services/transfer/permission.js +1 -1
- package/server/services/transfer/token.js +33 -31
- package/server/validation/transfer/token.js +10 -2
- package/build/2637.679b590b.chunk.js +0 -1
- package/build/4649.33220ac3.chunk.js +0 -30
- package/build/7259.3675c199.chunk.js +0 -1
- package/build/Admin-authenticatedApp.26f0eff6.chunk.js +0 -79
- package/build/admin-app.c0729915.chunk.js +0 -112
- package/build/admin-edit-roles-page.3b196317.chunk.js +0 -216
- package/build/admin-edit-users.af3b0f15.chunk.js +0 -10
- package/build/admin-roles-list.0ad504a7.chunk.js +0 -2
- package/build/content-manager.b2578b87.chunk.js +0 -1139
- package/build/content-type-builder.a93f97ba.chunk.js +0 -126
- package/build/main.ed856941.js +0 -3809
- package/build/sso-settings-page.5a8588ef.chunk.js +0 -1
- package/build/transfer-tokens-list-page.ce37354b.chunk.js +0 -16
- package/build/users-advanced-settings-page.c0cae03a.chunk.js +0 -1
- package/build/users-providers-settings-page.5f86e45c.chunk.js +0 -1
- package/build/users-roles-settings-page.b02986df.chunk.js +0 -30
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[302],{26930:function(A,u,a){a.r(u),a.d(u,{SingleSignOn:function(){return f},default:function(){return L}});var e=a(32735),l=a(13478),R=a(57269),s=a(39161),E=a(5636),v=a(89793),b=a.n(v),C=a(64421),g=a(8888),c=a(72041),r=a(5173),M=r.Ry().shape({autoRegister:r.Xg().required(l.translatedErrors.required),defaultRole:r.nK().when("autoRegister",(t,i)=>t?i.required(l.translatedErrors.required):i.nullable())});const m={...c.Z.settings.sso,readRoles:c.Z.settings.roles.read},f=()=>{const{formatMessage:t}=(0,E.useIntl)(),{isLoading:i,allowedActions:{canUpdate:h,canReadRoles:O}}=(0,l.useRBAC)(m),[{formErrors:o,initialData:y,isLoading:I,modifiedData:d,showHeaderButtonLoader:P},H,{handleChange:S,handleSubmit:D}]=(0,g.G4)((0,C.IF)("providers/options"),M,()=>{},["autoRegister","defaultRole"]),{roles:F}=(0,g.bF)(O);(0,l.useFocusWhenNavigate)();const T=i||I;(0,e.useEffect)(()=>{if(o.defaultRole){const n='[name="defaultRole"]';document.querySelector(n).focus()}},[o]);const p=b()(y,d);return e.createElement(s.Layout,null,e.createElement(l.SettingsPageTitle,{name:"SSO"}),e.createElement(s.Main,{tabIndex:-1},e.createElement("form",{onSubmit:n=>{if(p){n.preventDefault();return}D(n)}},e.createElement(s.HeaderLayout,{primaryAction:e.createElement(s.Button,{"data-testid":"save-button",disabled:p,loading:P,startIcon:e.createElement(R.Check,null),type:"submit",size:"L"},t({id:"global.save",defaultMessage:"Save"})),title:t({id:"Settings.sso.title",defaultMessage:"Single Sign-On"}),subtitle:t({id:"Settings.sso.description",defaultMessage:"Configure the settings for the Single Sign-On feature."})}),e.createElement(s.ContentLayout,null,T?e.createElement(l.LoadingIndicatorPage,null):e.createElement(s.Flex,{direction:"column",alignItems:"stretch",gap:4,background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},e.createElement(s.Typography,{variant:"delta",as:"h2"},t({id:"global.settings",defaultMessage:"Settings"})),e.createElement(s.Grid,{gap:4},e.createElement(s.GridItem,{col:6,m:6,s:12},e.createElement(s.ToggleInput,{"aria-label":"autoRegister","data-testid":"autoRegister",disabled:!h,checked:d.autoRegister,hint:t({id:"Settings.sso.form.registration.description",defaultMessage:"Create new user on SSO login if no account exists"}),label:t({id:"Settings.sso.form.registration.label",defaultMessage:"Auto-registration"}),name:"autoRegister",offLabel:t({id:"app.components.ToggleCheckbox.off-label",defaultMessage:"Off"}),onLabel:t({id:"app.components.ToggleCheckbox.on-label",defaultMessage:"On"}),onChange:n=>{S({target:{name:"autoRegister",value:n.target.checked}})}})),e.createElement(s.GridItem,{col:6,m:6,s:12},e.createElement(s.Select,{disabled:!h,hint:t({id:"Settings.sso.form.defaultRole.description",defaultMessage:"It will attach the new authenticated user to the selected role"}),error:o.defaultRole?t({id:o.defaultRole.id,defaultMessage:o.defaultRole.id}):"",label:t({id:"Settings.sso.form.defaultRole.label",defaultMessage:"Default role"}),name:"defaultRole",onChange:n=>{S({target:{name:"defaultRole",value:n}})},placeholder:t({id:"components.InputSelect.option.placeholder",defaultMessage:"Choose here"}),value:d.defaultRole},F.map(({id:n,name:x})=>e.createElement(s.Option,{key:n,value:n.toString()},x))))))))))};var L=()=>e.createElement(l.CheckPagePermissions,{permissions:m.main},e.createElement(f,null))}}]);
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[9600],{81450:function(H,v,n){n.d(v,{Z:function(){return R}});var e=n(32735),s=n(5141),A=n(60216),t=n.n(A),a=n(39161),l=n(13478),C=n(57269),D=n(5636);const k=({tokenName:r,onClickDelete:c,tokenType:E})=>{const{formatMessage:d}=(0,D.useIntl)(),{trackUsage:f}=(0,l.useTracking)(),[u,p]=(0,e.useState)(!1),h=()=>{p(!1),f("willDeleteToken",{tokenType:E}),c()};return e.createElement(a.Box,{paddingLeft:1,onClick:T=>T.stopPropagation()},e.createElement(a.IconButton,{onClick:()=>{p(!0)},label:d({id:"global.delete-target",defaultMessage:"Delete {target}"},{target:`${r}`}),name:"delete",noBorder:!0,icon:e.createElement(C.Trash,null)}),e.createElement(l.ConfirmDialog,{onToggleDialog:()=>p(!1),onConfirm:h,isOpen:u}))};k.propTypes={tokenName:t().string.isRequired,onClickDelete:t().func.isRequired,tokenType:t().string.isRequired};var L=k,W=n(83292);const w={edit:{id:"app.component.table.edit",defaultMessage:"Edit {target}"},read:{id:"app.component.table.read",defaultMessage:"Read {target}"}},U=(0,W.default)(l.Link)`
|
|
2
|
-
svg {
|
|
3
|
-
path {
|
|
4
|
-
fill: ${({theme:r})=>r.colors.neutral500};
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
&:hover,
|
|
9
|
-
&:focus {
|
|
10
|
-
svg {
|
|
11
|
-
path {
|
|
12
|
-
fill: ${({theme:r})=>r.colors.neutral800};
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
`,g=({tokenName:r,tokenId:c,buttonType:E,children:d})=>{const{formatMessage:f}=(0,D.useIntl)(),{location:{pathname:u}}=(0,s.useHistory)();return e.createElement(U,{to:`${u}/${c}`,title:f(w[E],{target:r})},d)};g.propTypes={tokenName:t().string.isRequired,tokenId:t().oneOfType([t().string,t().number]).isRequired,buttonType:t().string,children:t().node.isRequired},g.defaultProps={buttonType:"edit"};var I=g;const S=({tokenName:r,tokenId:c})=>e.createElement(I,{tokenName:r,tokenId:c},e.createElement(C.Pencil,null));S.propTypes={tokenName:t().string.isRequired,tokenId:t().oneOfType([t().string,t().number]).isRequired};var Z=S;const M=({tokenName:r,tokenId:c})=>e.createElement(I,{tokenName:r,tokenId:c,buttonType:"read"},e.createElement(C.Eye,null));M.propTypes={tokenName:t().string.isRequired,tokenId:t().oneOfType([t().string,t().number]).isRequired};var V=M;const m=({permissions:r,headers:c,contentType:E,isLoading:d,tokens:f,onConfirmDelete:u,tokenType:p})=>{const{canDelete:h,canUpdate:T,canRead:N}=r,P=h||T||N,[{query:y}]=(0,l.useQueryParams)(),[,b]=y?y.sort.split(":"):"ASC",{push:x,location:{pathname:B}}=(0,s.useHistory)(),{trackUsage:F}=(0,l.useTracking)(),O=f.sort((o,$)=>{const i=o.name.localeCompare($.name);return b==="DESC"?-i:i});return e.createElement(l.DynamicTable,{headers:c,contentType:E,rows:f,withBulkActions:P,isLoading:d,onConfirmDelete:u},e.createElement(a.Tbody,null,O.map(o=>e.createElement(a.Tr,{key:o.id,...(0,l.onRowClick)({fn(){F("willEditTokenFromList",{tokenType:p}),x(`${B}/${o.id}`)},condition:T})},e.createElement(a.Td,{maxWidth:(0,l.pxToRem)(250)},e.createElement(a.Typography,{textColor:"neutral800",fontWeight:"bold",ellipsis:!0},o.name)),e.createElement(a.Td,{maxWidth:(0,l.pxToRem)(250)},e.createElement(a.Typography,{textColor:"neutral800",ellipsis:!0},o.description)),e.createElement(a.Td,null,e.createElement(a.Typography,{textColor:"neutral800"},e.createElement(l.RelativeTime,{timestamp:new Date(o.createdAt)}))),e.createElement(a.Td,null,o.lastUsedAt&&e.createElement(a.Typography,{textColor:"neutral800"},e.createElement(l.RelativeTime,{timestamp:new Date(o.lastUsedAt)}))),P&&e.createElement(a.Td,null,e.createElement(a.Flex,{justifyContent:"end"},T&&e.createElement(Z,{tokenName:o.name,tokenId:o.id}),!T&&N&&e.createElement(V,{tokenName:o.name,tokenId:o.id}),h&&e.createElement(L,{tokenName:o.name,onClickDelete:()=>u(o.id),tokenType:p})))))))};m.propTypes={tokens:t().array,permissions:t().shape({canRead:t().bool,canDelete:t().bool,canUpdate:t().bool}).isRequired,headers:t().arrayOf(t().shape({cellFormatter:t().func,key:t().string.isRequired,metadatas:t().shape({label:t().string.isRequired,sortable:t().bool}).isRequired,name:t().string.isRequired})),contentType:t().string.isRequired,isLoading:t().bool,onConfirmDelete:t().func,tokenType:t().string.isRequired},m.defaultProps={tokens:[],headers:[],isLoading:!1,onConfirmDelete(){}};var R=m},68774:function(H,v,n){n.d(v,{Z:function(){return e},f:function(){return s}});const e="api-token",s="transfer-token"},38286:function(H,v,n){n.r(v),n.d(v,{default:function(){return M}});var e=n(32735),s=n(13478),A=n(72041),t=n(5636),a=n(84968),l=n(5141),C=n(33348),D=n.n(C),k=n(39161),L=n(57269),w=[{name:"name",key:"name",metadatas:{label:{id:"Settings.tokens.ListView.headers.name",defaultMessage:"Name"},sortable:!0}},{name:"description",key:"description",metadatas:{label:{id:"Settings.tokens.ListView.headers.description",defaultMessage:"Description"},sortable:!1}},{name:"createdAt",key:"createdAt",metadatas:{label:{id:"Settings.tokens.ListView.headers.createdAt",defaultMessage:"Created at"},sortable:!1}},{name:"lastUsedAt",key:"lastUsedAt",metadatas:{label:{id:"Settings.tokens.ListView.headers.lastUsedAt",defaultMessage:"Last used"},sortable:!1}}],U=n(81450),g=n(68774),S=()=>{(0,s.useFocusWhenNavigate)();const V=(0,a.useQueryClient)(),{formatMessage:m}=(0,t.useIntl)(),R=(0,s.useNotification)(),{allowedActions:{canCreate:r,canDelete:c,canUpdate:E,canRead:d}}=(0,s.useRBAC)(A.Z.settings["transfer-tokens"]),{push:f}=(0,l.useHistory)(),{trackUsage:u}=(0,s.useTracking)(),{startSection:p}=(0,s.useGuidedTour)(),h=(0,e.useRef)(p),{get:T,del:N}=(0,s.useFetchClient)();(0,e.useEffect)(()=>{h.current&&h.current("transferTokens")},[]),(0,e.useEffect)(()=>{f({search:D().stringify({sort:"name:ASC"},{encode:!1})})},[f]);const P=w.map(i=>({...i,metadatas:{...i.metadatas,label:m(i.metadatas.label)}})),{data:y,status:b,isFetching:x}=(0,a.useQuery)(["transfer-tokens"],async()=>{u("willAccessTokenList",{tokenType:g.f});const{data:{data:i}}=await T("/admin/transfer/tokens");return u("didAccessTokenList",{number:i.length,tokenType:g.f}),i},{enabled:d,onError(){R({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),B=d&&(b!=="success"&&b!=="error"||b==="success"&&x),F=(0,a.useMutation)(async i=>{await N(`/admin/transfer/tokens/${i}`)},{async onSuccess(){await V.invalidateQueries(["transfer-tokens"])},onError(i){i?.response?.data?.data?R({type:"warning",message:i.response.data.data}):R({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),O=d&&y,o=d&&!y&&!r,$=d&&!y&&r;return e.createElement(k.Main,{"aria-busy":B},e.createElement(s.SettingsPageTitle,{name:"Transfer Tokens"}),e.createElement(k.HeaderLayout,{title:m({id:"Settings.transferTokens.title",defaultMessage:"Transfer Tokens"}),subtitle:m({id:"Settings.transferTokens.description",defaultMessage:'"List of generated transfer tokens"'}),primaryAction:r?e.createElement(s.LinkButton,{"data-testid":"create-transfer-token-button",startIcon:e.createElement(L.Plus,null),size:"S",onClick:()=>u("willAddTokenFromList",{tokenType:g.f}),to:"/settings/transfer-tokens/create"},m({id:"Settings.transferTokens.create",defaultMessage:"Create new Transfer Token"})):void 0}),e.createElement(k.ContentLayout,null,!d&&e.createElement(s.NoPermissions,null),O&&e.createElement(U.Z,{permissions:{canRead:d,canDelete:c,canUpdate:E},headers:P,contentType:"trasfer-tokens",rows:y,isLoading:B,onConfirmDelete:i=>F.mutateAsync(i),tokens:y,tokenType:g.f}),$&&e.createElement(s.NoContent,{content:{id:"Settings.transferTokens.addFirstToken",defaultMessage:"Add your first Transfer Token"},action:e.createElement(k.Button,{variant:"secondary",startIcon:e.createElement(L.Plus,null)},m({id:"Settings.transferTokens.addNewToken",defaultMessage:"Add new Transfer Token"}))}),o&&e.createElement(s.NoContent,{content:{id:"Settings.transferTokens.emptyStateLayout",defaultMessage:"You don\u2019t have any content yet..."}})))},M=()=>e.createElement(s.CheckPagePermissions,{permissions:A.Z.settings["transfer-tokens"].main},e.createElement(S,null))}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[9460],{84764:function(A,f,n){n.r(f),n.d(f,{default:function(){return P}});var e=n(32735),p=n(84968),h=n(5636),E=n(83281),i=n(13478),a=n(39161),y=n(57269),l=n(88369),t=n(59677),m=[{intlLabel:{id:(0,t.OB)("EditForm.inputToggle.label.email"),defaultMessage:"One account per email address"},description:{id:(0,t.OB)("EditForm.inputToggle.description.email"),defaultMessage:"Disallow the user to create multiple accounts using the same email address with different authentication providers."},name:"unique_email",type:"bool",size:{col:12,xs:12}},{intlLabel:{id:(0,t.OB)("EditForm.inputToggle.label.sign-up"),defaultMessage:"Enable sign-ups"},description:{id:(0,t.OB)("EditForm.inputToggle.description.sign-up"),defaultMessage:"When disabled (OFF), the registration process is forbidden. No one can subscribe anymore no matter the used provider."},name:"allow_register",type:"bool",size:{col:12,xs:12}},{intlLabel:{id:(0,t.OB)("EditForm.inputToggle.label.email-reset-password"),defaultMessage:"Reset password page"},description:{id:(0,t.OB)("EditForm.inputToggle.description.email-reset-password"),defaultMessage:"URL of your application's reset password page."},placeholder:{id:(0,t.OB)("EditForm.inputToggle.placeholder.email-reset-password"),defaultMessage:"ex: https://youtfrontend.com/reset-password"},name:"email_reset_password",type:"text",size:{col:6,xs:12}},{intlLabel:{id:(0,t.OB)("EditForm.inputToggle.label.email-confirmation"),defaultMessage:"Enable email confirmation"},description:{id:(0,t.OB)("EditForm.inputToggle.description.email-confirmation"),defaultMessage:"When enabled (ON), new registered users receive a confirmation email."},name:"email_confirmation",type:"bool",size:{col:12,xs:12}},{intlLabel:{id:(0,t.OB)("EditForm.inputToggle.label.email-confirmation-redirection"),defaultMessage:"Redirection url"},description:{id:(0,t.OB)("EditForm.inputToggle.description.email-confirmation-redirection"),defaultMessage:"After you confirmed your email, choose where you will be redirected."},placeholder:{id:(0,t.OB)("EditForm.inputToggle.placeholder.email-confirmation-redirection"),defaultMessage:"ex: https://youtfrontend.com/email-confirmation"},name:"email_confirmation_redirection",type:"text",size:{col:6,xs:12}}],r=n(5173);const u=new RegExp("(^$)|((.+:\\/\\/.*)(d*)\\/?(.*))");var L=r.Ry().shape({email_confirmation_redirection:r.nK().when("email_confirmation",{is:!0,then:r.Z_().matches(u).required(),otherwise:r.Z_().nullable()}),email_reset_password:r.Z_(i.translatedErrors.string).matches(u,i.translatedErrors.regex).nullable()});const T=async()=>{const{get:s}=(0,i.getFetchClient)(),{data:d}=await s((0,t.Gc)("advanced"));return d},R=s=>{const{put:d}=(0,i.getFetchClient)();return d((0,t.Gc)("advanced"),s)},w=()=>e.createElement(i.CheckPagePermissions,{permissions:l.Z.readAdvancedSettings},e.createElement(C,null)),C=()=>{const{formatMessage:s}=(0,h.useIntl)(),d=(0,i.useNotification)(),{lockApp:x,unlockApp:O}=(0,i.useOverlayBlocker)(),{notifyStatus:N}=(0,a.useNotifyAT)(),I=(0,p.useQueryClient)();(0,i.useFocusWhenNavigate)();const z=(0,e.useMemo)(()=>({update:l.Z.updateAdvancedSettings}),[]),{isLoading:G,allowedActions:{canUpdate:Z}}=(0,i.useRBAC)(z),{status:k,data:M}=(0,p.useQuery)("advanced",()=>T(),{onSuccess(){N(s({id:(0,t.OB)("Form.advancedSettings.data.loaded"),defaultMessage:"Advanced settings data has been loaded"}))},onError(){d({type:"warning",message:{id:(0,t.OB)("notification.error"),defaultMessage:"An error occured"}})}}),H=G||k!=="success",B=(0,p.useMutation)(c=>R(c),{async onSuccess(){await I.invalidateQueries("advanced"),d({type:"success",message:{id:(0,t.OB)("notification.success.saved"),defaultMessage:"Saved"}}),O()},onError(){d({type:"warning",message:{id:(0,t.OB)("notification.error"),defaultMessage:"An error occured"}}),O()},refetchActive:!0}),{isLoading:U}=B,D=async c=>{x();const g=c.email_confirmation?c.email_confirmation_redirection:"";await B.mutateAsync({...c,email_confirmation_redirection:g})};return H?e.createElement(a.Main,{"aria-busy":"true"},e.createElement(i.SettingsPageTitle,{name:s({id:(0,t.OB)("HeaderNav.link.advancedSettings"),defaultMessage:"Advanced Settings"})}),e.createElement(a.HeaderLayout,{title:s({id:(0,t.OB)("HeaderNav.link.advancedSettings"),defaultMessage:"Advanced Settings"})}),e.createElement(a.ContentLayout,null,e.createElement(i.LoadingIndicatorPage,null))):e.createElement(a.Main,{"aria-busy":U},e.createElement(i.SettingsPageTitle,{name:s({id:(0,t.OB)("HeaderNav.link.advancedSettings"),defaultMessage:"Advanced Settings"})}),e.createElement(E.Formik,{onSubmit:D,initialValues:M.settings,validateOnChange:!1,validationSchema:L,enableReinitialize:!0},({errors:c,values:g,handleChange:F,isSubmitting:Q})=>e.createElement(i.Form,null,e.createElement(a.HeaderLayout,{title:s({id:(0,t.OB)("HeaderNav.link.advancedSettings"),defaultMessage:"Advanced Settings"}),primaryAction:e.createElement(a.Button,{loading:Q,type:"submit",disabled:!Z,startIcon:e.createElement(y.Check,null),size:"S"},s({id:"global.save",defaultMessage:"Save"}))}),e.createElement(a.ContentLayout,null,e.createElement(a.Box,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},e.createElement(a.Flex,{direction:"column",alignItems:"stretch",gap:4},e.createElement(a.Typography,{variant:"delta",as:"h2"},s({id:"global.settings",defaultMessage:"Settings"})),e.createElement(a.Grid,{gap:6},e.createElement(a.GridItem,{col:6,s:12},e.createElement(a.Select,{label:s({id:(0,t.OB)("EditForm.inputSelect.label.role"),defaultMessage:"Default role for authenticated users"}),value:g.default_role,hint:s({id:(0,t.OB)("EditForm.inputSelect.description.role"),defaultMessage:"It will attach the new authenticated user to the selected role."}),onChange:o=>F({target:{name:"default_role",value:o}})},M.roles.map(o=>e.createElement(a.Option,{key:o.type,value:o.type},o.name)))),m.map(o=>{let b=g[o.name];return b||(b=o.type==="bool"?!1:""),e.createElement(a.GridItem,{key:o.name,...o.size},e.createElement(i.GenericInput,{...o,value:b,error:c[o.name],disabled:o.name==="email_confirmation_redirection"&&g.email_confirmation===!1,onChange:F}))}))))))))};var P=w},59677:function(A,f,n){n.d(f,{YX:function(){return h},Gc:function(){return a},OB:function(){return y.Z}});var e=n(92891),h=l=>Object.keys(l).reduce((t,S)=>{const m=l[S].controllers,r=Object.keys(m).reduce((u,v)=>((0,e.isEmpty)(m[v])||(u[v]=m[v]),u),{});return(0,e.isEmpty)(r)||(t[S]={controllers:r}),t},{}),E=n(90201),a=l=>`/${E.Z}/${l}`,y=n(82069)}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2282],{51509:function(Y,B,n){n.r(B),n.d(B,{ProvidersPage:function(){return V},default:function(){return le}});var e=n(32735),O=n(5636),s=n(13478),Z=n(23973),W=n.n(Z),S=n(23940),U=n.n(S),t=n(39161),R=n(57269),P=n(84968),r=n(5173),l=n(59677);const M={id:(0,l.OB)("PopUpForm.Providers.redirectURL.front-end.label"),defaultMessage:"The redirect URL to your front-end app"},T={id:"http://www.client-app.com",defaultMessage:"http://www.client-app.com"},x={id:(0,l.OB)("PopUpForm.Providers.enabled.description"),defaultMessage:"If disabled, users won't be able to use this provider."},w={id:(0,l.OB)("PopUpForm.Providers.enabled.label"),defaultMessage:"Enable"},G={id:(0,l.OB)("PopUpForm.Providers.key.label"),defaultMessage:"Client ID"},X={id:(0,l.OB)("PopUpForm.Providers.redirectURL.label"),defaultMessage:"The redirect URL to add in your {provider} application configurations"},C={id:(0,l.OB)("PopUpForm.Providers.key.placeholder"),defaultMessage:"TEXT"},$={id:(0,l.OB)("PopUpForm.Providers.secret.label"),defaultMessage:"Client Secret"};var I={email:{form:[[{intlLabel:w,name:"enabled",type:"bool",description:x,size:6}]],schema:r.Ry().shape({enabled:r.Xg().required(s.translatedErrors.required)})},providers:{form:[[{intlLabel:w,name:"enabled",type:"bool",description:x,size:6,validations:{required:!0}}],[{intlLabel:G,name:"key",type:"text",placeholder:C,size:12,validations:{required:!0}}],[{intlLabel:$,name:"secret",type:"text",placeholder:C,size:12,validations:{required:!0}}],[{intlLabel:M,placeholder:T,name:"callback",type:"text",size:12,validations:{required:!0}}],[{intlLabel:X,name:"noName",type:"text",validations:{},size:12,disabled:!0}]],schema:r.Ry().shape({enabled:r.Xg().required(s.translatedErrors.required),key:r.Z_().when("enabled",{is:!0,then:r.Z_().required(s.translatedErrors.required),otherwise:r.Z_()}),secret:r.Z_().when("enabled",{is:!0,then:r.Z_().required(s.translatedErrors.required),otherwise:r.Z_()}),callback:r.Z_().when("enabled",{is:!0,then:r.Z_().required(s.translatedErrors.required),otherwise:r.Z_()})})},providersWithSubdomain:{form:[[{intlLabel:w,name:"enabled",type:"bool",description:x,size:6,validations:{required:!0}}],[{intlLabel:G,name:"key",type:"text",placeholder:C,size:12,validations:{required:!0}}],[{intlLabel:$,name:"secret",type:"text",placeholder:C,size:12,validations:{required:!0}}],[{intlLabel:{id:(0,l.OB)({id:"PopUpForm.Providers.jwksurl.label"}),defaultMessage:"JWKS URL"},name:"jwksurl",type:"text",placeholder:C,size:12,validations:{required:!1}}],[{intlLabel:{id:(0,l.OB)("PopUpForm.Providers.subdomain.label"),defaultMessage:"Host URI (Subdomain)"},name:"subdomain",type:"text",placeholder:{id:(0,l.OB)("PopUpForm.Providers.subdomain.placeholder"),defaultMessage:"my.subdomain.com"},size:12,validations:{required:!0}}],[{intlLabel:M,placeholder:T,name:"callback",type:"text",size:12,validations:{required:!0}}],[{intlLabel:X,name:"noName",type:"text",validations:{},size:12,disabled:!0}]],schema:r.Ry().shape({enabled:r.Xg().required(s.translatedErrors.required),key:r.Z_().when("enabled",{is:!0,then:r.Z_().required(s.translatedErrors.required),otherwise:r.Z_()}),secret:r.Z_().when("enabled",{is:!0,then:r.Z_().required(s.translatedErrors.required),otherwise:r.Z_()}),subdomain:r.Z_().when("enabled",{is:!0,then:r.Z_().required(s.translatedErrors.required),otherwise:r.Z_()}),callback:r.Z_().when("enabled",{is:!0,then:r.Z_().required(s.translatedErrors.required),otherwise:r.Z_()})})}};const _=async i=>{try{const{get:d}=(0,s.getFetchClient)(),{data:m}=await d((0,l.Gc)("providers"));return m}catch{throw i({type:"warning",message:{id:"notification.error"}}),new Error("error")}},ee=i=>{const{put:d}=(0,s.getFetchClient)();return d((0,l.Gc)("providers"),i)};var te=n(92891),ae=i=>(0,te.sortBy)(Object.keys(i).reduce((d,m)=>{const{icon:g,enabled:c,subdomain:b}=i[m],p=g==="envelope"?["fas","envelope"]:["fab",g];return b!==void 0?d.push({name:m,icon:p,enabled:c,subdomain:b}):d.push({name:m,icon:p,enabled:c}),d},[]),"name"),Q=n(88369),re=n(60216),a=n.n(re),se=n(83281);const z=({description:i,disabled:d,intlLabel:m,error:g,name:c,onChange:b,placeholder:p,providerToEditName:y,type:h,value:o})=>{const{formatMessage:f}=(0,O.useIntl)(),E=c==="noName"?`${strapi.backendURL}/api/connect/${y}/callback`:o,L=f({id:m.id,defaultMessage:m.defaultMessage},{provider:y,...m.values}),v=i?f({id:i.id,defaultMessage:i.defaultMessage},{provider:y,...i.values}):"";if(h==="bool")return e.createElement(t.ToggleInput,{"aria-label":c,checked:o,disabled:d,hint:v,label:L,name:c,offLabel:f({id:"app.components.ToggleCheckbox.off-label",defaultMessage:"Off"}),onLabel:f({id:"app.components.ToggleCheckbox.on-label",defaultMessage:"On"}),onChange:q=>{b({target:{name:c,value:q.target.checked}})}});const A=p?f({id:p.id,defaultMessage:p.defaultMessage},{...p.values}):"",j=g?f({id:g,defaultMessage:g}):"";return e.createElement(t.TextInput,{"aria-label":c,disabled:d,error:j,label:L,name:c,onChange:b,placeholder:A,type:h,value:E})};z.defaultProps={description:null,disabled:!1,error:"",placeholder:null,value:""},z.propTypes={description:a().shape({id:a().string.isRequired,defaultMessage:a().string.isRequired,values:a().object}),disabled:a().bool,error:a().string,intlLabel:a().shape({id:a().string.isRequired,defaultMessage:a().string.isRequired,values:a().object}).isRequired,name:a().string.isRequired,onChange:a().func.isRequired,placeholder:a().shape({id:a().string.isRequired,defaultMessage:a().string.isRequired,values:a().object}),providerToEditName:a().string.isRequired,type:a().string.isRequired,value:a().oneOfType([a().bool,a().string])};var ne=z;const N=({headerBreadcrumbs:i,initialData:d,isSubmiting:m,layout:g,isOpen:c,onSubmit:b,onToggle:p,providerToEditName:y})=>{const{formatMessage:h}=(0,O.useIntl)();return c?e.createElement(t.ModalLayout,{onClose:p,labelledBy:"title"},e.createElement(t.ModalHeader,null,e.createElement(t.Breadcrumbs,{label:i.join(", ")},i.map(o=>e.createElement(t.Crumb,{key:o},o)))),e.createElement(se.Formik,{onSubmit:o=>b(o),initialValues:d,validationSchema:g.schema,validateOnChange:!1},({errors:o,handleChange:f,values:E})=>e.createElement(s.Form,null,e.createElement(t.ModalBody,null,e.createElement(t.Flex,{direction:"column",alignItems:"stretch",gap:1},e.createElement(t.Grid,{gap:5},g.form.map(L=>L.map(v=>e.createElement(t.GridItem,{key:v.name,col:v.size,xs:12},e.createElement(ne,{...v,error:o[v.name],onChange:f,value:E[v.name],providerToEditName:y}))))))),e.createElement(t.ModalFooter,{startActions:e.createElement(t.Button,{variant:"tertiary",onClick:p,type:"button"},h({id:"app.components.Button.cancel",defaultMessage:"Cancel"})),endActions:e.createElement(t.Button,{type:"submit",loading:m},h({id:"global.save",defaultMessage:"Save"}))})))):null};N.defaultProps={initialData:null,providerToEditName:null},N.propTypes={headerBreadcrumbs:a().arrayOf(a().string).isRequired,initialData:a().object,layout:a().shape({form:a().arrayOf(a().array),schema:a().object}).isRequired,isOpen:a().bool.isRequired,isSubmiting:a().bool.isRequired,onSubmit:a().func.isRequired,onToggle:a().func.isRequired,providerToEditName:a().string};var ie=N;const V=()=>{const{formatMessage:i}=(0,O.useIntl)();(0,s.useFocusWhenNavigate)();const{notifyStatus:d}=(0,t.useNotifyAT)(),m=(0,P.useQueryClient)(),{trackUsage:g}=(0,s.useTracking)(),c=(0,e.useRef)(g),[b,p]=(0,e.useState)(!1),[y,h]=(0,e.useState)(!1),[o,f]=(0,e.useState)(null),E=(0,s.useNotification)(),{lockApp:L,unlockApp:v}=(0,s.useOverlayBlocker)(),A=(0,e.useMemo)(()=>({update:Q.Z.updateProviders}),[]),{isLoading:j,allowedActions:{canUpdate:q}}=(0,s.useRBAC)(A),{isLoading:oe,data:k,isFetching:de}=(0,P.useQuery)("get-providers",()=>_(E),{onSuccess(){d(i({id:(0,l.OB)("Providers.data.loaded"),defaultMessage:"Providers have been loaded"}))},initialData:{}}),ue=oe||de,ce=(0,P.useMutation)(ee,{async onSuccess(){await m.invalidateQueries("get-providers"),E({type:"info",message:{id:(0,l.OB)("notification.success.submit")}}),c.current("didEditAuthenticationProvider"),h(!1),D(),v()},onError(){E({type:"warning",message:{id:"notification.error"}}),v(),h(!1)},refetchActive:!1}),F=(0,e.useMemo)(()=>ae(k),[k]),me=F.length,J=(0,e.useMemo)(()=>{if(!o)return!1;const u=F.find(H=>H.name===o);return W()(u,"subdomain")},[F,o]),pe=i({id:(0,l.OB)("HeaderNav.link.providers"),defaultMessage:"Providers"}),ge=(0,e.useMemo)(()=>o==="email"?I.email:J?I.providersWithSubdomain:I.providers,[o,J]),D=()=>{p(u=>!u)},K=u=>{q&&(f(u.name),D())},fe=async u=>{h(!0),L(),c.current("willEditAuthenticationProvider");const H={...k,[o]:u};ce.mutate({providers:H})};return e.createElement(t.Layout,null,e.createElement(s.SettingsPageTitle,{name:pe}),e.createElement(t.Main,null,e.createElement(t.HeaderLayout,{title:i({id:(0,l.OB)("HeaderNav.link.providers"),defaultMessage:"Providers"})}),ue||j?e.createElement(s.LoadingIndicatorPage,null):e.createElement(t.ContentLayout,null,e.createElement(t.Table,{colCount:3,rowCount:me+1},e.createElement(t.Thead,null,e.createElement(t.Tr,null,e.createElement(t.Th,null,e.createElement(t.Typography,{variant:"sigma",textColor:"neutral600"},i({id:"global.name",defaultMessage:"Name"}))),e.createElement(t.Th,null,e.createElement(t.Typography,{variant:"sigma",textColor:"neutral600"},i({id:(0,l.OB)("Providers.status"),defaultMessage:"Status"}))),e.createElement(t.Th,null,e.createElement(t.Typography,{variant:"sigma"},e.createElement(t.VisuallyHidden,null,i({id:"global.settings",defaultMessage:"Settings"})))))),e.createElement(t.Tbody,null,F.map(u=>e.createElement(t.Tr,{key:u.name,...(0,s.onRowClick)({fn:()=>K(u),condition:q})},e.createElement(t.Td,{width:"45%"},e.createElement(t.Typography,{fontWeight:"semiBold",textColor:"neutral800"},u.name)),e.createElement(t.Td,{width:"65%"},e.createElement(t.Typography,{textColor:u.enabled?"success600":"danger600","data-testid":`enable-${u.name}`},u.enabled?i({id:"global.enabled",defaultMessage:"Enabled"}):i({id:"global.disabled",defaultMessage:"Disabled"}))),e.createElement(t.Td,{...s.stopPropagation},q&&e.createElement(t.IconButton,{onClick:()=>K(u),noBorder:!0,icon:e.createElement(R.Pencil,null),label:"Edit"})))))))),e.createElement(ie,{initialData:k[o],isOpen:b,isSubmiting:y,layout:ge,headerBreadcrumbs:[i({id:(0,l.OB)("PopUpForm.header.edit.providers"),defaultMessage:"Edit Provider"}),U()(o)],onToggle:D,onSubmit:fe,providerToEditName:o}))};var le=()=>e.createElement(s.CheckPagePermissions,{permissions:Q.Z.readProviders},e.createElement(V,null))},59677:function(Y,B,n){n.d(B,{YX:function(){return s},Gc:function(){return S},OB:function(){return U.Z}});var e=n(92891),s=t=>Object.keys(t).reduce((R,P)=>{const r=t[P].controllers,l=Object.keys(r).reduce((M,T)=>((0,e.isEmpty)(r[T])||(M[T]=r[T]),M),{});return(0,e.isEmpty)(l)||(R[P]={controllers:l}),R},{}),Z=n(90201),S=t=>`/${Z.Z}/${t}`,U=n(82069)}}]);
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[8853],{77495:function(b,L,a){"use strict";a.r(L),a.d(L,{default:function(){return We}});var e=a(32735),C=a(5141),o=a(13478),c=a(90201),y=a(88369),t=a(39161),E=a(57269),f=a(5636),v=a(84968),M=a(58469),T=a(59677);const A=async(n,r)=>{try{const{get:s}=(0,o.getFetchClient)(),{data:i}=await s((0,T.Gc)("roles"));return r("The roles have loaded successfully"),i}catch{throw n({type:"warning",message:{id:"notification.error"}}),new Error("error")}},U=async(n,r)=>{try{const{del:s}=(0,o.getFetchClient)();await s(`${(0,T.Gc)("roles")}/${n}`)}catch{r({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}};var w=a(60216),D=a.n(w);const x=({sortedRoles:n,canDelete:r,permissions:s,setRoleToDelete:i,onDelete:d})=>{const{formatMessage:l}=(0,f.useIntl)(),{push:m}=(0,C.useHistory)(),[p,h]=d,g=u=>r&&!["public","authenticated"].includes(u.type),R=u=>{i(u),h(!p)},P=u=>{m(`/settings/${c.Z}/roles/${u}`)};return e.createElement(t.Tbody,null,n?.map(u=>e.createElement(t.Tr,{key:u.name,...(0,o.onRowClick)({fn:()=>P(u.id)})},e.createElement(t.Td,{width:"20%"},e.createElement(t.Typography,null,u.name)),e.createElement(t.Td,{width:"50%"},e.createElement(t.Typography,null,u.description)),e.createElement(t.Td,{width:"30%"},e.createElement(t.Typography,null,`${u.nb_users} ${l({id:"global.users",defaultMessage:"users"}).toLowerCase()}`)),e.createElement(t.Td,null,e.createElement(t.Flex,{justifyContent:"end",...o.stopPropagation},e.createElement(o.CheckPermissions,{permissions:s.updateRole},e.createElement(t.IconButton,{onClick:()=>P(u.id),noBorder:!0,icon:e.createElement(E.Pencil,null),label:l({id:"app.component.table.edit",defaultMessage:"Edit {target}"},{target:`${u.name}`})})),g(u)&&e.createElement(o.CheckPermissions,{permissions:s.deleteRole},e.createElement(t.IconButton,{onClick:()=>R(u.id),noBorder:!0,icon:e.createElement(E.Trash,null),label:l({id:"global.delete-target",defaultMessage:"Delete {target}"},{target:`${u.name}`})})))))))};var N=x;x.defaultProps={canDelete:!1},x.propTypes={onDelete:D().array.isRequired,permissions:D().object.isRequired,setRoleToDelete:D().func.isRequired,sortedRoles:D().array.isRequired,canDelete:D().bool};var W=()=>{const{trackUsage:n}=(0,o.useTracking)(),{formatMessage:r}=(0,f.useIntl)(),{push:s}=(0,C.useHistory)(),i=(0,o.useNotification)(),{notifyStatus:d}=(0,t.useNotifyAT)(),[{query:l}]=(0,o.useQueryParams)(),m=l?._q||"",[p,h]=(0,e.useState)(!1),[g,R]=(0,e.useState)(!1),[P,u]=(0,e.useState)();(0,o.useFocusWhenNavigate)();const S=(0,v.useQueryClient)(),G=(0,e.useMemo)(()=>({create:y.Z.createRole,read:y.Z.readRoles,update:y.Z.updateRole,delete:y.Z.deleteRole}),[]),{isLoading:k,allowedActions:{canRead:B,canDelete:F}}=(0,o.useRBAC)(G),{isLoading:Z,data:{roles:oe},isFetching:Qe}=(0,v.useQuery)("get-roles",()=>A(i,d),{initialData:{},enabled:B}),ie=Z||Qe,ze=()=>{n("willCreateRole"),s(`/settings/${c.Z}/roles/new`)},Ye=()=>{h(!p)},Xe={roles:{id:(0,T.OB)("Roles.empty"),defaultMessage:"You don't have any roles yet."},search:{id:(0,T.OB)("Roles.empty.search"),defaultMessage:"No roles match the search."}},Je=r({id:"global.roles",defaultMessage:"Roles"}),Ke=(0,v.useMutation)(nt=>U(nt,i),{async onSuccess(){await S.invalidateQueries("get-roles")}}),qe=async()=>{R(!0),await Ke.mutateAsync(P),h(!p),R(!1)},V=(0,M.ZP)(oe||[],m,{keys:["name","description"]}),_e=m&&!V.length?"search":"roles",et=4,tt=(oe?.length||0)+1;return e.createElement(t.Layout,null,e.createElement(o.SettingsPageTitle,{name:Je}),e.createElement(t.Main,{"aria-busy":ie},e.createElement(t.HeaderLayout,{title:r({id:"global.roles",defaultMessage:"Roles"}),subtitle:r({id:"Settings.roles.list.description",defaultMessage:"List of roles"}),primaryAction:e.createElement(o.CheckPermissions,{permissions:y.Z.createRole},e.createElement(t.Button,{onClick:ze,startIcon:e.createElement(E.Plus,null),size:"S"},r({id:(0,T.OB)("List.button.roles"),defaultMessage:"Add new role"})))}),e.createElement(t.ActionLayout,{startActions:e.createElement(o.SearchURLQuery,{label:r({id:"app.component.search.label",defaultMessage:"Search"})})}),e.createElement(t.ContentLayout,null,!B&&e.createElement(o.NoPermissions,null),(ie||k)&&e.createElement(o.LoadingIndicatorPage,null),B&&V&&V?.length?e.createElement(t.Table,{colCount:et,rowCount:tt},e.createElement(t.Thead,null,e.createElement(t.Tr,null,e.createElement(t.Th,null,e.createElement(t.Typography,{variant:"sigma",textColor:"neutral600"},r({id:"global.name",defaultMessage:"Name"}))),e.createElement(t.Th,null,e.createElement(t.Typography,{variant:"sigma",textColor:"neutral600"},r({id:"global.description",defaultMessage:"Description"}))),e.createElement(t.Th,null,e.createElement(t.Typography,{variant:"sigma",textColor:"neutral600"},r({id:"global.users",defaultMessage:"Users"}))),e.createElement(t.Th,null,e.createElement(t.VisuallyHidden,null,r({id:"global.actions",defaultMessage:"Actions"}))))),e.createElement(N,{sortedRoles:V,canDelete:F,permissions:y.Z,setRoleToDelete:u,onDelete:[p,h]})):e.createElement(o.EmptyStateLayout,{content:Xe[_e]})),e.createElement(o.ConfirmDialog,{isConfirmButtonLoading:g,onConfirm:qe,onToggleDialog:Ye,isOpen:p})))},ce=()=>e.createElement(o.CheckPagePermissions,{permissions:y.Z.accessRoles},e.createElement(W,null)),X=a(83281),I=a(82069),O=a(92891);const J=(0,e.createContext)({}),K=({children:n,value:r})=>e.createElement(J.Provider,{value:r},n),Q=()=>(0,e.useContext)(J);K.propTypes={children:D().node.isRequired,value:D().object.isRequired};var j=a(83292),ue=a(37213),de=a.n(ue),me=a(15738),ge=a.n(me),pe=n=>{switch(n){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 Ee=(0,j.default)(t.Box)`
|
|
2
|
-
margin: -1px;
|
|
3
|
-
border-radius: ${({theme:n})=>n.spaces[1]} 0 0 ${({theme:n})=>n.spaces[1]};
|
|
4
|
-
`;function z({route:n}){const{formatMessage:r}=(0,f.useIntl)(),{method:s,handler:i,path:d}=n,l=d?ge()(d.split("/")):[],[m="",p=""]=i?i.split("."):[],h=pe(n.method);return e.createElement(t.Flex,{direction:"column",alignItems:"stretch",gap:2},e.createElement(t.Typography,{variant:"delta",as:"h3"},r({id:"users-permissions.BoundRoute.title",defaultMessage:"Bound route to"}),"\xA0",e.createElement("span",null,m),e.createElement(t.Typography,{variant:"delta",textColor:"primary600"},".",p)),e.createElement(t.Flex,{hasRadius:!0,background:"neutral0",borderColor:"neutral200",gap:0},e.createElement(Ee,{background:h.background,borderColor:h.border,padding:2},e.createElement(t.Typography,{fontWeight:"bold",textColor:h.text},s)),e.createElement(t.Box,{paddingLeft:2,paddingRight:2},de()(l,g=>e.createElement(t.Typography,{key:g,textColor:g.includes(":")?"neutral600":"neutral900"},"/",g)))))}z.defaultProps={route:{handler:"Nocontroller.error",method:"GET",path:"/there-is-no-path"}},z.propTypes={route:D().shape({handler:D().string,method:D().string,path:D().string})};var he=z,fe=()=>{const{formatMessage:n}=(0,f.useIntl)(),{selectedAction:r,routes:s}=Q(),i=(0,O.without)(r.split("."),"controllers"),d=(0,O.get)(s,i[0]),l=i.slice(1).join("."),m=(0,O.isEmpty)(d)?[]:d.filter(p=>p.handler.endsWith(l));return e.createElement(t.GridItem,{col:5,background:"neutral150",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,style:{minHeight:"100%"}},r?e.createElement(t.Flex,{direction:"column",alignItems:"stretch",gap:2},m.map((p,h)=>e.createElement(he,{key:h,route:p}))):e.createElement(t.Flex,{direction:"column",alignItems:"stretch",gap:2},e.createElement(t.Typography,{variant:"delta",as:"h3"},n({id:"users-permissions.Policies.header.title",defaultMessage:"Advanced settings"})),e.createElement(t.Typography,{as:"p",textColor:"neutral600"},n({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"}))))},ye=a(23940),Ce=a.n(ye);function Re(n){switch(n){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 Ce()(n.replace("api::","").replace("plugin::",""))}}var be=Re,Te=a(98978),q=a.n(Te);const _=j.css`
|
|
5
|
-
background: ${n=>n.theme.colors.primary100};
|
|
6
|
-
svg {
|
|
7
|
-
opacity: 1;
|
|
8
|
-
}
|
|
9
|
-
`;var ve=(0,j.default)(t.Box)`
|
|
10
|
-
display: flex;
|
|
11
|
-
justify-content: space-between;
|
|
12
|
-
align-items: center;
|
|
13
|
-
|
|
14
|
-
svg {
|
|
15
|
-
opacity: 0;
|
|
16
|
-
path {
|
|
17
|
-
fill: ${n=>n.theme.colors.primary600};
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/* Show active style both on hover and when the action is selected */
|
|
22
|
-
${n=>n.isActive&&_}
|
|
23
|
-
&:hover {
|
|
24
|
-
${_}
|
|
25
|
-
}
|
|
26
|
-
`;const Ae=j.default.div`
|
|
27
|
-
flex: 1;
|
|
28
|
-
align-self: center;
|
|
29
|
-
border-top: 1px solid ${({theme:n})=>n.colors.neutral150};
|
|
30
|
-
`,ee=({subCategory:n})=>{const{formatMessage:r}=(0,f.useIntl)(),{onChange:s,onChangeSelectAll:i,onSelectedAction:d,selectedAction:l,modifiedData:m}=Q(),p=(0,e.useMemo)(()=>(0,O.get)(m,n.name,{}),[m,n]),h=(0,e.useMemo)(()=>Object.values(p).every(u=>u.enabled===!0),[p]),g=(0,e.useMemo)(()=>Object.values(p).some(u=>u.enabled===!0)&&!h,[p,h]),R=(0,e.useCallback)(({target:{name:u}})=>{i({target:{name:u,value:!h}})},[h,i]),P=(0,e.useCallback)(u=>l===u,[l]);return e.createElement(t.Box,null,e.createElement(t.Flex,{justifyContent:"space-between",alignItems:"center"},e.createElement(t.Box,{paddingRight:4},e.createElement(t.Typography,{variant:"sigma",textColor:"neutral600"},n.label)),e.createElement(Ae,null),e.createElement(t.Box,{paddingLeft:4},e.createElement(t.Checkbox,{name:n.name,value:h,onValueChange:u=>R({target:{name:n.name,value:u}}),indeterminate:g},r({id:"app.utils.select-all",defaultMessage:"Select all"})))),e.createElement(t.Flex,{paddingTop:6,paddingBottom:6},e.createElement(t.Grid,{gap:2,style:{flex:1}},n.actions.map(u=>{const S=`${u.name}.enabled`;return e.createElement(t.GridItem,{col:6,key:u.name},e.createElement(ve,{isActive:P(u.name),padding:2,hasRadius:!0},e.createElement(t.Checkbox,{value:(0,O.get)(m,S,!1),name:S,onValueChange:G=>s({target:{name:S,value:G}})},u.label),e.createElement("button",{type:"button","data-testid":"action-cog",onClick:()=>d(u.name),style:{display:"inline-flex",alignItems:"center"}},e.createElement(E.Cog,null))))}))))};ee.propTypes={subCategory:D().object.isRequired};var Pe=ee;const te=({name:n,permissions:r})=>{const s=(0,e.useMemo)(()=>q()(Object.values(r.controllers).reduce((i,d,l)=>{const m=`${n}.controllers.${Object.keys(r.controllers)[l]}`,p=q()(Object.keys(d).reduce((h,g)=>[...h,{...d[g],label:g,name:`${m}.${g}`}],[]),"label");return[...i,{actions:p,label:Object.keys(r.controllers)[l],name:m}]},[]),"label"),[n,r]);return e.createElement(t.Box,{padding:6},s.map(i=>e.createElement(Pe,{key:i.name,subCategory:i})))};te.propTypes={name:D().string.isRequired,permissions:D().object.isRequired};var De=te,Le=(n,r)=>{const s=Object.keys(r).sort().map(i=>({name:i,isOpen:!1}));return{...n,collapses:s}},H=a(97889);const Me={collapses:[]},xe=(n,r)=>(0,H.default)(n,s=>{switch(r.type){case"TOGGLE_COLLAPSE":{s.collapses=n.collapses.map((i,d)=>d===r.index?{...i,isOpen:!i.isOpen}:{...i,isOpen:!1});break}default:return s}});var ke=()=>{const{modifiedData:n}=Q(),{formatMessage:r}=(0,f.useIntl)(),[{collapses:s},i]=(0,e.useReducer)(xe,Me,l=>Le(l,n)),d=l=>i({type:"TOGGLE_COLLAPSE",index:l});return e.createElement(t.Flex,{direction:"column",alignItems:"stretch",gap:1},s.map((l,m)=>e.createElement(t.Accordion,{expanded:l.isOpen,onToggle:()=>d(m),key:l.name,variant:m%2===0?"secondary":void 0},e.createElement(t.AccordionToggle,{title:be(l.name),description:r({id:"users-permissions.Plugin.permissions.plugins.description",defaultMessage:"Define all allowed actions for the {name} plugin."},{name:l.name}),variant:m%2?"primary":"secondary"}),e.createElement(t.AccordionContent,null,e.createElement(t.Box,null,e.createElement(De,{permissions:n[l.name],name:l.name}))))))};const Se={initialData:{},modifiedData:{},routes:{},selectedAction:"",policies:[]};var Be=(n,r)=>(0,H.default)(n,s=>{switch(r.type){case"ON_CHANGE":{const i=r.keys.length,d=r.keys[i-1]==="enabled";if(r.value&&d){const l=(0,O.take)(r.keys,i-1).join(".");s.selectedAction=l}(0,O.set)(s,["modifiedData",...r.keys],r.value);break}case"ON_CHANGE_SELECT_ALL":{const i=["modifiedData",...r.keys],d=(0,O.get)(n,i,{}),l=Object.keys(d).reduce((m,p)=>(m[p]={...d[p],enabled:r.value},m),{});(0,O.set)(s,i,l);break}case"ON_RESET":{s.modifiedData=n.initialData;break}case"ON_SUBMIT_SUCCEEDED":{s.initialData=n.modifiedData;break}case"SELECT_ACTION":{const{actionToSelect:i}=r;s.selectedAction=i===n.selectedAction?"":i;break}default:return s}}),Oe=(n,r,s)=>({...n,initialData:r,modifiedData:r,routes:s});const ne=(0,e.forwardRef)(({permissions:n,routes:r},s)=>{const{formatMessage:i}=(0,f.useIntl)(),[d,l]=(0,e.useReducer)(Be,Se,R=>Oe(R,n,r));(0,e.useImperativeHandle)(s,()=>({getPermissions(){return{permissions:d.modifiedData}},resetForm(){l({type:"ON_RESET"})},setFormAfterSubmit(){l({type:"ON_SUBMIT_SUCCEEDED"})}}));const g={...d,onChange:({target:{name:R,value:P}})=>l({type:"ON_CHANGE",keys:R.split("."),value:P==="empty__string_value"?"":P}),onChangeSelectAll:({target:{name:R,value:P}})=>l({type:"ON_CHANGE_SELECT_ALL",keys:R.split("."),value:P}),onSelectedAction:R=>l({type:"SELECT_ACTION",actionToSelect:R})};return e.createElement(K,{value:g},e.createElement(t.Grid,{gap:0,shadow:"filterShadow",hasRadius:!0,background:"neutral0"},e.createElement(t.GridItem,{col:7,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},e.createElement(t.Flex,{direction:"column",alignItems:"stretch",gap:6},e.createElement(t.Flex,{direction:"column",alignItems:"stretch",gap:2},e.createElement(t.Typography,{variant:"delta",as:"h2"},i({id:(0,I.Z)("Plugins.header.title"),defaultMessage:"Permissions"})),e.createElement(t.Typography,{as:"p",textColor:"neutral600"},i({id:(0,I.Z)("Plugins.header.description"),defaultMessage:"Only actions bound by a route are listed below."}))),e.createElement(ke,null))),e.createElement(fe,null)))});ne.propTypes={permissions:D().object.isRequired,routes:D().object.isRequired};var se=(0,e.memo)(ne);const ut={isLoading:!0,modifiedData:{}},dt=(n,r)=>produce(n,s=>{switch(r.type){case"GET_DATA":{s.isLoading=!0,s.modifiedData={};break}case"GET_DATA_SUCCEEDED":{s.isLoading=!1,s.modifiedData=r.data;break}case"GET_DATA_ERROR":{s.isLoading=!0;break}case"ON_SUBMIT_SUCCEEDED":{s.modifiedData=r.data;break}default:return s}});var mt=null;const gt=(n,r)=>{const{isLoading:s,allowedActions:i}=useRBAC(r),[{isLoading:d,modifiedData:l},m]=useReducer(reducer,initialState),p=useNotification(),h=useRef(!0),g=new AbortController,{signal:R}=g;useEffect(()=>(s||(async()=>{try{m({type:"GET_DATA"});const S=await request(getRequestURL(n),{method:"GET",signal:R});m({type:"GET_DATA_SUCCEEDED",data:S})}catch(S){h.current&&(m({type:"GET_DATA_ERROR"}),console.error(S),p({type:"warning",message:{id:"notification.error"}}))}})(),()=>{g.abort(),h.current=!1}),[s,n]);const P=useCallback(u=>{m({type:"ON_SUBMIT_SUCCEEDED",data:u})},[]);return{allowedActions:i,dispatchSubmitSucceeded:P,isLoading:d,isLoadingForPermissions:s,modifiedData:l}};var pt=null;const Et={roles:[],isLoading:!0},ht=(n,r)=>produce(n,s=>{switch(r.type){case"GET_DATA":{s.isLoading=!0,s.roles=[];break}case"GET_DATA_SUCCEEDED":{s.roles=r.data,s.isLoading=!1;break}case"GET_DATA_ERROR":{s.isLoading=!1;break}default:return s}});var ft=null;const yt=(n=!0)=>{const[{roles:r,isLoading:s},i]=useReducer(reducer,initialState,()=>init(initialState,n)),d=useNotification(),l=useRef(!0),m=new AbortController,{signal:p}=m;useEffect(()=>(n&&h(),()=>{m.abort(),l.current=!1}),[n]);const h=async()=>{try{i({type:"GET_DATA"});const{roles:g}=await request(`/${pluginId}/roles`,{method:"GET",signal:p});i({type:"GET_DATA_SUCCEEDED",data:g})}catch(g){const R=get(g,["response","payload","message"],"An error occured");l.current&&(i({type:"GET_DATA_ERROR"}),R!=="Forbidden"&&d({type:"warning",message:R}))}};return{roles:r,isLoading:s,getData:h}};var Ct=null,Ge=(n,r)=>({...n,isLoading:r});const re={permissions:{},routes:{},isLoading:!0};var Fe=(n,r)=>(0,H.default)(n,s=>{switch(r.type){case"GET_DATA":{s.isLoading=!0,s.permissions={},s.routes={};break}case"GET_DATA_SUCCEEDED":{s.permissions=r.permissions,s.routes=r.routes,s.isLoading=!1;break}case"GET_DATA_ERROR":{s.isLoading=!1;break}default:return s}}),ae=(n=!0)=>{const r=(0,o.useNotification)(),[{permissions:s,routes:i,isLoading:d},l]=(0,e.useReducer)(Fe,re,()=>Ge(re,n)),m=(0,o.useFetchClient)(),p=(0,e.useCallback)(async()=>{try{l({type:"GET_DATA"});const[{permissions:h},{routes:g}]=await Promise.all([`/${c.Z}/permissions`,`/${c.Z}/routes`].map(async R=>(await m.get(R)).data));l({type:"GET_DATA_SUCCEEDED",permissions:(0,T.YX)(h),routes:g})}catch(h){const g=(0,O.get)(h,["response","payload","message"],"An error occured");l({type:"GET_DATA_ERROR"}),g!=="Forbidden"&&r({type:"warning",message:g})}},[r]);return(0,e.useEffect)(()=>{n&&p()},[p,n]),{permissions:s,routes:i,getData:p,isLoading:d}};const Ue={role:{},isLoading:!0};var we=(n,r)=>(0,H.default)(n,s=>{switch(r.type){case"GET_DATA_SUCCEEDED":{s.role=r.role,s.isLoading=!1;break}case"GET_DATA_ERROR":{s.isLoading=!1;break}case"ON_SUBMIT_SUCCEEDED":{s.role.name=r.name,s.role.description=r.description;break}default:return s}}),Ne=n=>{const[r,s]=(0,e.useReducer)(we,Ue),i=(0,o.useNotification)(),d=(0,e.useRef)(null),{get:l}=(0,o.useFetchClient)();(0,e.useEffect)(()=>(d.current=!0,n?m(n):s({type:"GET_DATA_SUCCEEDED",role:{}}),()=>d.current=!1),[n]);const m=async h=>{try{const{data:{role:g}}=await l(`/${c.Z}/roles/${h}`);d.current&&s({type:"GET_DATA_SUCCEEDED",role:g})}catch(g){console.error(g),s({type:"GET_DATA_ERROR"}),i({type:"warning",message:{id:"notification.error"}})}},p=(0,e.useCallback)(h=>{s({type:"ON_SUBMIT_SUCCEEDED",...h})},[]);return{...r,onSubmitSucceeded:p}},$=a(5173),Ie=$.Ry().shape({name:$.Z_().required(o.translatedErrors.required),description:$.Z_().required(o.translatedErrors.required)}),$e=()=>{const{formatMessage:n}=(0,f.useIntl)(),[r,s]=(0,e.useState)(!1),i=(0,o.useNotification)(),{lockApp:d,unlockApp:l}=(0,o.useOverlayBlocker)(),{params:{id:m}}=(0,C.useRouteMatch)(`/settings/${c.Z}/roles/:id`),{isLoading:p,routes:h}=ae(),{role:g,onSubmitSucceeded:R,isLoading:P}=Ne(m),u=(0,e.useRef)(),{put:S}=(0,o.useFetchClient)(),G=async k=>{d(),s(!0);try{const B=u.current.getPermissions();await S(`/${c.Z}/roles/${m}`,{...k,...B,users:[]}),R({name:k.name,description:k.description}),i({type:"success",message:{id:(0,I.Z)("Settings.roles.edited"),defaultMessage:"Role edited"}})}catch(B){console.error(B),i({type:"warning",message:{id:"notification.error",defaultMessage:"An error occurred"}})}s(!1),l()};return P?e.createElement(o.LoadingIndicatorPage,null):e.createElement(t.Main,null,e.createElement(o.SettingsPageTitle,{name:"Roles"}),e.createElement(X.Formik,{enableReinitialize:!0,initialValues:{name:g.name,description:g.description},onSubmit:G,validationSchema:Ie},({handleSubmit:k,values:B,handleChange:F,errors:Z})=>e.createElement(o.Form,{noValidate:!0,onSubmit:k},e.createElement(t.HeaderLayout,{primaryAction:!p&&e.createElement(t.Button,{disabled:g.code==="strapi-super-admin",type:"submit",loading:r,startIcon:e.createElement(E.Check,null)},n({id:"global.save",defaultMessage:"Save"})),title:g.name,subtitle:g.description,navigationAction:e.createElement(o.Link,{startIcon:e.createElement(E.ArrowLeft,null),to:"/settings/users-permissions/roles"},n({id:"global.back",defaultMessage:"Back"}))}),e.createElement(t.ContentLayout,null,e.createElement(t.Flex,{direction:"column",alignItems:"stretch",gap:7},e.createElement(t.Box,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},e.createElement(t.Flex,{direction:"column",alignItems:"stretch",gap:4},e.createElement(t.Typography,{variant:"delta",as:"h2"},n({id:(0,I.Z)("EditPage.form.roles"),defaultMessage:"Role details"})),e.createElement(t.Grid,{gap:4},e.createElement(t.GridItem,{col:6},e.createElement(t.TextInput,{name:"name",value:B.name||"",onChange:F,label:n({id:"global.name",defaultMessage:"Name"}),error:Z.name?n({id:Z.name,defaultMessage:"Invalid value"}):null})),e.createElement(t.GridItem,{col:6},e.createElement(t.Textarea,{name:"description",value:B.description||"",onChange:F,label:n({id:"global.description",defaultMessage:"Description"}),error:Z.description?n({id:Z.description,defaultMessage:"Invalid value"}):null}))))),!p&&e.createElement(se,{ref:u,permissions:g.permissions,routes:h}))))))},Ze=()=>e.createElement(o.CheckPagePermissions,{permissions:y.Z.updateRole},e.createElement($e,null)),je=$.Ry().shape({name:$.Z_().required(o.translatedErrors.required),description:$.Z_().required(o.translatedErrors.required)}),He=()=>{const{formatMessage:n}=(0,f.useIntl)(),[r,s]=(0,e.useState)(!1),i=(0,o.useNotification)(),{goBack:d}=(0,C.useHistory)(),{lockApp:l,unlockApp:m}=(0,o.useOverlayBlocker)(),{isLoading:p,permissions:h,routes:g}=ae(),{trackUsage:R}=(0,o.useTracking)(),P=(0,e.useRef)(),{post:u}=(0,o.useFetchClient)(),S=async G=>{l(),s(!0);try{const k=P.current.getPermissions();await u(`/${c.Z}/roles`,{...G,...k,users:[]}),R("didCreateRole"),i({type:"success",message:{id:(0,I.Z)("Settings.roles.created"),defaultMessage:"Role created"}}),d()}catch(k){console.error(k),i({type:"warning",message:{id:"notification.error",defaultMessage:"An error occurred"}})}s(!1),m()};return e.createElement(t.Main,null,e.createElement(o.SettingsPageTitle,{name:"Roles"}),e.createElement(X.Formik,{enableReinitialize:!0,initialValues:{name:"",description:""},onSubmit:S,validationSchema:je},({handleSubmit:G,values:k,handleChange:B,errors:F})=>e.createElement(o.Form,{noValidate:!0,onSubmit:G},e.createElement(t.HeaderLayout,{primaryAction:!p&&e.createElement(t.Button,{type:"submit",loading:r,startIcon:e.createElement(E.Check,null)},n({id:"global.save",defaultMessage:"Save"})),title:n({id:"Settings.roles.create.title",defaultMessage:"Create a role"}),subtitle:n({id:"Settings.roles.create.description",defaultMessage:"Define the rights given to the role"})}),e.createElement(t.ContentLayout,null,e.createElement(t.Flex,{direction:"column",alignItems:"stretch",gap:7},e.createElement(t.Box,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},e.createElement(t.Flex,{direction:"column",alignItems:"stretch",gap:4},e.createElement(t.Typography,{variant:"delta",as:"h2"},n({id:(0,I.Z)("EditPage.form.roles"),defaultMessage:"Role details"})),e.createElement(t.Grid,{gap:4},e.createElement(t.GridItem,{col:6},e.createElement(t.TextInput,{name:"name",value:k.name||"",onChange:B,label:n({id:"global.name",defaultMessage:"Name"}),error:F.name?n({id:F.name,defaultMessage:"Invalid value"}):null})),e.createElement(t.GridItem,{col:6},e.createElement(t.Textarea,{name:"description",value:k.description||"",onChange:B,label:n({id:"global.description",defaultMessage:"Description"}),error:F.description?n({id:F.description,defaultMessage:"Invalid value"}):null}))))),!p&&e.createElement(se,{ref:P,permissions:h,routes:g}))))))},Ve=()=>e.createElement(o.CheckPagePermissions,{permissions:y.Z.createRole},e.createElement(He,null)),We=()=>e.createElement(o.CheckPagePermissions,{permissions:y.Z.accessRoles},e.createElement(C.Switch,null,e.createElement(C.Route,{path:`/settings/${c.Z}/roles/new`,component:Ve,exact:!0}),e.createElement(C.Route,{path:`/settings/${c.Z}/roles/:id`,component:Ze,exact:!0}),e.createElement(C.Route,{path:`/settings/${c.Z}/roles`,component:ce,exact:!0}),e.createElement(C.Route,{path:"",component:o.NotFound})))},59677:function(b,L,a){"use strict";a.d(L,{YX:function(){return o},Gc:function(){return t},OB:function(){return E.Z}});var e=a(92891),o=f=>Object.keys(f).reduce((v,M)=>{const T=f[M].controllers,A=Object.keys(T).reduce((U,w)=>((0,e.isEmpty)(T[w])||(U[w]=T[w]),U),{});return(0,e.isEmpty)(A)||(v[M]={controllers:A}),v},{}),c=a(90201),t=f=>`/${c.Z}/${f}`,E=a(82069)},56671:function(b,L,a){var e=a(35897),C=a(74741),o=C(e);b.exports=o},52920:function(b,L,a){var e=a(56671),C=a(81580);function o(c,y){var t=-1,E=C(c)?Array(c.length):[];return e(c,function(f,v,M){E[++t]=y(f,v,M)}),E}b.exports=o},50690:function(b,L,a){var e=a(26460),C=a(80166),o=a(88904),c=a(52920),y=a(36024),t=a(76535),E=a(1397),f=a(15362),v=a(77236);function M(T,A,U){A.length?A=e(A,function(x){return v(x)?function(N){return C(N,x.length===1?x[0]:x)}:x}):A=[f];var w=-1;A=e(A,t(o));var D=c(T,function(x,N,le){var W=e(A,function(Y){return Y(x)});return{criteria:W,index:++w,value:x}});return y(D,function(x,N){return E(x,N,U)})}b.exports=M},36024:function(b){function L(a,e){var C=a.length;for(a.sort(e);C--;)a[C]=a[C].value;return a}b.exports=L},40709:function(b,L,a){var e=a(22945);function C(o,c){if(o!==c){var y=o!==void 0,t=o===null,E=o===o,f=e(o),v=c!==void 0,M=c===null,T=c===c,A=e(c);if(!M&&!A&&!f&&o>c||f&&v&&T&&!M&&!A||t&&v&&T||!y&&T||!E)return 1;if(!t&&!f&&!A&&o<c||A&&y&&E&&!t&&!f||M&&y&&E||!v&&E||!T)return-1}return 0}b.exports=C},1397:function(b,L,a){var e=a(40709);function C(o,c,y){for(var t=-1,E=o.criteria,f=c.criteria,v=E.length,M=y.length;++t<v;){var T=e(E[t],f[t]);if(T){if(t>=M)return T;var A=y[t];return T*(A=="desc"?-1:1)}}return o.index-c.index}b.exports=C},74741:function(b,L,a){var e=a(81580);function C(o,c){return function(y,t){if(y==null)return y;if(!e(y))return o(y,t);for(var E=y.length,f=c?E:-1,v=Object(y);(c?f--:++f<E)&&t(v[f],f,v)!==!1;);return y}}b.exports=C},37213:function(b,L,a){var e=a(26460),C=a(88904),o=a(52920),c=a(77236);function y(t,E){var f=c(t)?e:o;return f(t,C(E,3))}b.exports=y},98978:function(b,L,a){var e=a(40314),C=a(50690),o=a(94569),c=a(63108),y=o(function(t,E){if(t==null)return[];var f=E.length;return f>1&&c(t,E[0],E[1])?E=[]:f>2&&c(E[0],E[1],E[2])&&(E=[E[0]]),C(t,e(E,1),[])});b.exports=y},15738:function(b,L,a){var e=a(4293);function C(o){var c=o==null?0:o.length;return c?e(o,1,c):[]}b.exports=C}}]);
|