@strapi/admin 4.3.4 → 4.4.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/src/StrapiApp.js +27 -35
- package/admin/src/components/AuthenticatedApp/index.js +15 -12
- package/admin/src/components/AuthenticatedApp/utils/api.js +1 -1
- package/admin/src/components/AutoReloadOverlayBlockerProvider/index.js +8 -6
- package/admin/src/components/ConfigurationsProvider/index.js +21 -12
- package/admin/src/components/ConfigurationsProvider/reducer.js +1 -1
- package/admin/src/components/GuidedTour/Homepage/components/Stepper.js +1 -1
- package/admin/src/components/GuidedTour/Homepage/index.js +2 -2
- package/admin/src/components/GuidedTour/Modal/components/Content.js +6 -6
- package/admin/src/components/GuidedTour/Modal/components/Modal.js +1 -1
- package/admin/src/components/GuidedTour/Modal/index.js +2 -4
- package/admin/src/components/GuidedTour/Modal/reducer.js +1 -1
- package/admin/src/components/GuidedTour/index.js +4 -4
- package/admin/src/components/GuidedTour/init.js +2 -2
- package/admin/src/components/GuidedTour/reducer.js +1 -1
- package/admin/src/components/GuidedTour/utils/isGuidedTourCompleted.js +1 -1
- package/admin/src/components/GuidedTour/utils/persistStateToLocaleStorage.js +4 -4
- package/admin/src/components/LanguageProvider/index.js +1 -1
- package/admin/src/components/LanguageProvider/init.js +1 -1
- package/admin/src/components/LeftMenu/index.js +6 -6
- package/admin/src/components/Notifications/Notification/index.js +3 -4
- package/admin/src/components/Notifications/index.js +2 -2
- package/admin/src/components/Notifications/reducer.js +2 -2
- package/admin/src/components/PluginsInitializer/index.js +4 -2
- package/admin/src/components/PluginsInitializer/init.js +1 -1
- package/admin/src/components/PluginsInitializer/reducer.js +1 -1
- package/admin/src/components/PrivateRoute/index.js +1 -1
- package/admin/src/components/Providers/index.js +14 -10
- package/admin/src/components/RBACProvider/actions.js +1 -1
- package/admin/src/components/RBACProvider/index.js +1 -1
- package/admin/src/components/RBACProvider/reducer.js +2 -2
- package/admin/src/components/ThemeToggleProvider/index.js +1 -1
- package/admin/src/components/UpgradePlanModal/index.js +1 -1
- package/admin/src/content-manager/components/AttributeFilter/Filters.js +1 -1
- package/admin/src/content-manager/components/AttributeFilter/hooks/useAllowedAttributes.js +1 -1
- package/admin/src/content-manager/components/AttributeFilter/index.js +1 -1
- package/admin/src/content-manager/components/Block/index.js +1 -1
- package/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js +7 -12
- package/admin/src/content-manager/components/DragLayer/index.js +1 -1
- package/admin/src/content-manager/components/DynamicTable/CellContent/RelationMultiple/index.js +1 -1
- package/admin/src/content-manager/components/DynamicTable/CellContent/RepeatableComponent/index.js +1 -1
- package/admin/src/content-manager/components/DynamicTable/TableRows/index.js +4 -4
- package/admin/src/content-manager/components/DynamicTable/index.js +25 -4
- package/admin/src/content-manager/components/DynamicZone/components/AddComponentButton/index.js +18 -20
- package/admin/src/content-manager/components/DynamicZone/components/Component/index.js +1 -1
- package/admin/src/content-manager/components/DynamicZone/components/ComponentPicker/Category/ComponentCard/index.js +1 -1
- package/admin/src/content-manager/components/DynamicZone/components/ComponentPicker/index.js +3 -3
- package/admin/src/content-manager/components/DynamicZone/index.js +10 -10
- package/admin/src/content-manager/components/DynamicZone/utils/connect.js +1 -1
- package/admin/src/content-manager/components/DynamicZone/utils/select.js +1 -1
- package/admin/src/content-manager/components/EditViewDataManagerProvider/index.js +6 -6
- package/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +1 -1
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js +4 -4
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/schema.js +18 -18
- package/admin/src/content-manager/components/FieldComponent/utils/connect.js +1 -1
- package/admin/src/content-manager/components/FieldComponent/utils/select.js +6 -6
- package/admin/src/content-manager/components/FieldTypeIcon/index.js +31 -1
- package/admin/src/content-manager/components/FormTitle/index.js +1 -1
- package/admin/src/content-manager/components/InjectionZoneList/index.js +1 -1
- package/admin/src/content-manager/components/InputJSON/index.js +5 -6
- package/admin/src/content-manager/components/InputJSON/jsonlint.js +13 -13
- package/admin/src/content-manager/components/InputUID/index.js +1 -1
- package/admin/src/content-manager/components/InputUID/regex.js +1 -1
- package/admin/src/content-manager/components/Inputs/index.js +62 -15
- package/admin/src/content-manager/components/Inputs/utils/connect.js +1 -1
- package/admin/src/content-manager/components/Inputs/utils/generateOptions.js +1 -1
- package/admin/src/content-manager/components/Inputs/utils/getStep.js +1 -5
- package/admin/src/content-manager/components/LayoutDndProvider/index.js +6 -6
- package/admin/src/content-manager/components/NonRepeatableComponent/index.js +4 -4
- package/admin/src/content-manager/components/PreviewWysiwyg/utils/mdRenderer.js +1 -1
- package/admin/src/content-manager/components/PreviewWysiwyg/utils/satinizeHtml.js +1 -1
- package/admin/src/content-manager/components/RepeatableComponent/AccordionGroupCustom/index.js +1 -1
- package/admin/src/content-manager/components/RepeatableComponent/DraggedItem/index.js +9 -15
- package/admin/src/content-manager/components/RepeatableComponent/DraggedItem/utils/connect.js +1 -1
- package/admin/src/content-manager/components/RepeatableComponent/index.js +5 -5
- package/admin/src/content-manager/components/RepeatableComponent/utils/connect.js +1 -1
- package/admin/src/content-manager/components/RepeatableComponent/utils/getComponentErrorKeys.js +2 -2
- package/admin/src/content-manager/components/SectionTitle/index.js +1 -1
- package/admin/src/content-manager/components/SelectMany/ListItem.js +1 -1
- package/admin/src/content-manager/components/SelectMany/index.js +1 -1
- package/admin/src/content-manager/components/SelectOne/SingleValue.js +1 -1
- package/admin/src/content-manager/components/SelectWrapper/Option.js +1 -1
- package/admin/src/content-manager/components/SelectWrapper/index.js +16 -26
- package/admin/src/content-manager/components/SelectWrapper/utils/connect.js +1 -1
- package/admin/src/content-manager/components/SingleTypeFormWrapper/index.js +6 -11
- package/admin/src/content-manager/components/SingleTypeFormWrapper/utils/getRequestUrl.js +1 -1
- package/admin/src/content-manager/components/Wysiwyg/Editor.js +1 -1
- package/admin/src/content-manager/components/Wysiwyg/EditorLayout.js +1 -1
- package/admin/src/content-manager/components/Wysiwyg/WysiwygFooter.js +1 -1
- package/admin/src/content-manager/components/Wysiwyg/WysiwygNav.js +4 -4
- package/admin/src/content-manager/components/Wysiwyg/index.js +5 -5
- package/admin/src/content-manager/components/Wysiwyg/utils/utils.js +4 -4
- package/admin/src/content-manager/hooks/useContentTypeLayout/index.js +1 -1
- package/admin/src/content-manager/hooks/useFetchContentTypeLayout/index.js +3 -3
- package/admin/src/content-manager/hooks/useFetchContentTypeLayout/reducer.js +1 -1
- package/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js +7 -7
- package/admin/src/content-manager/hooks/useFindRedirectionLink/index.js +1 -1
- package/admin/src/content-manager/hooks/useFindRedirectionLink/selectors.js +1 -1
- package/admin/src/content-manager/hooks/useSyncRbac/reducer.js +1 -1
- package/admin/src/content-manager/hooks/useSyncRbac/selectors.js +2 -2
- package/admin/src/content-manager/pages/App/LeftMenu/index.js +8 -8
- package/admin/src/content-manager/pages/App/index.js +3 -3
- package/admin/src/content-manager/pages/App/reducer.js +1 -1
- package/admin/src/content-manager/pages/App/selectors.js +4 -4
- package/admin/src/content-manager/pages/App/useModels.js +1 -1
- package/admin/src/content-manager/pages/App/utils/generateModelsLinks.js +2 -2
- package/admin/src/content-manager/pages/CollectionTypeRecursivePath/index.js +1 -1
- package/admin/src/content-manager/pages/ComponentSetttingsView/index.js +2 -2
- package/admin/src/content-manager/pages/EditSettingsView/components/ComponentFieldList.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFieldButton.js +5 -5
- package/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFields.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/components/DynamicZoneList.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/components/FormModal.js +7 -2
- package/admin/src/content-manager/pages/EditSettingsView/components/GenericInput.js +3 -3
- package/admin/src/content-manager/pages/EditSettingsView/components/ModalForm.js +36 -5
- package/admin/src/content-manager/pages/EditSettingsView/components/RelationalFieldButton.js +3 -3
- package/admin/src/content-manager/pages/EditSettingsView/components/RelationalFields.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/index.js +23 -22
- package/admin/src/content-manager/pages/EditSettingsView/reducer.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/utils/createPossibleMainFieldsForModelsAndComponents.js +2 -2
- package/admin/src/content-manager/pages/EditSettingsView/utils/getInputProps.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/utils/layout.js +12 -12
- package/admin/src/content-manager/pages/EditView/DeleteLink/index.js +1 -1
- package/admin/src/content-manager/pages/EditView/DeleteLink/utils/connect.js +1 -1
- package/admin/src/content-manager/pages/EditView/DraftAndPublishBadge/utils/connect.js +1 -1
- package/admin/src/content-manager/pages/EditView/Header/index.js +4 -4
- package/admin/src/content-manager/pages/EditView/Header/utils/connect.js +1 -1
- package/admin/src/content-manager/pages/EditView/Header/utils/getDraftRelations.js +3 -3
- package/admin/src/content-manager/pages/EditView/Informations/utils/getUnits.js +1 -1
- package/admin/src/content-manager/pages/EditView/index.js +98 -94
- package/admin/src/content-manager/pages/EditView/utils/createAttributesLayout.js +2 -2
- package/admin/src/content-manager/pages/EditView/utils/getFieldsActionMatchingPermissions.js +1 -1
- package/admin/src/content-manager/pages/EditViewLayoutManager/Permissions.js +1 -1
- package/admin/src/content-manager/pages/EditViewLayoutManager/reducer.js +1 -1
- package/admin/src/content-manager/pages/EditViewLayoutManager/selectors.js +1 -1
- package/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js +6 -6
- package/admin/src/content-manager/pages/ListSettingsView/components/EditFieldForm.js +4 -3
- package/admin/src/content-manager/pages/ListSettingsView/components/Settings.js +9 -9
- package/admin/src/content-manager/pages/ListSettingsView/components/SortDisplayedFields.js +2 -2
- package/admin/src/content-manager/pages/ListSettingsView/index.js +9 -9
- package/admin/src/content-manager/pages/ListSettingsView/reducer.js +1 -1
- package/admin/src/content-manager/pages/ListSettingsView/utils/ellipsisCardTitle.js +1 -1
- package/admin/src/content-manager/pages/ListView/FieldPicker/index.js +8 -7
- package/admin/src/content-manager/pages/ListView/FieldPicker/utils/getAllAllowedHeader.js +1 -1
- package/admin/src/content-manager/pages/ListView/actions.js +1 -1
- package/admin/src/content-manager/pages/ListView/index.js +3 -3
- package/admin/src/content-manager/pages/ListView/reducer.js +2 -2
- package/admin/src/content-manager/pages/ListView/selectors.js +3 -3
- package/admin/src/content-manager/pages/ListView/utils/createPluginsFilter.js +1 -1
- package/admin/src/content-manager/pages/ListViewLayoutManager/Permissions.js +2 -2
- package/admin/src/content-manager/sharedReducers/crudReducer/actions.js +3 -3
- package/admin/src/content-manager/sharedReducers/crudReducer/reducer.js +1 -1
- package/admin/src/content-manager/sharedReducers/crudReducer/selectors.js +1 -1
- package/admin/src/content-manager/utils/checkIfAttributeIsDisplayable.js +1 -1
- package/admin/src/content-manager/utils/formatLayoutToApi.js +2 -2
- package/admin/src/content-manager/utils/generatePermissionsObject.js +3 -2
- package/admin/src/content-manager/utils/getFieldName.js +2 -2
- package/admin/src/content-manager/utils/getMaxTempKey.js +2 -2
- package/admin/src/content-manager/utils/getRequestUrl.js +1 -1
- package/admin/src/content-manager/utils/getTrad.js +1 -1
- package/admin/src/content-manager/utils/mergeMetasWithSchema.js +2 -2
- package/admin/src/content-manager/utils/removeKeyInObject.js +1 -1
- package/admin/src/content-manager/utils/removePasswordFieldsFromData.js +2 -2
- package/admin/src/core/apis/CustomFields.js +80 -0
- package/admin/src/core/apis/Plugin.js +1 -1
- package/admin/src/core/apis/index.js +1 -0
- package/admin/src/core/store/configureStore.js +1 -1
- package/admin/src/core/store/createReducer.js +1 -1
- package/admin/src/core/utils/axiosInstance.js +4 -4
- package/admin/src/core/utils/createHook.js +2 -2
- package/admin/src/hooks/useFetchEnabledPlugins/index.js +3 -3
- package/admin/src/hooks/useFetchMarketplacePlugins/index.js +3 -3
- package/admin/src/hooks/useFetchMarketplacePlugins/utils/api.js +1 -1
- package/admin/src/hooks/useFetchMarketplaceProviders/index.js +3 -3
- package/admin/src/hooks/useFetchPermissionsLayout/index.js +1 -1
- package/admin/src/hooks/useFetchPermissionsLayout/reducer.js +1 -1
- package/admin/src/hooks/useFetchRole/index.js +4 -4
- package/admin/src/hooks/useFetchRole/reducer.js +1 -1
- package/admin/src/hooks/useMenu/reducer.js +1 -1
- package/admin/src/hooks/useMenu/utils/getGeneralLinks.js +3 -1
- package/admin/src/hooks/useModels/index.js +1 -1
- package/admin/src/hooks/useModels/reducer.js +3 -3
- package/admin/src/hooks/useRolesList/reducer.js +1 -1
- package/admin/src/hooks/useSettingsForm/index.js +2 -2
- package/admin/src/hooks/useSettingsForm/reducer.js +1 -1
- package/admin/src/hooks/useSettingsMenu/index.js +2 -2
- package/admin/src/hooks/useSettingsMenu/init.js +1 -1
- package/admin/src/hooks/useSettingsMenu/reducer.js +3 -3
- package/admin/src/hooks/useSettingsMenu/utils/formatLinks.js +3 -3
- package/admin/src/hooks/useSettingsMenu/utils/sortLinks.js +1 -1
- package/admin/src/index.js +1 -1
- package/admin/src/layouts/UnauthenticatedLayout/LocaleToggle/index.js +1 -1
- package/admin/src/pages/Admin/Onboarding/index.js +2 -2
- package/admin/src/pages/Admin/index.js +2 -2
- package/admin/src/pages/App/index.js +13 -5
- package/admin/src/pages/App/reducer.js +1 -1
- package/admin/src/pages/AuthPage/components/ForgotPassword/index.js +1 -1
- package/admin/src/pages/AuthPage/components/Login/BaseLogin.js +4 -4
- package/admin/src/pages/AuthPage/components/Login/index.js +2 -2
- package/admin/src/pages/AuthPage/components/Register/index.js +6 -6
- package/admin/src/pages/AuthPage/components/ResetPassword/index.js +5 -5
- package/admin/src/pages/AuthPage/init.js +1 -1
- package/admin/src/pages/AuthPage/reducer.js +1 -1
- package/admin/src/pages/AuthPage/utils/forms.js +2 -8
- package/admin/src/pages/HomePage/ContentBlocks.js +1 -1
- package/admin/src/pages/HomePage/SocialLinks.js +1 -1
- package/admin/src/pages/HomePage/index.js +3 -3
- package/admin/src/pages/InstalledPluginsPage/Plugins.js +1 -1
- package/admin/src/pages/MarketplacePage/components/NpmPackagesGrid/index.js +2 -2
- package/admin/src/pages/MarketplacePage/index.js +6 -10
- package/admin/src/pages/ProfilePage/index.js +20 -23
- package/admin/src/pages/ProfilePage/utils/api.js +1 -1
- package/admin/src/pages/SettingsPage/components/SettingsNav/index.js +4 -4
- package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +2 -2
- package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js +8 -6
- package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/index.js +25 -13
- package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/utils/tableHeaders.js +16 -4
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/reducer.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/reducer.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromComputerForm.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromUrlForm.js +2 -2
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/reducer.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +4 -4
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/api.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/getFormData.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/parseFileMetadatas.js +4 -4
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/prefixAllUrls.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/urlToFile.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/ActionRow/index.js +4 -4
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/index.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/index.js +5 -8
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/utils/generateCheckboxesActions.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/index.js +3 -3
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/utils/getRowLabelCheckboxeState.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/Header/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/index.js +8 -12
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/utils/generateHeadersFromActions.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/utils/activeStyle.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/utils/getAvailableActions.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapses/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Curve/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/utils/findDisplayedActions.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/utils/getRowLabelCheckboxesState.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/index.js +9 -8
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/reducer.js +4 -4
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/createDefaultCTFormFromLayout.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/findMatchingPermissions.js +1 -1
- 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/formatLayoutForSettingsAndPlugins.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/formatPermissionsToAPI.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/formatSettingsPermissionsToAPI.js +4 -4
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/updateConditionsToFalse.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/index.js +5 -8
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/utils/formatActions.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/utils/getConditionsButtonState.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/RoleForm/index.js +67 -69
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/RowLabelWithCheckbox/index.js +4 -3
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/utils/createArrayOfValues.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/utils/getCheckboxState.js +3 -3
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/utils/removeConditionKeyFromData.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/index.js +58 -60
- package/admin/src/pages/SettingsPage/pages/Roles/ListPage/index.js +6 -10
- package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +3 -3
- package/admin/src/pages/SettingsPage/pages/Users/EditPage/utils/api.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/DynamicTable/TableRows/index.js +4 -4
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/Filters/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/index.js +8 -8
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/utils/schema.js +2 -8
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/index.js +17 -11
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/utils/api.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/utils/tableHeaders.js +46 -14
- package/admin/src/pages/SettingsPage/pages/Users/components/SelectRoles/index.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Users/utils/validations/users/profile.js +1 -5
- package/admin/src/pages/SettingsPage/pages/Users/utils/validations/users/roles.js +1 -4
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/EventRow.js +5 -5
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/index.js +4 -4
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/utils/formatValue.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/Combobox.js +4 -4
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/TriggerContainer/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/utils/fieldsRegex.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/utils/schema.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/index.js +9 -9
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/reducer.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/utils/formatData.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Webhooks/ListView/index.js +6 -6
- package/admin/src/pages/SettingsPage/pages/Webhooks/ListView/reducer.js +4 -4
- package/admin/src/pages/SettingsPage/utils/createSectionsRoutes.js +3 -3
- package/admin/src/pages/SettingsPage/utils/defaultRoutes.js +12 -12
- package/admin/src/pages/SettingsPage/utils/getSectionsToDisplay.js +2 -2
- package/admin/src/pages/UseCasePage/index.js +2 -2
- package/admin/src/shared/components/InjectionZone/index.js +1 -1
- package/admin/src/shared/hooks/useInjectionZone/index.js +1 -1
- package/admin/src/translations/ca.json +4 -4
- package/admin/src/translations/de.json +4 -4
- package/admin/src/translations/dk.json +4 -4
- package/admin/src/translations/en.json +16 -15
- package/admin/src/translations/es.json +163 -6
- package/admin/src/translations/fr.json +4 -4
- package/admin/src/translations/gu.json +4 -4
- package/admin/src/translations/he.json +3 -3
- package/admin/src/translations/hi.json +4 -4
- package/admin/src/translations/hu.json +4 -4
- package/admin/src/translations/id.json +4 -4
- package/admin/src/translations/it.json +4 -4
- package/admin/src/translations/ja.json +4 -4
- package/admin/src/translations/ko.json +4 -4
- package/admin/src/translations/ml.json +4 -4
- package/admin/src/translations/nl.json +4 -4
- package/admin/src/translations/no.json +3 -3
- package/admin/src/translations/pl.json +4 -4
- package/admin/src/translations/pt-BR.json +177 -24
- package/admin/src/translations/ru.json +4 -4
- package/admin/src/translations/sa.json +4 -4
- package/admin/src/translations/sk.json +4 -4
- package/admin/src/translations/sv.json +665 -11
- package/admin/src/translations/th.json +3 -3
- package/admin/src/translations/zh-Hans.json +12 -15
- package/admin/src/translations/zh.json +4 -4
- package/admin/src/utils/getAttributesToDisplay.js +1 -1
- package/admin/src/utils/getExistingActions.js +2 -2
- package/admin/src/utils/getFullName.js +1 -1
- package/admin/src/utils/getRequestUrl.js +1 -1
- package/admin/src/utils/makeUniqueRoutes.js +2 -2
- package/admin/src/utils/sortLinks.js +1 -1
- package/build/{1669.0551026a.chunk.js → 1669.4ce92b2f.chunk.js} +1 -1
- package/build/524.2437fb56.chunk.js +644 -0
- package/build/{6925.fb35248e.chunk.js → 6925.f5c8b6fc.chunk.js} +4 -4
- package/build/{7866.29d1f169.chunk.js → 7866.22e3c9f8.chunk.js} +1 -1
- package/build/8773.4e36117f.chunk.js +325 -0
- package/build/Admin-authenticatedApp.aaa66872.chunk.js +80 -0
- package/build/Admin_InternalErrorPage.12e24216.chunk.js +1 -0
- package/build/{Admin_marketplace.0b758aac.chunk.js → Admin_marketplace.2d181ad7.chunk.js} +1 -1
- package/build/Admin_pluginsPage.4d59785a.chunk.js +1 -0
- package/build/Admin_profilePage.8617313a.chunk.js +15 -0
- package/build/Admin_settingsPage.e58753c8.chunk.js +178 -0
- package/build/admin-app.1f9e13f8.chunk.js +112 -0
- package/build/admin-edit-roles-page.554ba3fa.chunk.js +1 -0
- package/build/admin-edit-users.5bebf473.chunk.js +10 -0
- package/build/admin-users.1d0aa7a0.chunk.js +11 -0
- package/build/{api-tokens-create-page.442e3be0.chunk.js → api-tokens-create-page.b4a9987d.chunk.js} +1 -1
- package/build/{api-tokens-edit-page.5f34eec7.chunk.js → api-tokens-edit-page.6f5b4e26.chunk.js} +1 -1
- package/build/api-tokens-list-page.06938769.chunk.js +15 -0
- package/build/ca-json.d16c1d28.chunk.js +1 -0
- package/build/content-manager.86f7594d.chunk.js +1178 -0
- package/build/content-type-builder-list-view.9b874fd4.chunk.js +194 -0
- package/build/content-type-builder-translation-en-json.f985c9c4.chunk.js +1 -0
- package/build/content-type-builder-translation-pt-BR-json.d6c7fcc1.chunk.js +1 -0
- package/build/content-type-builder.47ab07ad.chunk.js +145 -0
- package/build/de-json.a9b514dc.chunk.js +1 -0
- package/build/dk-json.09e8d145.chunk.js +1 -0
- package/build/en-json.1bf20384.chunk.js +1 -0
- package/build/es-json.bb1fc425.chunk.js +1 -0
- package/build/fr-json.a3cf2e0b.chunk.js +1 -0
- package/build/gu-json.d8311297.chunk.js +1 -0
- package/build/he-json.3b825d80.chunk.js +1 -0
- package/build/hi-json.0edb8d29.chunk.js +1 -0
- package/build/hu-json.7855529a.chunk.js +1 -0
- package/build/i18n-settings-page.bf1304b0.chunk.js +101 -0
- package/build/i18n-translation-fr-json.b401aa34.chunk.js +1 -0
- package/build/id-json.df9618f2.chunk.js +1 -0
- package/build/index.html +1 -1
- package/build/it-json.a21bf078.chunk.js +1 -0
- package/build/ja-json.7b0d9067.chunk.js +1 -0
- package/build/ko-json.983c1f8f.chunk.js +1 -0
- package/build/main.7db3414f.js +9321 -0
- package/build/ml-json.8dd021c8.chunk.js +1 -0
- package/build/nl-json.29d2eb37.chunk.js +1 -0
- package/build/no-json.40386397.chunk.js +1 -0
- package/build/pl-json.1f04f00c.chunk.js +1 -0
- package/build/pt-BR-json.b4bc8efe.chunk.js +1 -0
- package/build/ru-json.7ab40ccf.chunk.js +1 -0
- package/build/{runtime~main.3dfda620.js → runtime~main.c1c5510b.js} +2 -2
- package/build/sa-json.c5a9f4ea.chunk.js +1 -0
- package/build/sk-json.e4c24c4e.chunk.js +1 -0
- package/build/sv-json.c3f471ae.chunk.js +1 -0
- package/build/th-json.a59ffb32.chunk.js +1 -0
- package/build/upload-translation-es-json.0f90db48.chunk.js +1 -0
- package/build/{upload-translation-th-json.64dd70ce.chunk.js → upload-translation-th-json.9e1fda51.chunk.js} +1 -1
- package/build/upload.7084cea6.chunk.js +7 -0
- package/build/{users-advanced-settings-page.f38654fc.chunk.js → users-advanced-settings-page.f11c8af4.chunk.js} +1 -1
- package/build/{users-email-settings-page.899e7fbd.chunk.js → users-email-settings-page.73c41236.chunk.js} +1 -1
- package/build/{users-providers-settings-page.a0b0fe39.chunk.js → users-providers-settings-page.f8e78537.chunk.js} +1 -1
- package/build/users-roles-settings-page.cafb4fe5.chunk.js +30 -0
- package/build/{webhook-edit-page.3417d93c.chunk.js → webhook-edit-page.9aba79b2.chunk.js} +3 -3
- package/build/zh-Hans-json.77a42bc5.chunk.js +1 -0
- package/build/zh-json.451a0271.chunk.js +1 -0
- package/ee/admin/hooks/useAuthProviders/reducer.js +1 -1
- package/ee/admin/pages/AuthPage/components/Login/index.js +2 -2
- package/ee/admin/pages/AuthPage/components/Providers/SSOProviders.js +3 -3
- package/ee/admin/pages/SettingsPage/SingleSignOn/index.js +3 -3
- package/ee/admin/pages/SettingsPage/pages/Roles/CreatePage/index.js +11 -9
- package/ee/admin/pages/SettingsPage/pages/Roles/ListPage/index.js +8 -8
- package/ee/admin/pages/SettingsPage/pages/Roles/ListPage/reducer.js +1 -1
- package/ee/admin/pages/SettingsPage/utils/customRoutes.js +1 -1
- package/ee/server/controllers/authentication/middlewares.js +1 -1
- package/ee/server/controllers/authentication/utils.js +1 -1
- package/ee/server/controllers/role.js +4 -4
- package/ee/server/services/passport/provider-registry.js +1 -1
- package/ee/server/services/passport/sso.js +1 -1
- package/ee/server/services/passport.js +1 -1
- package/ee/server/services/role.js +1 -1
- package/ee/server/validation/authentication.js +1 -1
- package/ee/server/validation/role.js +3 -6
- package/ee/server/validation/user.js +1 -1
- package/env.js +2 -2
- package/index.js +2 -2
- package/jest.config.front.js +3 -1
- package/package.json +24 -15
- package/scripts/build.js +2 -2
- package/scripts/create-dev-plugins-file.js +5 -7
- package/scripts/create-plugins-file.js +2 -2
- package/server/config/admin-conditions.js +3 -3
- package/server/controllers/admin.js +1 -1
- package/server/controllers/authentication.js +1 -1
- package/server/controllers/formatters/format-actions-by-sections.js +8 -5
- package/server/controllers/role.js +1 -1
- package/server/controllers/user.js +1 -1
- package/server/controllers/webhooks.js +6 -16
- package/server/domain/action/index.js +3 -3
- package/server/domain/action/provider.js +2 -2
- package/server/domain/condition/index.js +2 -2
- package/server/domain/condition/provider.js +1 -1
- package/server/domain/permission/index.js +3 -3
- package/server/domain/user.js +2 -2
- package/server/policies/hasPermissions.js +5 -5
- package/server/policies/isAuthenticatedAdmin.js +1 -1
- package/server/routes/serve-admin-panel.js +1 -1
- package/server/services/action.js +1 -1
- package/server/services/api-token.js +5 -5
- package/server/services/auth.js +2 -2
- package/server/services/condition.js +1 -1
- package/server/services/content-type.js +5 -3
- package/server/services/passport/local-strategy.js +2 -2
- package/server/services/passport.js +2 -4
- package/server/services/permission/engine-hooks.js +1 -1
- package/server/services/permission/engine.js +9 -9
- package/server/services/permission/permissions-manager/query-builers.js +5 -5
- package/server/services/permission/permissions-manager/sanitize.js +6 -10
- package/server/services/permission/queries.js +12 -13
- package/server/services/permission/sections-builder/handlers.js +21 -19
- package/server/services/permission/sections-builder/section.js +2 -2
- package/server/services/permission/sections-builder/utils.js +5 -5
- package/server/services/project-settings.js +9 -12
- package/server/services/role.js +15 -13
- package/server/services/token.js +2 -2
- package/server/services/user.js +11 -11
- package/server/strategies/admin.js +1 -1
- package/server/strategies/api-token.js +3 -3
- package/server/utils/index.js +1 -1
- package/server/validation/action-provider.js +6 -12
- package/server/validation/api-tokens.js +4 -16
- package/server/validation/authentication/renew-token.js +1 -5
- package/server/validation/common-functions/check-fields-are-correctly-nested.js +5 -3
- package/server/validation/common-functions/check-fields-dont-have-duplicates.js +3 -2
- package/server/validation/common-validators.js +74 -71
- package/server/validation/permission.js +13 -13
- package/server/validation/policies/hasPermissions.js +2 -6
- package/server/validation/user.js +1 -5
- package/utils/create-cache-dir.js +3 -3
- package/utils/get-custom-app-config-file.js +3 -3
- package/utils/get-plugins-path.js +3 -2
- package/utils/should-build-admin.js +4 -4
- package/webpack.config.js +2 -7
- package/build/611.aa894d27.chunk.js +0 -158
- package/build/8773.c190837d.chunk.js +0 -330
- package/build/Admin-authenticatedApp.380e5e99.chunk.js +0 -80
- package/build/Admin_InternalErrorPage.25c53284.chunk.js +0 -1
- package/build/Admin_pluginsPage.0992c2b5.chunk.js +0 -1
- package/build/Admin_profilePage.35ce8e94.chunk.js +0 -15
- package/build/Admin_settingsPage.76ee4c17.chunk.js +0 -178
- package/build/admin-app.93ff2e38.chunk.js +0 -112
- package/build/admin-edit-roles-page.358d98c1.chunk.js +0 -1
- package/build/admin-edit-users.7d9cf406.chunk.js +0 -10
- package/build/admin-users.bb3a8eb6.chunk.js +0 -11
- package/build/api-tokens-list-page.5ea3f6ce.chunk.js +0 -15
- package/build/ca-json.0097e443.chunk.js +0 -1
- package/build/content-manager.55791f82.chunk.js +0 -1178
- package/build/content-type-builder-list-view.4a704844.chunk.js +0 -194
- package/build/content-type-builder-translation-en-json.201bfb78.chunk.js +0 -1
- package/build/content-type-builder-translation-pt-BR-json.5739a2aa.chunk.js +0 -1
- package/build/content-type-builder.f48a28f9.chunk.js +0 -142
- package/build/de-json.0b92acd2.chunk.js +0 -1
- package/build/dk-json.9f1bc016.chunk.js +0 -1
- package/build/en-json.6d70e9ff.chunk.js +0 -1
- package/build/es-json.2a5a9fc1.chunk.js +0 -1
- package/build/fr-json.84064a0b.chunk.js +0 -1
- package/build/gu-json.dafa6f0d.chunk.js +0 -1
- package/build/he-json.d40da459.chunk.js +0 -1
- package/build/hi-json.b4ae16d1.chunk.js +0 -1
- package/build/hu-json.c81ce352.chunk.js +0 -1
- package/build/i18n-settings-page.9d426e96.chunk.js +0 -101
- package/build/i18n-translation-fr-json.0839d68d.chunk.js +0 -1
- package/build/id-json.fad45d17.chunk.js +0 -1
- package/build/it-json.12df4cdf.chunk.js +0 -1
- package/build/ja-json.850237e9.chunk.js +0 -1
- package/build/ko-json.2f3d256e.chunk.js +0 -1
- package/build/main.66ef8611.js +0 -9317
- package/build/ml-json.dc946c7f.chunk.js +0 -1
- package/build/nl-json.465b173f.chunk.js +0 -1
- package/build/no-json.e8749dd4.chunk.js +0 -1
- package/build/pl-json.4d11f53d.chunk.js +0 -1
- package/build/pt-BR-json.6301d49b.chunk.js +0 -1
- package/build/ru-json.28147733.chunk.js +0 -1
- package/build/sa-json.be504091.chunk.js +0 -1
- package/build/sk-json.5b33afc2.chunk.js +0 -1
- package/build/sv-json.cdcac02d.chunk.js +0 -1
- package/build/th-json.3aadaec6.chunk.js +0 -1
- package/build/upload-translation-es-json.6b1813b6.chunk.js +0 -1
- package/build/upload.0af4feca.chunk.js +0 -7
- package/build/users-roles-settings-page.1206751f.chunk.js +0 -30
- package/build/zh-Hans-json.eac1d90a.chunk.js +0 -1
- package/build/zh-json.96bf6019.chunk.js +0 -1
|
@@ -43,11 +43,11 @@ const allowedOperations = [
|
|
|
43
43
|
];
|
|
44
44
|
const operations = pick(allowedOperations, sift);
|
|
45
45
|
|
|
46
|
-
const conditionsMatcher = conditions => {
|
|
46
|
+
const conditionsMatcher = (conditions) => {
|
|
47
47
|
return sift.createQueryTester(conditions, { operations });
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
-
module.exports = conditionProvider => {
|
|
50
|
+
module.exports = (conditionProvider) => {
|
|
51
51
|
const state = {
|
|
52
52
|
hooks: createEngineHooks(),
|
|
53
53
|
};
|
|
@@ -112,7 +112,7 @@ module.exports = conditionProvider => {
|
|
|
112
112
|
);
|
|
113
113
|
|
|
114
114
|
const permissionWithSanitizedProperties = invalidProperties.reduce(
|
|
115
|
-
property => permissionDomain.deleteProperty(property, permission),
|
|
115
|
+
(property) => permissionDomain.deleteProperty(property, permission),
|
|
116
116
|
permission
|
|
117
117
|
);
|
|
118
118
|
|
|
@@ -174,13 +174,13 @@ module.exports = conditionProvider => {
|
|
|
174
174
|
const resolveConditions = map(conditionProvider.get);
|
|
175
175
|
|
|
176
176
|
// 2. Filter conditions, only keep those whose handler is a function
|
|
177
|
-
const filterValidConditions = filter(condition => isFunction(condition.handler));
|
|
177
|
+
const filterValidConditions = filter((condition) => isFunction(condition.handler));
|
|
178
178
|
|
|
179
179
|
// 3. Evaluate the conditions handler and returns an object
|
|
180
180
|
// containing both the original condition and its result
|
|
181
|
-
const evaluateConditions = conditions => {
|
|
181
|
+
const evaluateConditions = (conditions) => {
|
|
182
182
|
return Promise.all(
|
|
183
|
-
conditions.map(async condition => ({
|
|
183
|
+
conditions.map(async (condition) => ({
|
|
184
184
|
condition,
|
|
185
185
|
result: await condition.handler(
|
|
186
186
|
user,
|
|
@@ -237,7 +237,7 @@ module.exports = conditionProvider => {
|
|
|
237
237
|
* @returns {function}
|
|
238
238
|
*/
|
|
239
239
|
createRegisterFunction(can, permission, user) {
|
|
240
|
-
const registerToCasl = caslPermission => {
|
|
240
|
+
const registerToCasl = (caslPermission) => {
|
|
241
241
|
const { action, subject, fields, condition } = caslPermission;
|
|
242
242
|
|
|
243
243
|
can(
|
|
@@ -248,7 +248,7 @@ module.exports = conditionProvider => {
|
|
|
248
248
|
);
|
|
249
249
|
};
|
|
250
250
|
|
|
251
|
-
const runWillRegisterHook = async caslPermission => {
|
|
251
|
+
const runWillRegisterHook = async (caslPermission) => {
|
|
252
252
|
const hookContext = createWillRegisterContext(caslPermission, {
|
|
253
253
|
permission,
|
|
254
254
|
user,
|
|
@@ -259,7 +259,7 @@ module.exports = conditionProvider => {
|
|
|
259
259
|
return caslPermission;
|
|
260
260
|
};
|
|
261
261
|
|
|
262
|
-
return async caslPermission => {
|
|
262
|
+
return async (caslPermission) => {
|
|
263
263
|
await runWillRegisterHook(caslPermission);
|
|
264
264
|
registerToCasl(caslPermission);
|
|
265
265
|
};
|
|
@@ -19,7 +19,7 @@ const operatorsMap = {
|
|
|
19
19
|
$not: '$not',
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
const mapKey = key => {
|
|
22
|
+
const mapKey = (key) => {
|
|
23
23
|
if (_.isString(key) && key.startsWith('$') && key in operatorsMap) {
|
|
24
24
|
return operatorsMap[key];
|
|
25
25
|
}
|
|
@@ -27,19 +27,19 @@ const mapKey = key => {
|
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
const buildCaslQuery = (ability, action, model) => {
|
|
30
|
-
return rulesToQuery(ability, action, model, o => o.conditions);
|
|
30
|
+
return rulesToQuery(ability, action, model, (o) => o.conditions);
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
const buildStrapiQuery = caslQuery => {
|
|
33
|
+
const buildStrapiQuery = (caslQuery) => {
|
|
34
34
|
return unwrapDeep(caslQuery);
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
-
const unwrapDeep = obj => {
|
|
37
|
+
const unwrapDeep = (obj) => {
|
|
38
38
|
if (!_.isPlainObject(obj) && !_.isArray(obj)) {
|
|
39
39
|
return obj;
|
|
40
40
|
}
|
|
41
41
|
if (_.isArray(obj)) {
|
|
42
|
-
return obj.map(v => unwrapDeep(v));
|
|
42
|
+
return obj.map((v) => unwrapDeep(v));
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
return _.reduce(
|
|
@@ -19,12 +19,8 @@ const {
|
|
|
19
19
|
|
|
20
20
|
const { contentTypes, traverseEntity, sanitize, pipeAsync } = require('@strapi/utils');
|
|
21
21
|
|
|
22
|
-
const {
|
|
23
|
-
|
|
24
|
-
getNonVisibleAttributes,
|
|
25
|
-
getNonWritableAttributes,
|
|
26
|
-
getWritableAttributes,
|
|
27
|
-
} = contentTypes;
|
|
22
|
+
const { constants, getNonVisibleAttributes, getNonWritableAttributes, getWritableAttributes } =
|
|
23
|
+
contentTypes;
|
|
28
24
|
const {
|
|
29
25
|
ID_ATTRIBUTE,
|
|
30
26
|
CREATED_AT_ATTRIBUTE,
|
|
@@ -73,20 +69,20 @@ module.exports = ({ action, ability, model }) => {
|
|
|
73
69
|
);
|
|
74
70
|
};
|
|
75
71
|
|
|
76
|
-
const wrapSanitize = createSanitizeFunction => {
|
|
72
|
+
const wrapSanitize = (createSanitizeFunction) => {
|
|
77
73
|
const wrappedSanitize = async (data, options = {}) => {
|
|
78
74
|
if (isArray(data)) {
|
|
79
|
-
return Promise.all(data.map(entity => wrappedSanitize(entity, options)));
|
|
75
|
+
return Promise.all(data.map((entity) => wrappedSanitize(entity, options)));
|
|
80
76
|
}
|
|
81
77
|
|
|
82
78
|
const { subject, action: actionOverride } = getDefaultOptions(data, options);
|
|
83
79
|
|
|
84
80
|
const permittedFields = permittedFieldsOf(ability, actionOverride, subject, {
|
|
85
|
-
fieldsFrom: rule => rule.fields || [],
|
|
81
|
+
fieldsFrom: (rule) => rule.fields || [],
|
|
86
82
|
});
|
|
87
83
|
|
|
88
84
|
const hasAtLeastOneRegistered = some(
|
|
89
|
-
fields => !isNil(fields),
|
|
85
|
+
(fields) => !isNil(fields),
|
|
90
86
|
flatMap(prop('fields'), ability.rulesFor(actionOverride, detectSubjectType(subject)))
|
|
91
87
|
);
|
|
92
88
|
const shouldIncludeAllFields = isEmpty(permittedFields) && !hasAtLeastOneRegistered;
|
|
@@ -25,7 +25,7 @@ const permissionDomain = require('../../domain/permission/index');
|
|
|
25
25
|
* @param rolesIds ids of roles
|
|
26
26
|
* @returns {Promise<array>}
|
|
27
27
|
*/
|
|
28
|
-
const deleteByRolesIds = async rolesIds => {
|
|
28
|
+
const deleteByRolesIds = async (rolesIds) => {
|
|
29
29
|
const permissionsToDelete = await strapi.query('admin::permission').findMany({
|
|
30
30
|
select: ['id'],
|
|
31
31
|
where: {
|
|
@@ -43,7 +43,7 @@ const deleteByRolesIds = async rolesIds => {
|
|
|
43
43
|
* @param ids ids of permissions
|
|
44
44
|
* @returns {Promise<array>}
|
|
45
45
|
*/
|
|
46
|
-
const deleteByIds = async ids => {
|
|
46
|
+
const deleteByIds = async (ids) => {
|
|
47
47
|
for (const id of ids) {
|
|
48
48
|
await strapi.query('admin::permission').delete({ where: { id } });
|
|
49
49
|
}
|
|
@@ -54,7 +54,7 @@ const deleteByIds = async ids => {
|
|
|
54
54
|
* @param permissions
|
|
55
55
|
* @returns {Promise<*[]|*>}
|
|
56
56
|
*/
|
|
57
|
-
const createMany = async permissions => {
|
|
57
|
+
const createMany = async (permissions) => {
|
|
58
58
|
const createdPermissions = [];
|
|
59
59
|
for (const permission of permissions) {
|
|
60
60
|
const newPerm = await strapi.query('admin::permission').create({ data: permission });
|
|
@@ -94,11 +94,11 @@ const findMany = async (params = {}) => {
|
|
|
94
94
|
* @param user - user
|
|
95
95
|
* @returns {Promise<Permission[]>}
|
|
96
96
|
*/
|
|
97
|
-
const findUserPermissions = async user => {
|
|
97
|
+
const findUserPermissions = async (user) => {
|
|
98
98
|
return findMany({ where: { role: { users: { id: user.id } } } });
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
-
const filterPermissionsToRemove = async permissions => {
|
|
101
|
+
const filterPermissionsToRemove = async (permissions) => {
|
|
102
102
|
const { actionProvider } = getService('permission');
|
|
103
103
|
|
|
104
104
|
const permissionsToRemove = [];
|
|
@@ -108,7 +108,7 @@ const filterPermissionsToRemove = async permissions => {
|
|
|
108
108
|
const { applyToProperties } = options;
|
|
109
109
|
|
|
110
110
|
const invalidProperties = await Promise.all(
|
|
111
|
-
(applyToProperties || []).map(async property => {
|
|
111
|
+
(applyToProperties || []).map(async (property) => {
|
|
112
112
|
const applies = await actionProvider.appliesToProperty(
|
|
113
113
|
property,
|
|
114
114
|
permission.action,
|
|
@@ -156,12 +156,11 @@ const cleanPermissionsInDatabase = async () => {
|
|
|
156
156
|
|
|
157
157
|
// 2. Clean permissions' fields (add required ones, remove the non-existing ones)
|
|
158
158
|
const remainingPermissions = permissions.filter(
|
|
159
|
-
permission => !permissionsIdToRemove.includes(permission.id)
|
|
159
|
+
(permission) => !permissionsIdToRemove.includes(permission.id)
|
|
160
160
|
);
|
|
161
161
|
|
|
162
|
-
const permissionsWithCleanFields =
|
|
163
|
-
remainingPermissions
|
|
164
|
-
);
|
|
162
|
+
const permissionsWithCleanFields =
|
|
163
|
+
contentTypeService.cleanPermissionFields(remainingPermissions);
|
|
165
164
|
|
|
166
165
|
// Update only the ones that need to be updated
|
|
167
166
|
const permissionsNeedingToBeUpdated = differenceWith(
|
|
@@ -172,7 +171,7 @@ const cleanPermissionsInDatabase = async () => {
|
|
|
172
171
|
remainingPermissions
|
|
173
172
|
);
|
|
174
173
|
|
|
175
|
-
const updatePromiseProvider = permission => {
|
|
174
|
+
const updatePromiseProvider = (permission) => {
|
|
176
175
|
return update({ id: permission.id }, permission);
|
|
177
176
|
};
|
|
178
177
|
|
|
@@ -228,11 +227,11 @@ const ensureBoundPermissionsInDatabase = async () => {
|
|
|
228
227
|
if (missingActions.length > 0) {
|
|
229
228
|
const permissions = pipe(
|
|
230
229
|
// Create a permission skeleton from the action id
|
|
231
|
-
map(action => ({ action, subject: contentType.uid, role: editorRole.id })),
|
|
230
|
+
map((action) => ({ action, subject: contentType.uid, role: editorRole.id })),
|
|
232
231
|
// Use the permission domain to create a clean permission from the given object
|
|
233
232
|
map(permissionDomain.create),
|
|
234
233
|
// Adds the fields property if the permission action is eligible
|
|
235
|
-
map(permission =>
|
|
234
|
+
map((permission) =>
|
|
236
235
|
BOUND_ACTIONS_FOR_FIELDS.includes(permission.action)
|
|
237
236
|
? permissionDomain.setProperty('fields', fields, permission)
|
|
238
237
|
: permission
|
|
@@ -78,21 +78,23 @@ const contentTypesBase = ({ action, section }) => {
|
|
|
78
78
|
/**
|
|
79
79
|
* Initialize the subjects array of a section based on the action's subjects
|
|
80
80
|
*/
|
|
81
|
-
const subjectsHandlerFor =
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
81
|
+
const subjectsHandlerFor =
|
|
82
|
+
(kind) =>
|
|
83
|
+
({ action, section: contentTypesSection }) => {
|
|
84
|
+
const { subjects } = action;
|
|
85
|
+
|
|
86
|
+
const newSubjects = subjects
|
|
87
|
+
// Ignore already added subjects
|
|
88
|
+
.filter(isNotInSubjects(contentTypesSection.subjects))
|
|
89
|
+
// Transform UIDs into content-types
|
|
90
|
+
.map(resolveContentType)
|
|
91
|
+
// Only keep specific kind of content-types
|
|
92
|
+
.filter(isOfKind(kind))
|
|
93
|
+
// Transform the content-types into section's subjects
|
|
94
|
+
.map(toSubjectTemplate);
|
|
95
|
+
|
|
96
|
+
contentTypesSection.subjects.push(...newSubjects);
|
|
97
|
+
};
|
|
96
98
|
|
|
97
99
|
const buildNode = (model, attributeName, attribute) => {
|
|
98
100
|
if (!isVisibleAttribute(model, attributeName)) {
|
|
@@ -113,10 +115,10 @@ const buildNode = (model, attributeName, attribute) => {
|
|
|
113
115
|
return node;
|
|
114
116
|
};
|
|
115
117
|
|
|
116
|
-
const buildDeepAttributesCollection = model => {
|
|
118
|
+
const buildDeepAttributesCollection = (model) => {
|
|
117
119
|
return Object.entries(model.attributes)
|
|
118
120
|
.map(([attributeName, attribute]) => buildNode(model, attributeName, attribute))
|
|
119
|
-
.filter(node => node !== null);
|
|
121
|
+
.filter((node) => node !== null);
|
|
120
122
|
};
|
|
121
123
|
|
|
122
124
|
/**
|
|
@@ -129,8 +131,8 @@ const fieldsProperty = ({ action, section }) => {
|
|
|
129
131
|
const { subjects } = action;
|
|
130
132
|
|
|
131
133
|
section.subjects
|
|
132
|
-
.filter(subject => subjects.includes(subject.uid))
|
|
133
|
-
.forEach(subject => {
|
|
134
|
+
.filter((subject) => subjects.includes(subject.uid))
|
|
135
|
+
.forEach((subject) => {
|
|
134
136
|
const { uid } = subject;
|
|
135
137
|
const contentType = resolveContentType(uid);
|
|
136
138
|
|
|
@@ -29,8 +29,8 @@ const createSection = ({
|
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
// Register initial hooks
|
|
32
|
-
handlers.forEach(handler => state.hooks.handlers.register(handler));
|
|
33
|
-
matchers.forEach(matcher => state.hooks.matchers.register(matcher));
|
|
32
|
+
handlers.forEach((handler) => state.hooks.handlers.register(handler));
|
|
33
|
+
matchers.forEach((matcher) => state.hooks.matchers.register(matcher));
|
|
34
34
|
|
|
35
35
|
return {
|
|
36
36
|
hooks: state.hooks,
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
const { curry, matchesProperty, pick } = require('lodash/fp');
|
|
4
4
|
|
|
5
|
-
const isOfKind = kind => matchesProperty('kind', kind);
|
|
5
|
+
const isOfKind = (kind) => matchesProperty('kind', kind);
|
|
6
6
|
|
|
7
|
-
const resolveContentType = uid => strapi.contentTypes[uid];
|
|
7
|
+
const resolveContentType = (uid) => strapi.contentTypes[uid];
|
|
8
8
|
|
|
9
|
-
const isNotInSubjects = subjects => uid => !subjects.find(subject => subject.uid === uid);
|
|
9
|
+
const isNotInSubjects = (subjects) => (uid) => !subjects.find((subject) => subject.uid === uid);
|
|
10
10
|
|
|
11
11
|
const hasProperty = curry((property, subject) => {
|
|
12
|
-
return !!subject.properties.find(prop => prop.value === property);
|
|
12
|
+
return !!subject.properties.find((prop) => prop.value === property);
|
|
13
13
|
});
|
|
14
14
|
|
|
15
15
|
const getValidOptions = pick(['applyToProperties']);
|
|
16
16
|
|
|
17
|
-
const toSubjectTemplate = ct => ({ uid: ct.uid, label: ct.info.singularName, properties: [] });
|
|
17
|
+
const toSubjectTemplate = (ct) => ({ uid: ct.uid, label: ct.info.singularName, properties: [] });
|
|
18
18
|
|
|
19
19
|
module.exports = {
|
|
20
20
|
isOfKind,
|
|
@@ -8,11 +8,11 @@ const DEFAULT_PROJECT_SETTINGS = {
|
|
|
8
8
|
menuLogo: null,
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
const parseFilesData = async files => {
|
|
11
|
+
const parseFilesData = async (files) => {
|
|
12
12
|
const formatedFilesData = {};
|
|
13
13
|
|
|
14
14
|
await Promise.all(
|
|
15
|
-
PROJECT_SETTINGS_FILE_INPUTS.map(async inputName => {
|
|
15
|
+
PROJECT_SETTINGS_FILE_INPUTS.map(async (inputName) => {
|
|
16
16
|
const file = files[inputName];
|
|
17
17
|
|
|
18
18
|
// Skip empty file inputs
|
|
@@ -35,10 +35,7 @@ const parseFilesData = async files => {
|
|
|
35
35
|
// Add image dimensions
|
|
36
36
|
Object.assign(
|
|
37
37
|
formatedFilesData[inputName],
|
|
38
|
-
await strapi
|
|
39
|
-
.plugin('upload')
|
|
40
|
-
.service('image-manipulation')
|
|
41
|
-
.getDimensions({ getStream })
|
|
38
|
+
await strapi.plugin('upload').service('image-manipulation').getDimensions({ getStream })
|
|
42
39
|
);
|
|
43
40
|
|
|
44
41
|
// Add file path, and stream
|
|
@@ -61,7 +58,7 @@ const getProjectSettings = async () => {
|
|
|
61
58
|
};
|
|
62
59
|
|
|
63
60
|
// Filter file input fields
|
|
64
|
-
PROJECT_SETTINGS_FILE_INPUTS.forEach(inputName => {
|
|
61
|
+
PROJECT_SETTINGS_FILE_INPUTS.forEach((inputName) => {
|
|
65
62
|
if (!projectSettings[inputName]) {
|
|
66
63
|
return;
|
|
67
64
|
}
|
|
@@ -83,14 +80,14 @@ const uploadFiles = async (files = {}) => {
|
|
|
83
80
|
// Call the provider upload function for each file
|
|
84
81
|
return Promise.all(
|
|
85
82
|
Object.values(files)
|
|
86
|
-
.filter(file => file.stream instanceof fs.ReadStream)
|
|
87
|
-
.map(file => strapi.plugin('upload').provider.uploadStream(file))
|
|
83
|
+
.filter((file) => file.stream instanceof fs.ReadStream)
|
|
84
|
+
.map((file) => strapi.plugin('upload').provider.uploadStream(file))
|
|
88
85
|
);
|
|
89
86
|
};
|
|
90
87
|
|
|
91
88
|
const deleteOldFiles = async ({ previousSettings, newSettings }) => {
|
|
92
89
|
return Promise.all(
|
|
93
|
-
PROJECT_SETTINGS_FILE_INPUTS.map(async inputName => {
|
|
90
|
+
PROJECT_SETTINGS_FILE_INPUTS.map(async (inputName) => {
|
|
94
91
|
// Skip if the store doesn't contain project settings
|
|
95
92
|
if (!previousSettings) {
|
|
96
93
|
return;
|
|
@@ -121,14 +118,14 @@ const deleteOldFiles = async ({ previousSettings, newSettings }) => {
|
|
|
121
118
|
);
|
|
122
119
|
};
|
|
123
120
|
|
|
124
|
-
const updateProjectSettings = async newSettings => {
|
|
121
|
+
const updateProjectSettings = async (newSettings) => {
|
|
125
122
|
const store = strapi.store({ type: 'core', name: 'admin' });
|
|
126
123
|
const previousSettings = await store.get({ key: 'project-settings' });
|
|
127
124
|
const files = pick(newSettings, PROJECT_SETTINGS_FILE_INPUTS);
|
|
128
125
|
|
|
129
126
|
await uploadFiles(files);
|
|
130
127
|
|
|
131
|
-
PROJECT_SETTINGS_FILE_INPUTS.forEach(inputName => {
|
|
128
|
+
PROJECT_SETTINGS_FILE_INPUTS.forEach((inputName) => {
|
|
132
129
|
// If the user input exists but is not a formdata "file" remove it
|
|
133
130
|
if (newSettings[inputName] !== undefined && !(typeof newSettings[inputName] === 'object')) {
|
|
134
131
|
newSettings[inputName] = null;
|
package/server/services/role.js
CHANGED
|
@@ -27,7 +27,7 @@ const sanitizeRole = omit(['users', 'permissions']);
|
|
|
27
27
|
const COMPARABLE_FIELDS = ['conditions', 'properties', 'subject', 'action'];
|
|
28
28
|
const pickComparableFields = pick(COMPARABLE_FIELDS);
|
|
29
29
|
|
|
30
|
-
const jsonClean = data => JSON.parse(JSON.stringify(data));
|
|
30
|
+
const jsonClean = (data) => JSON.parse(JSON.stringify(data));
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* Compare two permissions
|
|
@@ -48,7 +48,7 @@ const arePermissionsEqual = (p1, p2) => {
|
|
|
48
48
|
* @param attributes A partial role object
|
|
49
49
|
* @returns {Promise<role>}
|
|
50
50
|
*/
|
|
51
|
-
const create = async attributes => {
|
|
51
|
+
const create = async (attributes) => {
|
|
52
52
|
const alreadyExists = await exists({ name: attributes.name });
|
|
53
53
|
|
|
54
54
|
if (alreadyExists) {
|
|
@@ -107,9 +107,9 @@ const find = (params = {}, populate) => {
|
|
|
107
107
|
* Find all roles in database
|
|
108
108
|
* @returns {Promise<array>}
|
|
109
109
|
*/
|
|
110
|
-
const findAllWithUsersCount = async populate => {
|
|
110
|
+
const findAllWithUsersCount = async (populate) => {
|
|
111
111
|
const roles = await strapi.query('admin::role').findMany({ populate });
|
|
112
|
-
for (
|
|
112
|
+
for (const role of roles) {
|
|
113
113
|
role.usersCount = await getUsersCount(role.id);
|
|
114
114
|
}
|
|
115
115
|
|
|
@@ -171,7 +171,7 @@ const checkRolesIdForDeletion = async (ids = []) => {
|
|
|
171
171
|
throw new ApplicationError('You cannot delete the super admin role');
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
for (
|
|
174
|
+
for (const roleId of ids) {
|
|
175
175
|
const usersCount = await getUsersCount(roleId);
|
|
176
176
|
if (usersCount !== 0) {
|
|
177
177
|
throw new ApplicationError('Some roles are still assigned to some users');
|
|
@@ -205,7 +205,7 @@ const deleteByIds = async (ids = []) => {
|
|
|
205
205
|
* @returns {Promise<number>}
|
|
206
206
|
* @param roleId
|
|
207
207
|
*/
|
|
208
|
-
const getUsersCount = async roleId => {
|
|
208
|
+
const getUsersCount = async (roleId) => {
|
|
209
209
|
return strapi.query('admin::user').count({ where: { roles: { id: roleId } } });
|
|
210
210
|
};
|
|
211
211
|
|
|
@@ -231,7 +231,7 @@ const createRolesIfNoneExist = async () => {
|
|
|
231
231
|
const { actionProvider } = getService('permission');
|
|
232
232
|
|
|
233
233
|
const allActions = actionProvider.values();
|
|
234
|
-
const contentTypesActions = allActions.filter(a => a.section === 'contentTypes');
|
|
234
|
+
const contentTypesActions = allActions.filter((a) => a.section === 'contentTypes');
|
|
235
235
|
|
|
236
236
|
// create 3 roles
|
|
237
237
|
const superAdminRole = await create({
|
|
@@ -264,7 +264,7 @@ const createRolesIfNoneExist = async () => {
|
|
|
264
264
|
|
|
265
265
|
const authorPermissions = editorPermissions
|
|
266
266
|
.filter(({ action }) => action !== ACTIONS.publish)
|
|
267
|
-
.map(permission =>
|
|
267
|
+
.map((permission) =>
|
|
268
268
|
permissionDomain.create({ ...permission, conditions: ['admin::is-creator'] })
|
|
269
269
|
);
|
|
270
270
|
|
|
@@ -368,7 +368,7 @@ const addPermissions = async (roleId, permissions) => {
|
|
|
368
368
|
return createMany(permissionsWithRole);
|
|
369
369
|
};
|
|
370
370
|
|
|
371
|
-
const isContentTypeAction = action => action.section === CONTENT_TYPE_SECTION;
|
|
371
|
+
const isContentTypeAction = (action) => action.section === CONTENT_TYPE_SECTION;
|
|
372
372
|
|
|
373
373
|
/**
|
|
374
374
|
* Reset super admin permissions (giving it all permissions)
|
|
@@ -385,8 +385,8 @@ const resetSuperAdminPermissions = async () => {
|
|
|
385
385
|
|
|
386
386
|
const allActions = permissionService.actionProvider.values();
|
|
387
387
|
|
|
388
|
-
const contentTypesActions = allActions.filter(action => isContentTypeAction(action));
|
|
389
|
-
const otherActions = allActions.filter(action => !isContentTypeAction(action));
|
|
388
|
+
const contentTypesActions = allActions.filter((action) => isContentTypeAction(action));
|
|
389
|
+
const otherActions = allActions.filter((action) => !isContentTypeAction(action));
|
|
390
390
|
|
|
391
391
|
// First, get the content-types permissions
|
|
392
392
|
const permissions = contentTypeService.getPermissionsWithNestedFields(contentTypesActions);
|
|
@@ -396,7 +396,9 @@ const resetSuperAdminPermissions = async () => {
|
|
|
396
396
|
const { actionId, subjects } = action;
|
|
397
397
|
|
|
398
398
|
if (isArray(subjects)) {
|
|
399
|
-
acc.push(
|
|
399
|
+
acc.push(
|
|
400
|
+
...subjects.map((subject) => permissionDomain.create({ action: actionId, subject }))
|
|
401
|
+
);
|
|
400
402
|
} else {
|
|
401
403
|
acc.push(permissionDomain.create({ action: actionId }));
|
|
402
404
|
}
|
|
@@ -416,7 +418,7 @@ const resetSuperAdminPermissions = async () => {
|
|
|
416
418
|
* @param {object} user
|
|
417
419
|
* @return {boolean}
|
|
418
420
|
*/
|
|
419
|
-
const hasSuperAdminRole = user => {
|
|
421
|
+
const hasSuperAdminRole = (user) => {
|
|
420
422
|
const roles = _.get(user, 'roles', []);
|
|
421
423
|
|
|
422
424
|
return roles.map(prop('code')).includes(SUPER_ADMIN_CODE);
|
package/server/services/token.js
CHANGED
|
@@ -27,7 +27,7 @@ const createToken = () => {
|
|
|
27
27
|
* Creates a JWT token for an administration user
|
|
28
28
|
* @param {object} user - admin user
|
|
29
29
|
*/
|
|
30
|
-
const createJwtToken = user => {
|
|
30
|
+
const createJwtToken = (user) => {
|
|
31
31
|
const { options, secret } = getTokenOptions();
|
|
32
32
|
|
|
33
33
|
return jwt.sign({ id: user.id }, secret, options);
|
|
@@ -38,7 +38,7 @@ const createJwtToken = user => {
|
|
|
38
38
|
* @param {string} token - a token to decode
|
|
39
39
|
* @return {Object} decodeInfo - the decoded info
|
|
40
40
|
*/
|
|
41
|
-
const decodeJwtToken = token => {
|
|
41
|
+
const decodeJwtToken = (token) => {
|
|
42
42
|
const { secret } = getTokenOptions();
|
|
43
43
|
|
|
44
44
|
try {
|
package/server/services/user.js
CHANGED
|
@@ -9,13 +9,13 @@ const { password: passwordValidator } = require('../validation/common-validators
|
|
|
9
9
|
const { getService } = require('../utils');
|
|
10
10
|
const { SUPER_ADMIN_CODE } = require('./constants');
|
|
11
11
|
|
|
12
|
-
const sanitizeUserRoles = role => _.pick(role, ['id', 'name', 'description', 'code']);
|
|
12
|
+
const sanitizeUserRoles = (role) => _.pick(role, ['id', 'name', 'description', 'code']);
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Remove private user fields
|
|
16
16
|
* @param {Object} user - user to sanitize
|
|
17
17
|
*/
|
|
18
|
-
const sanitizeUser = user => {
|
|
18
|
+
const sanitizeUser = (user) => {
|
|
19
19
|
return {
|
|
20
20
|
..._.omit(user, ['password', 'resetPasswordToken', 'registrationToken', 'roles']),
|
|
21
21
|
roles: user.roles && user.roles.map(sanitizeUserRoles),
|
|
@@ -27,7 +27,7 @@ const sanitizeUser = user => {
|
|
|
27
27
|
* @param attributes A partial user object
|
|
28
28
|
* @returns {Promise<user>}
|
|
29
29
|
*/
|
|
30
|
-
const create = async attributes => {
|
|
30
|
+
const create = async (attributes) => {
|
|
31
31
|
const userInfo = {
|
|
32
32
|
registrationToken: getService('token').createToken(),
|
|
33
33
|
...attributes,
|
|
@@ -120,7 +120,7 @@ const resetPasswordByEmail = async (email, password) => {
|
|
|
120
120
|
* Check if a user is the last super admin
|
|
121
121
|
* @param {int|string} userId user's id to look for
|
|
122
122
|
*/
|
|
123
|
-
const isLastSuperAdminUser = async userId => {
|
|
123
|
+
const isLastSuperAdminUser = async (userId) => {
|
|
124
124
|
const user = await findOne(userId);
|
|
125
125
|
const superAdminRole = await getService('role').getSuperAdminWithUsersCount();
|
|
126
126
|
|
|
@@ -141,7 +141,7 @@ const exists = async (attributes = {}) => {
|
|
|
141
141
|
* @param {string} registrationToken - a user registration token
|
|
142
142
|
* @returns {Promise<registrationInfo>} - Returns user email, firstname and lastname
|
|
143
143
|
*/
|
|
144
|
-
const findRegistrationInfo = async registrationToken => {
|
|
144
|
+
const findRegistrationInfo = async (registrationToken) => {
|
|
145
145
|
const user = await strapi.query('admin::user').findOne({ where: { registrationToken } });
|
|
146
146
|
|
|
147
147
|
if (!user) {
|
|
@@ -206,7 +206,7 @@ const findPage = async (query = {}) => {
|
|
|
206
206
|
* @param id id of the user to delete
|
|
207
207
|
* @returns {Promise<user>}
|
|
208
208
|
*/
|
|
209
|
-
const deleteById = async id => {
|
|
209
|
+
const deleteById = async (id) => {
|
|
210
210
|
// Check at least one super admin remains
|
|
211
211
|
const userToDelete = await strapi.query('admin::user').findOne({
|
|
212
212
|
where: { id },
|
|
@@ -218,7 +218,7 @@ const deleteById = async id => {
|
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
if (userToDelete) {
|
|
221
|
-
if (userToDelete.roles.some(r => r.code === SUPER_ADMIN_CODE)) {
|
|
221
|
+
if (userToDelete.roles.some((r) => r.code === SUPER_ADMIN_CODE)) {
|
|
222
222
|
const superAdminRole = await getService('role').getSuperAdminWithUsersCount();
|
|
223
223
|
if (superAdminRole.usersCount === 1) {
|
|
224
224
|
throw new ValidationError('You must have at least one user with super admin role.');
|
|
@@ -233,7 +233,7 @@ const deleteById = async id => {
|
|
|
233
233
|
* @param ids ids of the users to delete
|
|
234
234
|
* @returns {Promise<user>}
|
|
235
235
|
*/
|
|
236
|
-
const deleteByIds = async ids => {
|
|
236
|
+
const deleteByIds = async (ids) => {
|
|
237
237
|
// Check at least one super admin remains
|
|
238
238
|
const superAdminRole = await getService('role').getSuperAdminWithUsersCount();
|
|
239
239
|
const nbOfSuperAdminToDelete = await strapi.query('admin::user').count({
|
|
@@ -285,7 +285,7 @@ const count = async (where = {}) => {
|
|
|
285
285
|
/** Assign some roles to several users
|
|
286
286
|
* @returns {undefined}
|
|
287
287
|
*/
|
|
288
|
-
const assignARoleToAll = async roleId => {
|
|
288
|
+
const assignARoleToAll = async (roleId) => {
|
|
289
289
|
const users = await strapi.query('admin::user').findMany({
|
|
290
290
|
select: ['id'],
|
|
291
291
|
where: {
|
|
@@ -294,7 +294,7 @@ const assignARoleToAll = async roleId => {
|
|
|
294
294
|
});
|
|
295
295
|
|
|
296
296
|
await Promise.all(
|
|
297
|
-
users.map(user => {
|
|
297
|
+
users.map((user) => {
|
|
298
298
|
return strapi.query('admin::user').update({
|
|
299
299
|
where: { id: user.id },
|
|
300
300
|
data: { roles: [roleId] },
|
|
@@ -320,7 +320,7 @@ const displayWarningIfUsersDontHaveRole = async () => {
|
|
|
320
320
|
const getLanguagesInUse = async () => {
|
|
321
321
|
const users = await strapi.query('admin::user').findMany({ select: ['preferedLanguage'] });
|
|
322
322
|
|
|
323
|
-
return users.map(user => user.preferedLanguage || 'en');
|
|
323
|
+
return users.map((user) => user.preferedLanguage || 'en');
|
|
324
324
|
};
|
|
325
325
|
|
|
326
326
|
module.exports = {
|
|
@@ -4,9 +4,9 @@ const { UnauthorizedError, ForbiddenError } = require('@strapi/utils').errors;
|
|
|
4
4
|
const constants = require('../services/constants');
|
|
5
5
|
const { getService } = require('../utils');
|
|
6
6
|
|
|
7
|
-
const isReadScope = scope => scope.endsWith('find') || scope.endsWith('findOne');
|
|
7
|
+
const isReadScope = (scope) => scope.endsWith('find') || scope.endsWith('findOne');
|
|
8
8
|
|
|
9
|
-
const extractToken = ctx => {
|
|
9
|
+
const extractToken = (ctx) => {
|
|
10
10
|
if (ctx.request && ctx.request.header && ctx.request.header.authorization) {
|
|
11
11
|
const parts = ctx.request.header.authorization.split(/\s+/);
|
|
12
12
|
|
|
@@ -21,7 +21,7 @@ const extractToken = ctx => {
|
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
/** @type {import('.').AuthenticateFunction} */
|
|
24
|
-
const authenticate = async ctx => {
|
|
24
|
+
const authenticate = async (ctx) => {
|
|
25
25
|
const apiTokenService = getService('api-token');
|
|
26
26
|
const token = extractToken(ctx);
|
|
27
27
|
|