From d9cc7eda512546c6ad4a23e1adf8dbebfe5e7a72 Mon Sep 17 00:00:00 2001 From: Chaim Lev-Ari Date: Wed, 7 Sep 2022 07:25:00 +0300 Subject: [PATCH] refactor(app): move access-control components [EE-3441] (#7559) --- .../network-row-content/networkRowContent.js | 2 +- app/docker/models/config.js | 2 +- app/docker/models/container.js | 2 +- app/docker/models/network.js | 2 +- app/docker/models/secret.js | 2 +- app/docker/models/service.js | 2 +- app/docker/models/volume.js | 2 +- app/docker/views/configs/edit/configController.js | 2 +- .../views/containers/edit/containerController.js | 4 ++-- app/docker/views/secrets/edit/secretController.js | 2 +- app/docker/views/services/edit/serviceController.js | 2 +- app/docker/views/volumes/edit/volumeController.js | 2 +- .../kube-edit-custom-template-view.controller.js | 2 +- app/portainer/__module.js | 2 -- app/portainer/access-control/index.ts | 7 ------- .../porAccessControlFormController.js | 2 +- .../accessControlForm/porAccessControlFormModel.js | 2 +- .../datatables/genericDatatableController.js | 2 +- app/portainer/filters/filters.js | 2 +- app/portainer/helpers/resourceControlHelper.js | 2 +- app/portainer/models/stack.js | 2 +- app/portainer/react/components/index.ts | 11 +++++++++++ app/portainer/services/formValidator.js | 2 +- .../editCustomTemplateViewController.js | 2 +- app/portainer/views/stacks/edit/stackController.js | 2 +- .../CreateView/CreateContainerInstanceForm.tsx | 2 +- .../CreateContainerInstanceForm.validation.ts | 2 +- .../CreateView/useCreateInstanceMutation.tsx | 2 +- .../CreateView/useLoadFormState.ts | 2 +- .../azure/container-instances/ItemView/ItemView.tsx | 6 +++--- .../ListView/columns/ownership.tsx | 4 ++-- app/react/azure/types.ts | 2 +- .../ContainersDatatable/columns/ownership.tsx | 2 +- app/react/docker/containers/types.ts | 2 +- app/react/docker/containers/utils.ts | 2 +- app/react/docker/networks/ItemView/ItemView.tsx | 6 +++--- app/react/docker/types.ts | 2 +- .../AccessControlForm/AccessControlForm.stories.tsx | 0 .../AccessControlForm/AccessControlForm.test.tsx | 0 .../AccessControlForm/AccessControlForm.tsx | 2 +- .../AccessControlForm.validation.test.ts | 0 .../AccessControlForm/AccessControlForm.validation.ts | 0 .../AccessControlForm.validation.test.ts.snap | 0 .../access-control/AccessControlForm/index.ts | 0 .../AccessControlPaneDetails.test.tsx | 0 .../AccessControlPanel/AccessControlPanel.tsx | 9 --------- .../AccessControlPanel/AccessControlPanelDetails.tsx | 0 .../AccessControlPanelForm.module.css | 0 .../AccessControlPanel/AccessControlPanelForm.tsx | 0 .../access-control/AccessControlPanel/index.ts | 1 + .../access-control/EditDetails/EditDetails.tsx | 0 .../access-control/EditDetails/TeamsField.tsx | 0 .../access-control/EditDetails/UsersField.tsx | 0 .../portainer/access-control/EditDetails/index.ts | 0 .../access-control/EditDetails/useLoadState.ts | 0 .../access-control/EditDetails/useOptions.tsx | 0 .../access-control/access-control.service.ts | 2 +- app/react/portainer/access-control/index.ts | 2 ++ .../access-control/models/ResourceControlViewModel.ts | 0 app/{ => react}/portainer/access-control/types.ts | 0 .../portainer/access-control/utils.test.ts | 0 app/{ => react}/portainer/access-control/utils.ts | 3 +-- 62 files changed, 57 insertions(+), 62 deletions(-) delete mode 100644 app/portainer/access-control/index.ts rename app/{ => react}/portainer/access-control/AccessControlForm/AccessControlForm.stories.tsx (100%) rename app/{ => react}/portainer/access-control/AccessControlForm/AccessControlForm.test.tsx (100%) rename app/{ => react}/portainer/access-control/AccessControlForm/AccessControlForm.tsx (95%) rename app/{ => react}/portainer/access-control/AccessControlForm/AccessControlForm.validation.test.ts (100%) rename app/{ => react}/portainer/access-control/AccessControlForm/AccessControlForm.validation.ts (100%) rename app/{ => react}/portainer/access-control/AccessControlForm/__snapshots__/AccessControlForm.validation.test.ts.snap (100%) rename app/{ => react}/portainer/access-control/AccessControlForm/index.ts (100%) rename app/{ => react}/portainer/access-control/AccessControlPanel/AccessControlPaneDetails.test.tsx (100%) rename app/{ => react}/portainer/access-control/AccessControlPanel/AccessControlPanel.tsx (94%) rename app/{ => react}/portainer/access-control/AccessControlPanel/AccessControlPanelDetails.tsx (100%) rename app/{ => react}/portainer/access-control/AccessControlPanel/AccessControlPanelForm.module.css (100%) rename app/{ => react}/portainer/access-control/AccessControlPanel/AccessControlPanelForm.tsx (100%) create mode 100644 app/react/portainer/access-control/AccessControlPanel/index.ts rename app/{ => react}/portainer/access-control/EditDetails/EditDetails.tsx (100%) rename app/{ => react}/portainer/access-control/EditDetails/TeamsField.tsx (100%) rename app/{ => react}/portainer/access-control/EditDetails/UsersField.tsx (100%) rename app/{ => react}/portainer/access-control/EditDetails/index.ts (100%) rename app/{ => react}/portainer/access-control/EditDetails/useLoadState.ts (100%) rename app/{ => react}/portainer/access-control/EditDetails/useOptions.tsx (100%) rename app/{ => react}/portainer/access-control/access-control.service.ts (97%) create mode 100644 app/react/portainer/access-control/index.ts rename app/{ => react}/portainer/access-control/models/ResourceControlViewModel.ts (100%) rename app/{ => react}/portainer/access-control/types.ts (100%) rename app/{ => react}/portainer/access-control/utils.test.ts (100%) rename app/{ => react}/portainer/access-control/utils.ts (97%) diff --git a/app/docker/components/datatables/networks-datatable/network-row-content/networkRowContent.js b/app/docker/components/datatables/networks-datatable/network-row-content/networkRowContent.js index b9a1abead..62380d8e4 100644 --- a/app/docker/components/datatables/networks-datatable/network-row-content/networkRowContent.js +++ b/app/docker/components/datatables/networks-datatable/network-row-content/networkRowContent.js @@ -1,4 +1,4 @@ -import { ResourceControlOwnership as RCO } from '@/portainer/access-control/types'; +import { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types'; angular.module('portainer.docker').directive('networkRowContent', [ function networkRowContent() { diff --git a/app/docker/models/config.js b/app/docker/models/config.js index 687b1587d..1980d7007 100644 --- a/app/docker/models/config.js +++ b/app/docker/models/config.js @@ -1,4 +1,4 @@ -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; function b64DecodeUnicode(str) { try { diff --git a/app/docker/models/container.js b/app/docker/models/container.js index a9ef10ad4..4d9a378a1 100644 --- a/app/docker/models/container.js +++ b/app/docker/models/container.js @@ -1,5 +1,5 @@ import _ from 'lodash-es'; -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; export function createStatus(statusText) { var status = _.toLower(statusText); diff --git a/app/docker/models/network.js b/app/docker/models/network.js index d1f8f8ad5..d4ca83148 100644 --- a/app/docker/models/network.js +++ b/app/docker/models/network.js @@ -1,4 +1,4 @@ -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; export function NetworkViewModel(data) { this.Id = data.Id; diff --git a/app/docker/models/secret.js b/app/docker/models/secret.js index 559721b58..aea1d7c56 100644 --- a/app/docker/models/secret.js +++ b/app/docker/models/secret.js @@ -1,4 +1,4 @@ -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; export function SecretViewModel(data) { this.Id = data.ID; diff --git a/app/docker/models/service.js b/app/docker/models/service.js index bc3ebd3f9..51f99b2d7 100644 --- a/app/docker/models/service.js +++ b/app/docker/models/service.js @@ -1,4 +1,4 @@ -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; export function ServiceViewModel(data, runningTasks, allTasks) { this.Model = data; diff --git a/app/docker/models/volume.js b/app/docker/models/volume.js index 7a629435a..3910f0c8f 100644 --- a/app/docker/models/volume.js +++ b/app/docker/models/volume.js @@ -1,4 +1,4 @@ -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; export function VolumeViewModel(data) { this.Id = data.Name; diff --git a/app/docker/views/configs/edit/configController.js b/app/docker/views/configs/edit/configController.js index edb361dbe..1cd24742b 100644 --- a/app/docker/views/configs/edit/configController.js +++ b/app/docker/views/configs/edit/configController.js @@ -1,4 +1,4 @@ -import { ResourceControlType } from '@/portainer/access-control/types'; +import { ResourceControlType } from '@/react/portainer/access-control/types'; angular.module('portainer.docker').controller('ConfigController', [ '$scope', diff --git a/app/docker/views/containers/edit/containerController.js b/app/docker/views/containers/edit/containerController.js index df972416f..b4a6884d5 100644 --- a/app/docker/views/containers/edit/containerController.js +++ b/app/docker/views/containers/edit/containerController.js @@ -2,8 +2,8 @@ import moment from 'moment'; import _ from 'lodash-es'; import { PorImageRegistryModel } from 'Docker/models/porImageRegistry'; import { confirmContainerDeletion } from '@/portainer/services/modal.service/prompt'; -import { FeatureId } from 'Portainer/feature-flags/enums'; -import { ResourceControlType } from '@/portainer/access-control/types'; +import { FeatureId } from '@/portainer/feature-flags/enums'; +import { ResourceControlType } from '@/react/portainer/access-control/types'; angular.module('portainer.docker').controller('ContainerController', [ '$q', diff --git a/app/docker/views/secrets/edit/secretController.js b/app/docker/views/secrets/edit/secretController.js index 9d7c701ab..2f44157a3 100644 --- a/app/docker/views/secrets/edit/secretController.js +++ b/app/docker/views/secrets/edit/secretController.js @@ -1,4 +1,4 @@ -import { ResourceControlType } from '@/portainer/access-control/types'; +import { ResourceControlType } from '@/react/portainer/access-control/types'; angular.module('portainer.docker').controller('SecretController', [ '$scope', diff --git a/app/docker/views/services/edit/serviceController.js b/app/docker/views/services/edit/serviceController.js index 157f6839c..087771446 100644 --- a/app/docker/views/services/edit/serviceController.js +++ b/app/docker/views/services/edit/serviceController.js @@ -21,7 +21,7 @@ import _ from 'lodash-es'; import { PorImageRegistryModel } from 'Docker/models/porImageRegistry'; import * as envVarsUtils from '@/portainer/helpers/env-vars'; -import { ResourceControlType } from '@/portainer/access-control/types'; +import { ResourceControlType } from '@/react/portainer/access-control/types'; angular.module('portainer.docker').controller('ServiceController', [ '$q', diff --git a/app/docker/views/volumes/edit/volumeController.js b/app/docker/views/volumes/edit/volumeController.js index 749ffe9d2..ac2850c23 100644 --- a/app/docker/views/volumes/edit/volumeController.js +++ b/app/docker/views/volumes/edit/volumeController.js @@ -1,4 +1,4 @@ -import { ResourceControlType } from '@/portainer/access-control/types'; +import { ResourceControlType } from '@/react/portainer/access-control/types'; angular.module('portainer.docker').controller('VolumeController', [ '$scope', diff --git a/app/kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.controller.js b/app/kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.controller.js index bc260d811..fe6fb26f1 100644 --- a/app/kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.controller.js +++ b/app/kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.controller.js @@ -1,4 +1,4 @@ -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; import { AccessControlFormData } from '@/portainer/components/accessControlForm/porAccessControlFormModel'; import { isBE } from '@/portainer/feature-flags/feature-flags.service'; import { getTemplateVariables, intersectVariables } from '@/react/portainer/custom-templates/components/utils'; diff --git a/app/portainer/__module.js b/app/portainer/__module.js index 28c7e8a94..a97dd5883 100644 --- a/app/portainer/__module.js +++ b/app/portainer/__module.js @@ -7,7 +7,6 @@ import featureFlagModule from './feature-flags'; import userActivityModule from './user-activity'; import servicesModule from './services'; import homeModule from './home'; -import { accessControlModule } from './access-control'; import { reactModule } from './react'; import { sidebarModule } from './react/views/sidebar'; import environmentsModule from './environments'; @@ -39,7 +38,6 @@ angular userActivityModule, 'portainer.shared.datatable', servicesModule, - accessControlModule, reactModule, sidebarModule, environmentsModule, diff --git a/app/portainer/access-control/index.ts b/app/portainer/access-control/index.ts deleted file mode 100644 index 4bd5f8e5c..000000000 --- a/app/portainer/access-control/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import angular from 'angular'; - -import { AccessControlPanelAngular } from './AccessControlPanel/AccessControlPanel'; - -export const accessControlModule = angular - .module('portainer.access-control', []) - .component('accessControlPanel', AccessControlPanelAngular).name; diff --git a/app/portainer/components/accessControlForm/porAccessControlFormController.js b/app/portainer/components/accessControlForm/porAccessControlFormController.js index 34f208f73..08b59b388 100644 --- a/app/portainer/components/accessControlForm/porAccessControlFormController.js +++ b/app/portainer/components/accessControlForm/porAccessControlFormController.js @@ -1,5 +1,5 @@ import _ from 'lodash-es'; -import { ResourceControlOwnership as RCO } from '@/portainer/access-control/types'; +import { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types'; angular.module('portainer.app').controller('porAccessControlFormController', [ '$q', diff --git a/app/portainer/components/accessControlForm/porAccessControlFormModel.js b/app/portainer/components/accessControlForm/porAccessControlFormModel.js index 3c5d16912..e4c77d961 100644 --- a/app/portainer/components/accessControlForm/porAccessControlFormModel.js +++ b/app/portainer/components/accessControlForm/porAccessControlFormModel.js @@ -1,4 +1,4 @@ -import { ResourceControlOwnership as RCO } from '@/portainer/access-control/types'; +import { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types'; /** * @deprecated use only for angularjs components. For react components use ./model.ts diff --git a/app/portainer/components/datatables/genericDatatableController.js b/app/portainer/components/datatables/genericDatatableController.js index 9b1a7b97a..aacbd1d3f 100644 --- a/app/portainer/components/datatables/genericDatatableController.js +++ b/app/portainer/components/datatables/genericDatatableController.js @@ -1,6 +1,6 @@ import _ from 'lodash-es'; import './datatable.css'; -import { ResourceControlOwnership as RCO } from '@/portainer/access-control/types'; +import { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types'; function isBetween(value, a, b) { return (value >= a && value <= b) || (value >= b && value <= a); diff --git a/app/portainer/filters/filters.js b/app/portainer/filters/filters.js index 3dd4493da..32e0e63fa 100644 --- a/app/portainer/filters/filters.js +++ b/app/portainer/filters/filters.js @@ -3,7 +3,7 @@ import _ from 'lodash-es'; import filesize from 'filesize'; import { Eye, EyeOff, Users } from 'react-feather'; -import { ResourceControlOwnership as RCO } from '@/portainer/access-control/types'; +import { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types'; export function truncateLeftRight(text, max, left, right) { max = isNaN(max) ? 50 : max; diff --git a/app/portainer/helpers/resourceControlHelper.js b/app/portainer/helpers/resourceControlHelper.js index a2f20623a..08382db2c 100644 --- a/app/portainer/helpers/resourceControlHelper.js +++ b/app/portainer/helpers/resourceControlHelper.js @@ -1,6 +1,6 @@ import _ from 'lodash-es'; import angular from 'angular'; -import { ResourceControlOwnership as RCO } from '@/portainer/access-control/types'; +import { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types'; import { ResourceControlOwnershipParameters } from '../models/resourceControl/resourceControlOwnershipParameters'; class ResourceControlHelper { diff --git a/app/portainer/models/stack.js b/app/portainer/models/stack.js index 0efb2b7b3..9b5141d1c 100644 --- a/app/portainer/models/stack.js +++ b/app/portainer/models/stack.js @@ -1,4 +1,4 @@ -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; export function StackViewModel(data) { this.Id = data.Id; diff --git a/app/portainer/react/components/index.ts b/app/portainer/react/components/index.ts index 8579f1787..f2a87e4c0 100644 --- a/app/portainer/react/components/index.ts +++ b/app/portainer/react/components/index.ts @@ -4,6 +4,7 @@ import { react2angular } from 'react2angular'; import { r2a } from '@/react-tools/react2angular'; import { Icon } from '@/react/components/Icon'; import { ReactQueryDevtoolsWrapper } from '@/react/components/ReactQueryDevtoolsWrapper'; +import { AccessControlPanel } from '@/react/portainer/access-control'; import { PageHeader } from '@@/PageHeader'; import { TagSelector } from '@@/TagSelector'; @@ -88,4 +89,14 @@ export const componentsModule = angular .component( 'boxSelectorBadgeIcon', react2angular(BadgeIcon, ['featherIcon', 'icon']) + ) + .component( + 'accessControlPanel', + r2a(AccessControlPanel, [ + 'disableOwnershipChange', + 'onUpdateSuccess', + 'resourceControl', + 'resourceId', + 'resourceType', + ]) ).name; diff --git a/app/portainer/services/formValidator.js b/app/portainer/services/formValidator.js index 38eef0adf..7cac12290 100644 --- a/app/portainer/services/formValidator.js +++ b/app/portainer/services/formValidator.js @@ -1,4 +1,4 @@ -import { ResourceControlOwnership as RCO } from '@/portainer/access-control/types'; +import { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types'; angular.module('portainer.app').factory('FormValidator', [ function FormValidatorFactory() { diff --git a/app/portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateViewController.js b/app/portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateViewController.js index d217f03dc..9b3568586 100644 --- a/app/portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateViewController.js +++ b/app/portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateViewController.js @@ -1,5 +1,5 @@ import _ from 'lodash'; -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; import { AccessControlFormData } from 'Portainer/components/accessControlForm/porAccessControlFormModel'; import { getTemplateVariables, intersectVariables } from '@/react/portainer/custom-templates/components/utils'; diff --git a/app/portainer/views/stacks/edit/stackController.js b/app/portainer/views/stacks/edit/stackController.js index 421991848..54fcb05e4 100644 --- a/app/portainer/views/stacks/edit/stackController.js +++ b/app/portainer/views/stacks/edit/stackController.js @@ -1,4 +1,4 @@ -import { ResourceControlType } from '@/portainer/access-control/types'; +import { ResourceControlType } from '@/react/portainer/access-control/types'; import { AccessControlFormData } from 'Portainer/components/accessControlForm/porAccessControlFormModel'; import { FeatureId } from 'Portainer/feature-flags/enums'; import { getEnvironments } from '@/portainer/environments/environment.service'; diff --git a/app/react/azure/container-instances/CreateView/CreateContainerInstanceForm.tsx b/app/react/azure/container-instances/CreateView/CreateContainerInstanceForm.tsx index c4d176c06..3f83fca30 100644 --- a/app/react/azure/container-instances/CreateView/CreateContainerInstanceForm.tsx +++ b/app/react/azure/container-instances/CreateView/CreateContainerInstanceForm.tsx @@ -4,7 +4,7 @@ import { useRouter } from '@uirouter/react'; import { ContainerInstanceFormValues } from '@/react/azure/types'; import * as notifications from '@/portainer/services/notifications'; import { useUser } from '@/portainer/hooks/useUser'; -import { AccessControlForm } from '@/portainer/access-control/AccessControlForm'; +import { AccessControlForm } from '@/react/portainer/access-control/AccessControlForm'; import { useEnvironmentId } from '@/portainer/hooks/useEnvironmentId'; import { FormControl } from '@@/form-components/FormControl'; diff --git a/app/react/azure/container-instances/CreateView/CreateContainerInstanceForm.validation.ts b/app/react/azure/container-instances/CreateView/CreateContainerInstanceForm.validation.ts index ec2c7feab..80b624b1c 100644 --- a/app/react/azure/container-instances/CreateView/CreateContainerInstanceForm.validation.ts +++ b/app/react/azure/container-instances/CreateView/CreateContainerInstanceForm.validation.ts @@ -1,6 +1,6 @@ import { object, string, number, boolean } from 'yup'; -import { validationSchema as accessControlSchema } from '@/portainer/access-control/AccessControlForm/AccessControlForm.validation'; +import { validationSchema as accessControlSchema } from '@/react/portainer/access-control/AccessControlForm/AccessControlForm.validation'; import { validationSchema as portsSchema } from './PortsMappingField.validation'; diff --git a/app/react/azure/container-instances/CreateView/useCreateInstanceMutation.tsx b/app/react/azure/container-instances/CreateView/useCreateInstanceMutation.tsx index 0f9ffb4a8..040508019 100644 --- a/app/react/azure/container-instances/CreateView/useCreateInstanceMutation.tsx +++ b/app/react/azure/container-instances/CreateView/useCreateInstanceMutation.tsx @@ -9,7 +9,7 @@ import { ContainerInstanceFormValues, ResourceGroup, } from '@/react/azure/types'; -import { applyResourceControl } from '@/portainer/access-control/access-control.service'; +import { applyResourceControl } from '@/react/portainer/access-control/access-control.service'; import { getSubscriptionResourceGroups } from './utils'; diff --git a/app/react/azure/container-instances/CreateView/useLoadFormState.ts b/app/react/azure/container-instances/CreateView/useLoadFormState.ts index ffd717812..4214271e8 100644 --- a/app/react/azure/container-instances/CreateView/useLoadFormState.ts +++ b/app/react/azure/container-instances/CreateView/useLoadFormState.ts @@ -5,7 +5,7 @@ import { ResourceGroup, Subscription, } from '@/react/azure/types'; -import { parseAccessControlFormData } from '@/portainer/access-control/utils'; +import { parseAccessControlFormData } from '@/react/portainer/access-control/utils'; import { useUser } from '@/portainer/hooks/useUser'; import { useProvider } from '@/react/azure/queries/useProvider'; import { useResourceGroups } from '@/react/azure/queries/useResourceGroups'; diff --git a/app/react/azure/container-instances/ItemView/ItemView.tsx b/app/react/azure/container-instances/ItemView/ItemView.tsx index da12495e5..92475064c 100644 --- a/app/react/azure/container-instances/ItemView/ItemView.tsx +++ b/app/react/azure/container-instances/ItemView/ItemView.tsx @@ -2,9 +2,9 @@ import { useCurrentStateAndParams } from '@uirouter/react'; import { useQueryClient } from 'react-query'; import { useEnvironmentId } from '@/portainer/hooks/useEnvironmentId'; -import { AccessControlPanel } from '@/portainer/access-control/AccessControlPanel/AccessControlPanel'; -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; -import { ResourceControlType } from '@/portainer/access-control/types'; +import { AccessControlPanel } from '@/react/portainer/access-control/AccessControlPanel/AccessControlPanel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlType } from '@/react/portainer/access-control/types'; import { ContainerGroup, ResourceGroup, diff --git a/app/react/azure/container-instances/ListView/columns/ownership.tsx b/app/react/azure/container-instances/ListView/columns/ownership.tsx index f1aba0f1c..55ac9b271 100644 --- a/app/react/azure/container-instances/ListView/columns/ownership.tsx +++ b/app/react/azure/container-instances/ListView/columns/ownership.tsx @@ -2,9 +2,9 @@ import { Column } from 'react-table'; import clsx from 'clsx'; import { ownershipIcon } from '@/portainer/filters/filters'; -import { ResourceControlOwnership } from '@/portainer/access-control/types'; +import { ResourceControlOwnership } from '@/react/portainer/access-control/types'; import { ContainerGroup } from '@/react/azure/types'; -import { determineOwnership } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { determineOwnership } from '@/react/portainer/access-control/models/ResourceControlViewModel'; export const ownership: Column = { Header: 'Ownership', diff --git a/app/react/azure/types.ts b/app/react/azure/types.ts index eac861c96..3f1a1d781 100644 --- a/app/react/azure/types.ts +++ b/app/react/azure/types.ts @@ -1,4 +1,4 @@ -import { AccessControlFormData } from '@/portainer/access-control/types'; +import { AccessControlFormData } from '@/react/portainer/access-control/types'; import { PortainerMetadata } from '@/react/docker/types'; import { PortMapping } from './container-instances/CreateView/PortsMappingField'; diff --git a/app/react/docker/containers/ListView/ContainersDatatable/columns/ownership.tsx b/app/react/docker/containers/ListView/ContainersDatatable/columns/ownership.tsx index bb3267f2e..92ba27688 100644 --- a/app/react/docker/containers/ListView/ContainersDatatable/columns/ownership.tsx +++ b/app/react/docker/containers/ListView/ContainersDatatable/columns/ownership.tsx @@ -3,7 +3,7 @@ import clsx from 'clsx'; import { ownershipIcon } from '@/portainer/filters/filters'; import type { DockerContainer } from '@/react/docker/containers/types'; -import { ResourceControlOwnership } from '@/portainer/access-control/types'; +import { ResourceControlOwnership } from '@/react/portainer/access-control/types'; export const ownership: Column = { Header: 'Ownership', diff --git a/app/react/docker/containers/types.ts b/app/react/docker/containers/types.ts index 26622cb30..b13797932 100644 --- a/app/react/docker/containers/types.ts +++ b/app/react/docker/containers/types.ts @@ -1,4 +1,4 @@ -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; import { DockerContainerResponse } from './types/response'; diff --git a/app/react/docker/containers/utils.ts b/app/react/docker/containers/utils.ts index b4a912bbe..e7f2c7d17 100644 --- a/app/react/docker/containers/utils.ts +++ b/app/react/docker/containers/utils.ts @@ -2,7 +2,7 @@ import _ from 'lodash'; import { useInfo } from 'Docker/services/system.service'; import { EnvironmentId } from 'Portainer/environments/types'; -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; import { DockerContainer, ContainerStatus } from './types'; import { DockerContainerResponse } from './types/response'; diff --git a/app/react/docker/networks/ItemView/ItemView.tsx b/app/react/docker/networks/ItemView/ItemView.tsx index 1d378f4fc..3192666fb 100644 --- a/app/react/docker/networks/ItemView/ItemView.tsx +++ b/app/react/docker/networks/ItemView/ItemView.tsx @@ -5,10 +5,10 @@ import _ from 'lodash'; import { useEnvironmentId } from '@/portainer/hooks/useEnvironmentId'; import { confirmDeletionAsync } from '@/portainer/services/modal.service/confirm'; -import { AccessControlPanel } from '@/portainer/access-control/AccessControlPanel/AccessControlPanel'; -import { ResourceControlType } from '@/portainer/access-control/types'; +import { AccessControlPanel } from '@/react/portainer/access-control/AccessControlPanel/AccessControlPanel'; +import { ResourceControlType } from '@/react/portainer/access-control/types'; import { DockerContainer } from '@/react/docker/containers/types'; -import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; +import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel'; import { useContainers } from '@/react/docker/containers/queries/containers'; import { PageHeader } from '@@/PageHeader'; diff --git a/app/react/docker/types.ts b/app/react/docker/types.ts index 4dc06a6d1..93b384896 100644 --- a/app/react/docker/types.ts +++ b/app/react/docker/types.ts @@ -1,4 +1,4 @@ -import { ResourceControlResponse } from '@/portainer/access-control/types'; +import { ResourceControlResponse } from '@/react/portainer/access-control/types'; interface AgentMetadata { NodeName: string; diff --git a/app/portainer/access-control/AccessControlForm/AccessControlForm.stories.tsx b/app/react/portainer/access-control/AccessControlForm/AccessControlForm.stories.tsx similarity index 100% rename from app/portainer/access-control/AccessControlForm/AccessControlForm.stories.tsx rename to app/react/portainer/access-control/AccessControlForm/AccessControlForm.stories.tsx diff --git a/app/portainer/access-control/AccessControlForm/AccessControlForm.test.tsx b/app/react/portainer/access-control/AccessControlForm/AccessControlForm.test.tsx similarity index 100% rename from app/portainer/access-control/AccessControlForm/AccessControlForm.test.tsx rename to app/react/portainer/access-control/AccessControlForm/AccessControlForm.test.tsx diff --git a/app/portainer/access-control/AccessControlForm/AccessControlForm.tsx b/app/react/portainer/access-control/AccessControlForm/AccessControlForm.tsx similarity index 95% rename from app/portainer/access-control/AccessControlForm/AccessControlForm.tsx rename to app/react/portainer/access-control/AccessControlForm/AccessControlForm.tsx index dcc436f19..41e502457 100644 --- a/app/portainer/access-control/AccessControlForm/AccessControlForm.tsx +++ b/app/react/portainer/access-control/AccessControlForm/AccessControlForm.tsx @@ -1,11 +1,11 @@ import { FormikErrors } from 'formik'; import { useUser } from '@/portainer/hooks/useUser'; -import { EditDetails } from '@/portainer/access-control/EditDetails/EditDetails'; import { FormSectionTitle } from '@@/form-components/FormSectionTitle'; import { SwitchField } from '@@/form-components/SwitchField'; +import { EditDetails } from '../EditDetails'; import { ResourceControlOwnership, AccessControlFormData } from '../types'; export interface Props { diff --git a/app/portainer/access-control/AccessControlForm/AccessControlForm.validation.test.ts b/app/react/portainer/access-control/AccessControlForm/AccessControlForm.validation.test.ts similarity index 100% rename from app/portainer/access-control/AccessControlForm/AccessControlForm.validation.test.ts rename to app/react/portainer/access-control/AccessControlForm/AccessControlForm.validation.test.ts diff --git a/app/portainer/access-control/AccessControlForm/AccessControlForm.validation.ts b/app/react/portainer/access-control/AccessControlForm/AccessControlForm.validation.ts similarity index 100% rename from app/portainer/access-control/AccessControlForm/AccessControlForm.validation.ts rename to app/react/portainer/access-control/AccessControlForm/AccessControlForm.validation.ts diff --git a/app/portainer/access-control/AccessControlForm/__snapshots__/AccessControlForm.validation.test.ts.snap b/app/react/portainer/access-control/AccessControlForm/__snapshots__/AccessControlForm.validation.test.ts.snap similarity index 100% rename from app/portainer/access-control/AccessControlForm/__snapshots__/AccessControlForm.validation.test.ts.snap rename to app/react/portainer/access-control/AccessControlForm/__snapshots__/AccessControlForm.validation.test.ts.snap diff --git a/app/portainer/access-control/AccessControlForm/index.ts b/app/react/portainer/access-control/AccessControlForm/index.ts similarity index 100% rename from app/portainer/access-control/AccessControlForm/index.ts rename to app/react/portainer/access-control/AccessControlForm/index.ts diff --git a/app/portainer/access-control/AccessControlPanel/AccessControlPaneDetails.test.tsx b/app/react/portainer/access-control/AccessControlPanel/AccessControlPaneDetails.test.tsx similarity index 100% rename from app/portainer/access-control/AccessControlPanel/AccessControlPaneDetails.test.tsx rename to app/react/portainer/access-control/AccessControlPanel/AccessControlPaneDetails.test.tsx diff --git a/app/portainer/access-control/AccessControlPanel/AccessControlPanel.tsx b/app/react/portainer/access-control/AccessControlPanel/AccessControlPanel.tsx similarity index 94% rename from app/portainer/access-control/AccessControlPanel/AccessControlPanel.tsx rename to app/react/portainer/access-control/AccessControlPanel/AccessControlPanel.tsx index 96de9606a..e5599c5d2 100644 --- a/app/portainer/access-control/AccessControlPanel/AccessControlPanel.tsx +++ b/app/react/portainer/access-control/AccessControlPanel/AccessControlPanel.tsx @@ -2,7 +2,6 @@ import { useReducer } from 'react'; import { useUser } from '@/portainer/hooks/useUser'; import { Icon } from '@/react/components/Icon'; -import { r2a } from '@/react-tools/react2angular'; import { TeamMembership, TeamRole } from '@/react/portainer/users/teams/types'; import { useUserMembership } from '@/portainer/users/queries'; @@ -142,11 +141,3 @@ function isLeaderOfAnyRestrictedTeams( resourceControl.TeamAccesses.some((ta) => ta.TeamId === membership.TeamID) ); } - -export const AccessControlPanelAngular = r2a(AccessControlPanel, [ - 'resourceControl', - 'resourceType', - 'disableOwnershipChange', - 'resourceId', - 'onUpdateSuccess', -]); diff --git a/app/portainer/access-control/AccessControlPanel/AccessControlPanelDetails.tsx b/app/react/portainer/access-control/AccessControlPanel/AccessControlPanelDetails.tsx similarity index 100% rename from app/portainer/access-control/AccessControlPanel/AccessControlPanelDetails.tsx rename to app/react/portainer/access-control/AccessControlPanel/AccessControlPanelDetails.tsx diff --git a/app/portainer/access-control/AccessControlPanel/AccessControlPanelForm.module.css b/app/react/portainer/access-control/AccessControlPanel/AccessControlPanelForm.module.css similarity index 100% rename from app/portainer/access-control/AccessControlPanel/AccessControlPanelForm.module.css rename to app/react/portainer/access-control/AccessControlPanel/AccessControlPanelForm.module.css diff --git a/app/portainer/access-control/AccessControlPanel/AccessControlPanelForm.tsx b/app/react/portainer/access-control/AccessControlPanel/AccessControlPanelForm.tsx similarity index 100% rename from app/portainer/access-control/AccessControlPanel/AccessControlPanelForm.tsx rename to app/react/portainer/access-control/AccessControlPanel/AccessControlPanelForm.tsx diff --git a/app/react/portainer/access-control/AccessControlPanel/index.ts b/app/react/portainer/access-control/AccessControlPanel/index.ts new file mode 100644 index 000000000..8401b7cf7 --- /dev/null +++ b/app/react/portainer/access-control/AccessControlPanel/index.ts @@ -0,0 +1 @@ +export { AccessControlPanel } from './AccessControlPanel'; diff --git a/app/portainer/access-control/EditDetails/EditDetails.tsx b/app/react/portainer/access-control/EditDetails/EditDetails.tsx similarity index 100% rename from app/portainer/access-control/EditDetails/EditDetails.tsx rename to app/react/portainer/access-control/EditDetails/EditDetails.tsx diff --git a/app/portainer/access-control/EditDetails/TeamsField.tsx b/app/react/portainer/access-control/EditDetails/TeamsField.tsx similarity index 100% rename from app/portainer/access-control/EditDetails/TeamsField.tsx rename to app/react/portainer/access-control/EditDetails/TeamsField.tsx diff --git a/app/portainer/access-control/EditDetails/UsersField.tsx b/app/react/portainer/access-control/EditDetails/UsersField.tsx similarity index 100% rename from app/portainer/access-control/EditDetails/UsersField.tsx rename to app/react/portainer/access-control/EditDetails/UsersField.tsx diff --git a/app/portainer/access-control/EditDetails/index.ts b/app/react/portainer/access-control/EditDetails/index.ts similarity index 100% rename from app/portainer/access-control/EditDetails/index.ts rename to app/react/portainer/access-control/EditDetails/index.ts diff --git a/app/portainer/access-control/EditDetails/useLoadState.ts b/app/react/portainer/access-control/EditDetails/useLoadState.ts similarity index 100% rename from app/portainer/access-control/EditDetails/useLoadState.ts rename to app/react/portainer/access-control/EditDetails/useLoadState.ts diff --git a/app/portainer/access-control/EditDetails/useOptions.tsx b/app/react/portainer/access-control/EditDetails/useOptions.tsx similarity index 100% rename from app/portainer/access-control/EditDetails/useOptions.tsx rename to app/react/portainer/access-control/EditDetails/useOptions.tsx diff --git a/app/portainer/access-control/access-control.service.ts b/app/react/portainer/access-control/access-control.service.ts similarity index 97% rename from app/portainer/access-control/access-control.service.ts rename to app/react/portainer/access-control/access-control.service.ts index d706a2f79..b94263d23 100644 --- a/app/portainer/access-control/access-control.service.ts +++ b/app/react/portainer/access-control/access-control.service.ts @@ -1,4 +1,4 @@ -import axios, { parseAxiosError } from '../services/axios'; +import axios, { parseAxiosError } from '@/portainer/services/axios'; import { AccessControlFormData, diff --git a/app/react/portainer/access-control/index.ts b/app/react/portainer/access-control/index.ts new file mode 100644 index 000000000..e8e8a7265 --- /dev/null +++ b/app/react/portainer/access-control/index.ts @@ -0,0 +1,2 @@ +export { AccessControlPanel } from './AccessControlPanel'; +export { AccessControlForm } from './AccessControlForm'; diff --git a/app/portainer/access-control/models/ResourceControlViewModel.ts b/app/react/portainer/access-control/models/ResourceControlViewModel.ts similarity index 100% rename from app/portainer/access-control/models/ResourceControlViewModel.ts rename to app/react/portainer/access-control/models/ResourceControlViewModel.ts diff --git a/app/portainer/access-control/types.ts b/app/react/portainer/access-control/types.ts similarity index 100% rename from app/portainer/access-control/types.ts rename to app/react/portainer/access-control/types.ts diff --git a/app/portainer/access-control/utils.test.ts b/app/react/portainer/access-control/utils.test.ts similarity index 100% rename from app/portainer/access-control/utils.test.ts rename to app/react/portainer/access-control/utils.test.ts diff --git a/app/portainer/access-control/utils.ts b/app/react/portainer/access-control/utils.ts similarity index 97% rename from app/portainer/access-control/utils.ts rename to app/react/portainer/access-control/utils.ts index c88cca09c..922dcf9aa 100644 --- a/app/portainer/access-control/utils.ts +++ b/app/react/portainer/access-control/utils.ts @@ -1,6 +1,5 @@ import { TeamId } from '@/react/portainer/users/teams/types'; - -import { UserId } from '../users/types'; +import { UserId } from '@/portainer/users/types'; import { AccessControlFormData,