Skip to content

Commit b71c3ef

Browse files
committed
feat: add permissions tabs for connection and playbooks
Fixes #2246
1 parent d6079fa commit b71c3ef

File tree

2 files changed

+86
-11
lines changed

2 files changed

+86
-11
lines changed

src/components/Connections/ConnectionFormModal.tsx

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
import { Tab, Tabs } from "@flanksource-ui/ui/Tabs/Tabs";
12
import React, { useEffect, useState } from "react";
23
import { Icon } from "../../ui/Icons/Icon";
34
import { Modal } from "../../ui/Modal";
5+
import PermissionsView from "../Permissions/PermissionsView";
46
import ConnectionForm from "./ConnectionForm";
57
import ConnectionListView from "./ConnectionListView";
68
import ConnectionSpecEditor from "./ConnectionSpecEditor";
@@ -81,6 +83,8 @@ export default function ConnectionFormModal({
8183
ConnectionType | undefined
8284
>(() => connectionTypes.find((item) => item.title === formValue?.type));
8385

86+
const [activeTab, setActiveTab] = useState<"form" | "permissions">("form");
87+
8488
useEffect(() => {
8589
let connection = connectionTypes.find(
8690
(item) => item.value === formValue?.type
@@ -122,16 +126,54 @@ export default function ConnectionFormModal({
122126
helpLink="reference/connections/"
123127
>
124128
{type ? (
125-
<ConnectionForm
126-
handleBack={() => setConnectionType(undefined)}
127-
connectionType={type}
128-
onConnectionSubmit={onConnectionSubmit}
129-
onConnectionDelete={onConnectionDelete}
130-
formValue={formValue}
131-
className={className}
132-
isSubmitting={isSubmitting}
133-
isDeleting={isDeleting}
134-
/>
129+
formValue?.id ? (
130+
<Tabs
131+
activeTab={activeTab}
132+
onSelectTab={(label) => setActiveTab(label)}
133+
className="flex-1"
134+
>
135+
<Tab
136+
label="Edit Connection"
137+
value={"form"}
138+
className="flex flex-col"
139+
>
140+
<ConnectionForm
141+
handleBack={() => setConnectionType(undefined)}
142+
connectionType={type}
143+
onConnectionSubmit={onConnectionSubmit}
144+
onConnectionDelete={onConnectionDelete}
145+
formValue={formValue}
146+
className={className}
147+
isSubmitting={isSubmitting}
148+
isDeleting={isDeleting}
149+
/>
150+
</Tab>
151+
152+
<Tab
153+
label="Permissions"
154+
value={"connections"}
155+
className="flex flex-col"
156+
>
157+
<PermissionsView
158+
hideResourceColumn
159+
permissionRequest={{
160+
connectionId: formValue.id
161+
}}
162+
/>
163+
</Tab>
164+
</Tabs>
165+
) : (
166+
<ConnectionForm
167+
handleBack={() => setConnectionType(undefined)}
168+
connectionType={type}
169+
onConnectionSubmit={onConnectionSubmit}
170+
onConnectionDelete={onConnectionDelete}
171+
formValue={formValue}
172+
className={className}
173+
isSubmitting={isSubmitting}
174+
isDeleting={isDeleting}
175+
/>
176+
)
135177
) : formValue?.id ? (
136178
<ConnectionSpecEditor
137179
handleBack={() => setConnectionType(undefined)}

src/components/Playbooks/Settings/PlaybookSpecFormModal.tsx

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { PlaybookSpec } from "@flanksource-ui/api/types/playbooks";
2+
import PermissionsView from "@flanksource-ui/components/Permissions/PermissionsView";
23
import { Modal } from "@flanksource-ui/ui/Modal";
4+
import { Tab, Tabs } from "@flanksource-ui/ui/Tabs/Tabs";
5+
import { useState } from "react";
36
import PlaybookSpecModalTitle from "../PlaybookSpecModalTitle";
47
import PlaybookSpecsForm from "./PlaybookSpecsForm";
58

@@ -16,6 +19,8 @@ export default function PlaybookSpecFormModal({
1619
onClose,
1720
...props
1821
}: PlaybookSpecFormModalProps) {
22+
const [activeTab, setActiveTab] = useState<"form" | "state">("form");
23+
1924
return (
2025
<Modal
2126
title={
@@ -31,7 +36,35 @@ export default function PlaybookSpecFormModal({
3136
bodyClass="flex flex-col w-full flex-1 h-full overflow-y-auto"
3237
helpLink="playbooks"
3338
>
34-
<PlaybookSpecsForm onClose={onClose} playbook={playbook} {...props} />
39+
{playbook?.id ? (
40+
<Tabs
41+
activeTab={activeTab}
42+
onSelectTab={(label) => setActiveTab(label)}
43+
>
44+
<Tab label="Edit" value={"form"} className="flex flex-1 flex-col">
45+
<PlaybookSpecsForm
46+
onClose={onClose}
47+
{...props}
48+
playbook={playbook}
49+
/>
50+
</Tab>
51+
52+
<Tab
53+
label="Permissions"
54+
value={"connections"}
55+
className="flex flex-1 flex-col"
56+
>
57+
<PermissionsView
58+
hideResourceColumn
59+
permissionRequest={{
60+
playbookId: playbook.id
61+
}}
62+
/>
63+
</Tab>
64+
</Tabs>
65+
) : (
66+
<PlaybookSpecsForm onClose={onClose} {...props} />
67+
)}
3568
</Modal>
3669
);
3770
}

0 commit comments

Comments
 (0)