Skip to content

Commit ff71a89

Browse files
authored
fix: restore user service account management (#106)
1 parent 0ab449e commit ff71a89

16 files changed

Lines changed: 1026 additions & 15 deletions

app/(dashboard)/access-keys/page.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,13 @@ export default function AccessKeysPage() {
264264
onSuccess={listUserAccounts}
265265
/>
266266

267-
<UserNotice open={noticeOpen} onOpenChange={setNoticeOpen} data={noticeData} onClose={handleNoticeClose} />
267+
<UserNotice
268+
open={noticeOpen}
269+
onOpenChange={setNoticeOpen}
270+
data={noticeData}
271+
onClose={handleNoticeClose}
272+
title={t("New access key has been created")}
273+
/>
268274
</Page>
269275
)
270276
}

components/user/edit-form.tsx

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ import { usePermissions } from "@/hooks/use-permissions"
1212
import { usePolicies } from "@/hooks/use-policies"
1313
import { useGroups } from "@/hooks/use-groups"
1414
import { useMessage } from "@/lib/feedback/message"
15+
import { getAvailableUserEditTabs } from "@/lib/user-edit-tabs"
1516
import { UserEditSecretKey } from "./edit/secret-key"
1617
import { UserEditGroups } from "./edit/groups"
1718
import { UserEditPolicies } from "./edit/policies"
19+
import { UserEditAccessKeys } from "./edit/access-keys"
1820

1921
interface UserRow {
2022
accessKey: string
@@ -49,6 +51,8 @@ export function UserEditForm({ open, onOpenChange, row, onSuccess }: UserEditFor
4951
const canEditAccount = canCapability("users.edit")
5052
const canAssignGroups = canCapability("users.assignGroups")
5153
const canEditPolicies = canCapability("users.policy.edit")
54+
const canManageAccessKeys =
55+
canCapability("accessKeys.create") || canCapability("accessKeys.edit") || canCapability("accessKeys.delete")
5256

5357
const [user, setUser] = React.useState<{
5458
accessKey: string
@@ -72,12 +76,13 @@ export function UserEditForm({ open, onOpenChange, row, onSuccess }: UserEditFor
7276

7377
const statusBoolean = user.status === "enabled"
7478
const availableTabs = React.useMemo(() => {
75-
const tabs: string[] = []
76-
if (canEditAccount) tabs.push("account")
77-
if (canAssignGroups) tabs.push("groups")
78-
if (canEditPolicies) tabs.push("policy")
79-
return tabs
80-
}, [canAssignGroups, canEditAccount, canEditPolicies])
79+
return getAvailableUserEditTabs({
80+
canEditAccount,
81+
canAssignGroups,
82+
canEditPolicies,
83+
canManageAccessKeys,
84+
})
85+
}, [canAssignGroups, canEditAccount, canEditPolicies, canManageAccessKeys])
8186

8287
React.useEffect(() => {
8388
if (!open || !row?.accessKey) return
@@ -223,7 +228,7 @@ export function UserEditForm({ open, onOpenChange, row, onSuccess }: UserEditFor
223228
return (
224229
<Dialog open={open} onOpenChange={closeModal}>
225230
<DialogContent
226-
className="sm:max-w-lg"
231+
className="sm:max-w-5xl"
227232
onPointerDownOutside={(e) => e.preventDefault()}
228233
onInteractOutside={(e) => e.preventDefault()}
229234
>
@@ -237,6 +242,7 @@ export function UserEditForm({ open, onOpenChange, row, onSuccess }: UserEditFor
237242
{canEditAccount ? <TabsTrigger value="account">{t("Account")}</TabsTrigger> : null}
238243
{canAssignGroups ? <TabsTrigger value="groups">{t("Groups")}</TabsTrigger> : null}
239244
{canEditPolicies ? <TabsTrigger value="policy">{t("Policies")}</TabsTrigger> : null}
245+
{canManageAccessKeys ? <TabsTrigger value="access-keys">{t("Access Keys")}</TabsTrigger> : null}
240246
</TabsList>
241247

242248
{canEditAccount ? (
@@ -279,6 +285,12 @@ export function UserEditForm({ open, onOpenChange, row, onSuccess }: UserEditFor
279285
/>
280286
</TabsContent>
281287
) : null}
288+
289+
{canManageAccessKeys ? (
290+
<TabsContent value="access-keys" className="mt-0">
291+
<UserEditAccessKeys userName={user.accessKey} />
292+
</TabsContent>
293+
) : null}
282294
</Tabs>
283295
</div>
284296

0 commit comments

Comments
 (0)