mirror of
https://github.com/portainer/portainer.git
synced 2025-07-23 15:29:42 +02:00
refactor(namespace): migrate namespace access view to react [r8s-141] (#87)
This commit is contained in:
parent
8ed7cd80cb
commit
e9fc6d5598
62 changed files with 1018 additions and 610 deletions
|
@ -0,0 +1,90 @@
|
|||
import { ConfigMap } from 'kubernetes-types/core/v1';
|
||||
import { concat, without } from 'lodash';
|
||||
|
||||
import { PortainerNamespaceAccessesConfigMap } from '@/react/kubernetes/configs/constants';
|
||||
import { Configuration } from '@/react/kubernetes/configs/types';
|
||||
|
||||
import { NamespaceAccess } from './types';
|
||||
|
||||
export function createAuthorizeAccessConfigMapPayload(
|
||||
namespaceAccesses: NamespaceAccess[],
|
||||
selectedItems: NamespaceAccess[],
|
||||
namespaceName: string,
|
||||
configMap?: Configuration
|
||||
): ConfigMap {
|
||||
const newRemainingAccesses = concat(namespaceAccesses, ...selectedItems);
|
||||
return createAccessConfigMapPayload(
|
||||
newRemainingAccesses,
|
||||
namespaceName,
|
||||
configMap
|
||||
);
|
||||
}
|
||||
|
||||
export function createUnauthorizeAccessConfigMapPayload(
|
||||
namespaceAccesses: NamespaceAccess[],
|
||||
selectedItems: NamespaceAccess[],
|
||||
namespaceName: string,
|
||||
configMap?: Configuration
|
||||
): ConfigMap {
|
||||
const newRemainingAccesses = without(namespaceAccesses, ...selectedItems);
|
||||
return createAccessConfigMapPayload(
|
||||
newRemainingAccesses,
|
||||
namespaceName,
|
||||
configMap
|
||||
);
|
||||
}
|
||||
|
||||
function createAccessConfigMapPayload(
|
||||
newRemainingAccesses: NamespaceAccess[],
|
||||
namespaceName: string,
|
||||
configMap?: Configuration
|
||||
): ConfigMap {
|
||||
const configMapAccessesValue = JSON.parse(
|
||||
configMap?.Data?.[PortainerNamespaceAccessesConfigMap.accessKey] || '{}'
|
||||
);
|
||||
const newNamespaceAccesses = newRemainingAccesses.reduce(
|
||||
(namespaceAccesses, accessItem) => {
|
||||
if (accessItem.type === 'user') {
|
||||
return {
|
||||
...namespaceAccesses,
|
||||
UserAccessPolicies: {
|
||||
...namespaceAccesses.UserAccessPolicies,
|
||||
// hardcode to 0, as they use their environment role
|
||||
[`${accessItem.id}`]: { RoleId: 0 },
|
||||
},
|
||||
};
|
||||
}
|
||||
return {
|
||||
...namespaceAccesses,
|
||||
TeamAccessPolicies: {
|
||||
...namespaceAccesses.TeamAccessPolicies,
|
||||
// hardcode to 0, as they use their environment role
|
||||
[`${accessItem.id}`]: { RoleId: 0 },
|
||||
},
|
||||
};
|
||||
},
|
||||
{
|
||||
UserAccessPolicies: {},
|
||||
TeamAccessPolicies: {},
|
||||
}
|
||||
);
|
||||
const newConfigMapAccessesValue = {
|
||||
...configMapAccessesValue,
|
||||
[namespaceName]: newNamespaceAccesses,
|
||||
};
|
||||
const updatedConfigMap: ConfigMap = {
|
||||
metadata: {
|
||||
name: PortainerNamespaceAccessesConfigMap.configMapName,
|
||||
namespace: PortainerNamespaceAccessesConfigMap.namespace,
|
||||
uid: configMap?.UID,
|
||||
},
|
||||
data: {
|
||||
...configMap?.Data,
|
||||
[PortainerNamespaceAccessesConfigMap.accessKey]: JSON.stringify(
|
||||
newConfigMapAccessesValue
|
||||
),
|
||||
},
|
||||
};
|
||||
|
||||
return updatedConfigMap;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue