mirror of https://github.com/portainer/portainer
refactor(app): move access-control components [EE-3441] (#7559)
parent
77c3f9131b
commit
d9cc7eda51
|
@ -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() {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
|
@ -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',
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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<ContainerGroup> = {
|
||||
Header: 'Ownership',
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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<DockerContainer> = {
|
||||
Header: 'Ownership',
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { ResourceControlResponse } from '@/portainer/access-control/types';
|
||||
import { ResourceControlResponse } from '@/react/portainer/access-control/types';
|
||||
|
||||
interface AgentMetadata {
|
||||
NodeName: string;
|
||||
|
|
|
@ -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 {
|
|
@ -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',
|
||||
]);
|
|
@ -0,0 +1 @@
|
|||
export { AccessControlPanel } from './AccessControlPanel';
|
|
@ -1,4 +1,4 @@
|
|||
import axios, { parseAxiosError } from '../services/axios';
|
||||
import axios, { parseAxiosError } from '@/portainer/services/axios';
|
||||
|
||||
import {
|
||||
AccessControlFormData,
|
|
@ -0,0 +1,2 @@
|
|||
export { AccessControlPanel } from './AccessControlPanel';
|
||||
export { AccessControlForm } from './AccessControlForm';
|
|
@ -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,
|
Loading…
Reference in New Issue