refactor(app): move access-control components [EE-3441] (#7559)

pull/7623/head
Chaim Lev-Ari 2022-09-07 07:25:00 +03:00 committed by GitHub
parent 77c3f9131b
commit d9cc7eda51
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
62 changed files with 57 additions and 62 deletions

View File

@ -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', [ angular.module('portainer.docker').directive('networkRowContent', [
function networkRowContent() { function networkRowContent() {

View File

@ -1,4 +1,4 @@
import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';
function b64DecodeUnicode(str) { function b64DecodeUnicode(str) {
try { try {

View File

@ -1,5 +1,5 @@
import _ from 'lodash-es'; 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) { export function createStatus(statusText) {
var status = _.toLower(statusText); var status = _.toLower(statusText);

View File

@ -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) { export function NetworkViewModel(data) {
this.Id = data.Id; this.Id = data.Id;

View File

@ -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) { export function SecretViewModel(data) {
this.Id = data.ID; this.Id = data.ID;

View File

@ -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) { export function ServiceViewModel(data, runningTasks, allTasks) {
this.Model = data; this.Model = data;

View File

@ -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) { export function VolumeViewModel(data) {
this.Id = data.Name; this.Id = data.Name;

View File

@ -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', [ angular.module('portainer.docker').controller('ConfigController', [
'$scope', '$scope',

View File

@ -2,8 +2,8 @@ import moment from 'moment';
import _ from 'lodash-es'; import _ from 'lodash-es';
import { PorImageRegistryModel } from 'Docker/models/porImageRegistry'; import { PorImageRegistryModel } from 'Docker/models/porImageRegistry';
import { confirmContainerDeletion } from '@/portainer/services/modal.service/prompt'; import { confirmContainerDeletion } from '@/portainer/services/modal.service/prompt';
import { FeatureId } from 'Portainer/feature-flags/enums'; import { FeatureId } from '@/portainer/feature-flags/enums';
import { ResourceControlType } from '@/portainer/access-control/types'; import { ResourceControlType } from '@/react/portainer/access-control/types';
angular.module('portainer.docker').controller('ContainerController', [ angular.module('portainer.docker').controller('ContainerController', [
'$q', '$q',

View File

@ -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', [ angular.module('portainer.docker').controller('SecretController', [
'$scope', '$scope',

View File

@ -21,7 +21,7 @@ import _ from 'lodash-es';
import { PorImageRegistryModel } from 'Docker/models/porImageRegistry'; import { PorImageRegistryModel } from 'Docker/models/porImageRegistry';
import * as envVarsUtils from '@/portainer/helpers/env-vars'; 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', [ angular.module('portainer.docker').controller('ServiceController', [
'$q', '$q',

View File

@ -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', [ angular.module('portainer.docker').controller('VolumeController', [
'$scope', '$scope',

View File

@ -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 { AccessControlFormData } from '@/portainer/components/accessControlForm/porAccessControlFormModel';
import { isBE } from '@/portainer/feature-flags/feature-flags.service'; import { isBE } from '@/portainer/feature-flags/feature-flags.service';
import { getTemplateVariables, intersectVariables } from '@/react/portainer/custom-templates/components/utils'; import { getTemplateVariables, intersectVariables } from '@/react/portainer/custom-templates/components/utils';

View File

@ -7,7 +7,6 @@ import featureFlagModule from './feature-flags';
import userActivityModule from './user-activity'; import userActivityModule from './user-activity';
import servicesModule from './services'; import servicesModule from './services';
import homeModule from './home'; import homeModule from './home';
import { accessControlModule } from './access-control';
import { reactModule } from './react'; import { reactModule } from './react';
import { sidebarModule } from './react/views/sidebar'; import { sidebarModule } from './react/views/sidebar';
import environmentsModule from './environments'; import environmentsModule from './environments';
@ -39,7 +38,6 @@ angular
userActivityModule, userActivityModule,
'portainer.shared.datatable', 'portainer.shared.datatable',
servicesModule, servicesModule,
accessControlModule,
reactModule, reactModule,
sidebarModule, sidebarModule,
environmentsModule, environmentsModule,

View File

@ -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;

View File

@ -1,5 +1,5 @@
import _ from 'lodash-es'; 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', [ angular.module('portainer.app').controller('porAccessControlFormController', [
'$q', '$q',

View File

@ -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 * @deprecated use only for angularjs components. For react components use ./model.ts

View File

@ -1,6 +1,6 @@
import _ from 'lodash-es'; import _ from 'lodash-es';
import './datatable.css'; 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) { function isBetween(value, a, b) {
return (value >= a && value <= b) || (value >= b && value <= a); return (value >= a && value <= b) || (value >= b && value <= a);

View File

@ -3,7 +3,7 @@ import _ from 'lodash-es';
import filesize from 'filesize'; import filesize from 'filesize';
import { Eye, EyeOff, Users } from 'react-feather'; 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) { export function truncateLeftRight(text, max, left, right) {
max = isNaN(max) ? 50 : max; max = isNaN(max) ? 50 : max;

View File

@ -1,6 +1,6 @@
import _ from 'lodash-es'; import _ from 'lodash-es';
import angular from 'angular'; 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'; import { ResourceControlOwnershipParameters } from '../models/resourceControl/resourceControlOwnershipParameters';
class ResourceControlHelper { class ResourceControlHelper {

View File

@ -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) { export function StackViewModel(data) {
this.Id = data.Id; this.Id = data.Id;

View File

@ -4,6 +4,7 @@ import { react2angular } from 'react2angular';
import { r2a } from '@/react-tools/react2angular'; import { r2a } from '@/react-tools/react2angular';
import { Icon } from '@/react/components/Icon'; import { Icon } from '@/react/components/Icon';
import { ReactQueryDevtoolsWrapper } from '@/react/components/ReactQueryDevtoolsWrapper'; import { ReactQueryDevtoolsWrapper } from '@/react/components/ReactQueryDevtoolsWrapper';
import { AccessControlPanel } from '@/react/portainer/access-control';
import { PageHeader } from '@@/PageHeader'; import { PageHeader } from '@@/PageHeader';
import { TagSelector } from '@@/TagSelector'; import { TagSelector } from '@@/TagSelector';
@ -88,4 +89,14 @@ export const componentsModule = angular
.component( .component(
'boxSelectorBadgeIcon', 'boxSelectorBadgeIcon',
react2angular(BadgeIcon, ['featherIcon', 'icon']) react2angular(BadgeIcon, ['featherIcon', 'icon'])
)
.component(
'accessControlPanel',
r2a(AccessControlPanel, [
'disableOwnershipChange',
'onUpdateSuccess',
'resourceControl',
'resourceId',
'resourceType',
])
).name; ).name;

View File

@ -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', [ angular.module('portainer.app').factory('FormValidator', [
function FormValidatorFactory() { function FormValidatorFactory() {

View File

@ -1,5 +1,5 @@
import _ from 'lodash'; 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 { AccessControlFormData } from 'Portainer/components/accessControlForm/porAccessControlFormModel';
import { getTemplateVariables, intersectVariables } from '@/react/portainer/custom-templates/components/utils'; import { getTemplateVariables, intersectVariables } from '@/react/portainer/custom-templates/components/utils';

View File

@ -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 { AccessControlFormData } from 'Portainer/components/accessControlForm/porAccessControlFormModel';
import { FeatureId } from 'Portainer/feature-flags/enums'; import { FeatureId } from 'Portainer/feature-flags/enums';
import { getEnvironments } from '@/portainer/environments/environment.service'; import { getEnvironments } from '@/portainer/environments/environment.service';

View File

@ -4,7 +4,7 @@ import { useRouter } from '@uirouter/react';
import { ContainerInstanceFormValues } from '@/react/azure/types'; import { ContainerInstanceFormValues } from '@/react/azure/types';
import * as notifications from '@/portainer/services/notifications'; import * as notifications from '@/portainer/services/notifications';
import { useUser } from '@/portainer/hooks/useUser'; 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 { useEnvironmentId } from '@/portainer/hooks/useEnvironmentId';
import { FormControl } from '@@/form-components/FormControl'; import { FormControl } from '@@/form-components/FormControl';

View File

@ -1,6 +1,6 @@
import { object, string, number, boolean } from 'yup'; 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'; import { validationSchema as portsSchema } from './PortsMappingField.validation';

View File

@ -9,7 +9,7 @@ import {
ContainerInstanceFormValues, ContainerInstanceFormValues,
ResourceGroup, ResourceGroup,
} from '@/react/azure/types'; } 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'; import { getSubscriptionResourceGroups } from './utils';

View File

@ -5,7 +5,7 @@ import {
ResourceGroup, ResourceGroup,
Subscription, Subscription,
} from '@/react/azure/types'; } 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 { useUser } from '@/portainer/hooks/useUser';
import { useProvider } from '@/react/azure/queries/useProvider'; import { useProvider } from '@/react/azure/queries/useProvider';
import { useResourceGroups } from '@/react/azure/queries/useResourceGroups'; import { useResourceGroups } from '@/react/azure/queries/useResourceGroups';

View File

@ -2,9 +2,9 @@ import { useCurrentStateAndParams } from '@uirouter/react';
import { useQueryClient } from 'react-query'; import { useQueryClient } from 'react-query';
import { useEnvironmentId } from '@/portainer/hooks/useEnvironmentId'; import { useEnvironmentId } from '@/portainer/hooks/useEnvironmentId';
import { AccessControlPanel } from '@/portainer/access-control/AccessControlPanel/AccessControlPanel'; import { AccessControlPanel } from '@/react/portainer/access-control/AccessControlPanel/AccessControlPanel';
import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel'; import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';
import { ResourceControlType } from '@/portainer/access-control/types'; import { ResourceControlType } from '@/react/portainer/access-control/types';
import { import {
ContainerGroup, ContainerGroup,
ResourceGroup, ResourceGroup,

View File

@ -2,9 +2,9 @@ import { Column } from 'react-table';
import clsx from 'clsx'; import clsx from 'clsx';
import { ownershipIcon } from '@/portainer/filters/filters'; 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 { 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<ContainerGroup> = { export const ownership: Column<ContainerGroup> = {
Header: 'Ownership', Header: 'Ownership',

View File

@ -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 { PortainerMetadata } from '@/react/docker/types';
import { PortMapping } from './container-instances/CreateView/PortsMappingField'; import { PortMapping } from './container-instances/CreateView/PortsMappingField';

View File

@ -3,7 +3,7 @@ import clsx from 'clsx';
import { ownershipIcon } from '@/portainer/filters/filters'; import { ownershipIcon } from '@/portainer/filters/filters';
import type { DockerContainer } from '@/react/docker/containers/types'; 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<DockerContainer> = { export const ownership: Column<DockerContainer> = {
Header: 'Ownership', Header: 'Ownership',

View File

@ -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'; import { DockerContainerResponse } from './types/response';

View File

@ -2,7 +2,7 @@ import _ from 'lodash';
import { useInfo } from 'Docker/services/system.service'; import { useInfo } from 'Docker/services/system.service';
import { EnvironmentId } from 'Portainer/environments/types'; 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 { DockerContainer, ContainerStatus } from './types';
import { DockerContainerResponse } from './types/response'; import { DockerContainerResponse } from './types/response';

View File

@ -5,10 +5,10 @@ import _ from 'lodash';
import { useEnvironmentId } from '@/portainer/hooks/useEnvironmentId'; import { useEnvironmentId } from '@/portainer/hooks/useEnvironmentId';
import { confirmDeletionAsync } from '@/portainer/services/modal.service/confirm'; import { confirmDeletionAsync } from '@/portainer/services/modal.service/confirm';
import { AccessControlPanel } from '@/portainer/access-control/AccessControlPanel/AccessControlPanel'; import { AccessControlPanel } from '@/react/portainer/access-control/AccessControlPanel/AccessControlPanel';
import { ResourceControlType } from '@/portainer/access-control/types'; import { ResourceControlType } from '@/react/portainer/access-control/types';
import { DockerContainer } from '@/react/docker/containers/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 { useContainers } from '@/react/docker/containers/queries/containers';
import { PageHeader } from '@@/PageHeader'; import { PageHeader } from '@@/PageHeader';

View File

@ -1,4 +1,4 @@
import { ResourceControlResponse } from '@/portainer/access-control/types'; import { ResourceControlResponse } from '@/react/portainer/access-control/types';
interface AgentMetadata { interface AgentMetadata {
NodeName: string; NodeName: string;

View File

@ -1,11 +1,11 @@
import { FormikErrors } from 'formik'; import { FormikErrors } from 'formik';
import { useUser } from '@/portainer/hooks/useUser'; import { useUser } from '@/portainer/hooks/useUser';
import { EditDetails } from '@/portainer/access-control/EditDetails/EditDetails';
import { FormSectionTitle } from '@@/form-components/FormSectionTitle'; import { FormSectionTitle } from '@@/form-components/FormSectionTitle';
import { SwitchField } from '@@/form-components/SwitchField'; import { SwitchField } from '@@/form-components/SwitchField';
import { EditDetails } from '../EditDetails';
import { ResourceControlOwnership, AccessControlFormData } from '../types'; import { ResourceControlOwnership, AccessControlFormData } from '../types';
export interface Props { export interface Props {

View File

@ -2,7 +2,6 @@ import { useReducer } from 'react';
import { useUser } from '@/portainer/hooks/useUser'; import { useUser } from '@/portainer/hooks/useUser';
import { Icon } from '@/react/components/Icon'; import { Icon } from '@/react/components/Icon';
import { r2a } from '@/react-tools/react2angular';
import { TeamMembership, TeamRole } from '@/react/portainer/users/teams/types'; import { TeamMembership, TeamRole } from '@/react/portainer/users/teams/types';
import { useUserMembership } from '@/portainer/users/queries'; import { useUserMembership } from '@/portainer/users/queries';
@ -142,11 +141,3 @@ function isLeaderOfAnyRestrictedTeams(
resourceControl.TeamAccesses.some((ta) => ta.TeamId === membership.TeamID) resourceControl.TeamAccesses.some((ta) => ta.TeamId === membership.TeamID)
); );
} }
export const AccessControlPanelAngular = r2a(AccessControlPanel, [
'resourceControl',
'resourceType',
'disableOwnershipChange',
'resourceId',
'onUpdateSuccess',
]);

View File

@ -0,0 +1 @@
export { AccessControlPanel } from './AccessControlPanel';

View File

@ -1,4 +1,4 @@
import axios, { parseAxiosError } from '../services/axios'; import axios, { parseAxiosError } from '@/portainer/services/axios';
import { import {
AccessControlFormData, AccessControlFormData,

View File

@ -0,0 +1,2 @@
export { AccessControlPanel } from './AccessControlPanel';
export { AccessControlForm } from './AccessControlForm';

View File

@ -1,6 +1,5 @@
import { TeamId } from '@/react/portainer/users/teams/types'; import { TeamId } from '@/react/portainer/users/teams/types';
import { UserId } from '@/portainer/users/types';
import { UserId } from '../users/types';
import { import {
AccessControlFormData, AccessControlFormData,