diff --git a/src/components/Dialogs/CreateProjectDialogContainer.tsx b/src/components/Dialogs/CreateProjectDialogContainer.tsx index 8e4abed5..11eb95f4 100644 --- a/src/components/Dialogs/CreateProjectDialogContainer.tsx +++ b/src/components/Dialogs/CreateProjectDialogContainer.tsx @@ -53,7 +53,7 @@ export function CreateProjectDialogContainer({ useEffect(() => { if (username) { - setValue('members', [{ name: username, role: MemberRoles.admin, kind: 'User' }]); + setValue('members', [{ name: username, roles: [MemberRoles.admin], kind: 'User' }]); } if (!isOpen) { clearForm(); diff --git a/src/components/Dialogs/CreateWorkspaceDialogContainer.tsx b/src/components/Dialogs/CreateWorkspaceDialogContainer.tsx index adfa1264..bca3b319 100644 --- a/src/components/Dialogs/CreateWorkspaceDialogContainer.tsx +++ b/src/components/Dialogs/CreateWorkspaceDialogContainer.tsx @@ -68,7 +68,7 @@ export function CreateWorkspaceDialogContainer({ useEffect(() => { if (username) { - setValue('members', [{ name: username, role: MemberRoles.admin, kind: 'User' }]); + setValue('members', [{ name: username, roles: [MemberRoles.admin], kind: 'User' }]); } if (!isOpen) { clearForm(); diff --git a/src/components/Members/AddEditMemberDialog.tsx b/src/components/Members/AddEditMemberDialog.tsx index 2d577f40..aff541ad 100644 --- a/src/components/Members/AddEditMemberDialog.tsx +++ b/src/components/Members/AddEditMemberDialog.tsx @@ -91,7 +91,7 @@ export const AddEditMemberDialog: FC = ({ if (memberToEdit) { reset({ name: memberToEdit.name, - role: memberToEdit.role || MemberRoles.view, + role: memberToEdit.roles?.[0] || MemberRoles.view, accountType: memberToEdit.kind === 'User' ? 'User' : 'ServiceAccount', namespace: memberToEdit?.namespace || '', }); @@ -111,7 +111,7 @@ export const AddEditMemberDialog: FC = ({ const newMember: Member = { name: trimmedName, - role: data.role, + roles: [data.role], kind: data.accountType, ...(data.accountType === 'ServiceAccount' && data.namespace && { namespace: data.namespace }), }; diff --git a/src/components/Members/MemberTable.tsx b/src/components/Members/MemberTable.tsx index 5513408d..35704ed0 100644 --- a/src/components/Members/MemberTable.tsx +++ b/src/components/Members/MemberTable.tsx @@ -111,11 +111,10 @@ export const MemberTable: FC = ({ ); } - const data: MemberTableRow[] = members.map((m) => { return { email: m.name, - role: MemberRolesDetailed[m.role as MemberRoles]?.displayValue, + role: MemberRolesDetailed[m.roles?.[0] as MemberRoles]?.displayValue ?? m.roles?.toString(), kind: m.kind, namespace: m.namespace ?? '', _member: m, diff --git a/src/components/Wizards/CreateManagedControlPlane/CreateManagedControlPlaneWizardContainer.tsx b/src/components/Wizards/CreateManagedControlPlane/CreateManagedControlPlaneWizardContainer.tsx index 8f952082..17707c24 100644 --- a/src/components/Wizards/CreateManagedControlPlane/CreateManagedControlPlaneWizardContainer.tsx +++ b/src/components/Wizards/CreateManagedControlPlane/CreateManagedControlPlaneWizardContainer.tsx @@ -111,7 +111,7 @@ export const CreateManagedControlPlaneWizardContainer: FC { if (user?.email && isOpen) { - setValue('members', [{ name: user.email, role: MemberRoles.admin, kind: 'User' }]); + setValue('members', [{ name: user.email, roles: [MemberRoles.admin], kind: 'User' }]); } if (!isOpen) { clearFormFields(); diff --git a/src/components/Wizards/CreateManagedControlPlane/SummarizeStep.tsx b/src/components/Wizards/CreateManagedControlPlane/SummarizeStep.tsx index 62a0686d..d9805f24 100644 --- a/src/components/Wizards/CreateManagedControlPlane/SummarizeStep.tsx +++ b/src/components/Wizards/CreateManagedControlPlane/SummarizeStep.tsx @@ -37,7 +37,7 @@ export const SummarizeStep: React.FC = ({ watch, projectName
{watch('members').map((member) => ( - + ))}
diff --git a/src/lib/api/types/crate/createManagedControlPlane.ts b/src/lib/api/types/crate/createManagedControlPlane.ts index 13b1b6b6..b1a1dc06 100644 --- a/src/lib/api/types/crate/createManagedControlPlane.ts +++ b/src/lib/api/types/crate/createManagedControlPlane.ts @@ -135,7 +135,7 @@ export const CreateManagedControlPlane = ( authorization: { roleBindings: optional?.members?.map((member) => ({ - role: member.role, + role: member.roles?.[0], subjects: [ { kind: member.kind as AccountType, diff --git a/src/lib/api/types/crate/createProject.ts b/src/lib/api/types/crate/createProject.ts index 95bd00e5..eefeb309 100644 --- a/src/lib/api/types/crate/createProject.ts +++ b/src/lib/api/types/crate/createProject.ts @@ -45,10 +45,10 @@ export const CreateProject = ( }, spec: { members: - optional?.members?.map(({ kind, namespace, role, name }) => ({ + optional?.members?.map(({ kind, namespace, roles, name }) => ({ kind, name, - roles: [role], + roles, namespace: kind === 'ServiceAccount' ? (namespace ?? 'default') : undefined, })) ?? [], }, diff --git a/src/lib/api/types/crate/createWorkspace.ts b/src/lib/api/types/crate/createWorkspace.ts index 6f682b97..7b7c5fa0 100644 --- a/src/lib/api/types/crate/createWorkspace.ts +++ b/src/lib/api/types/crate/createWorkspace.ts @@ -48,10 +48,10 @@ export const CreateWorkspace = ( }, spec: { members: - optional?.members?.map(({ kind, namespace, role, name }) => ({ + optional?.members?.map(({ kind, namespace, roles, name }) => ({ kind, name, - roles: [role], + roles, namespace: kind === 'ServiceAccount' ? (namespace ?? 'default') : undefined, })) ?? [], }, diff --git a/src/lib/api/types/crate/listWorkspaces.ts b/src/lib/api/types/crate/listWorkspaces.ts index ffbbe59c..db45adce 100644 --- a/src/lib/api/types/crate/listWorkspaces.ts +++ b/src/lib/api/types/crate/listWorkspaces.ts @@ -22,6 +22,6 @@ export function isWorkspaceReady(workspace: ListWorkspacesType): boolean { export const ListWorkspaces = (projectName?: string): Resource => { return { path: `/apis/core.openmcp.cloud/v1alpha1/namespaces/project-${projectName}/workspaces`, - jq: '[.items[] | {metadata: .metadata | {name, namespace, annotations, deletionTimestamp}, status: .status, spec: .spec | {members: [.members[] | {name, roles}]}}]', + jq: '[.items[] | {metadata: .metadata | {name, namespace, annotations, deletionTimestamp}, status: .status, spec: .spec | {members: [.members[] | {name, roles, kind, namespace}]}}]', }; }; diff --git a/src/lib/api/types/shared/members.ts b/src/lib/api/types/shared/members.ts index f24b5c9d..bead99f7 100644 --- a/src/lib/api/types/shared/members.ts +++ b/src/lib/api/types/shared/members.ts @@ -25,7 +25,7 @@ export enum MemberKind { export interface Member { kind: string; name: string; - role: string; + roles: string[]; namespace?: string; }