diff --git a/web/src/components/overlay/RoleChangeDialog.tsx b/web/src/components/overlay/RoleChangeDialog.tsx index ed9e73436..c8b356665 100644 --- a/web/src/components/overlay/RoleChangeDialog.tsx +++ b/web/src/components/overlay/RoleChangeDialog.tsx @@ -1,5 +1,5 @@ import { Trans, useTranslation } from "react-i18next"; -import { Button } from "../ui/button"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,22 +7,23 @@ import { DialogFooter, DialogHeader, DialogTitle, -} from "../ui/dialog"; +} from "@/components/ui/dialog"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, -} from "../ui/select"; +} from "@/components/ui/select"; import { useState } from "react"; import { LuShield, LuUser } from "react-icons/lu"; type RoleChangeDialogProps = { show: boolean; username: string; - currentRole: "admin" | "viewer"; - onSave: (role: "admin" | "viewer") => void; + currentRole: string; + availableRoles: string[]; + onSave: (role: string) => void; onCancel: () => void; }; @@ -30,13 +31,12 @@ export default function RoleChangeDialog({ show, username, currentRole, + availableRoles, onSave, onCancel, }: RoleChangeDialogProps) { const { t } = useTranslation(["views/settings"]); - const [selectedRole, setSelectedRole] = useState<"admin" | "viewer">( - currentRole, - ); + const [selectedRole, setSelectedRole] = useState(currentRole); return ( @@ -73,31 +73,46 @@ export default function RoleChangeDialog({ : {t("users.dialog.changeRole.roleInfo.viewerDesc")} + {availableRoles + .filter((role) => role !== "admin" && role !== "viewer") + .map((role) => ( +
  • + {role}:{" "} + {t("users.dialog.changeRole.roleInfo.customDesc")} +
  • + ))} - - -
    - - {t("role.admin", { ns: "common" })} -
    -
    - -
    - - {t("role.viewer", { ns: "common" })} -
    -
    + {availableRoles.map((role) => ( + +
    + {role === "admin" ? ( + + ) : role === "viewer" ? ( + + ) : ( + + )} + + {role === "admin" + ? t("role.admin", { ns: "common" }) + : role === "viewer" + ? t("role.viewer", { ns: "common" }) + : role} + +
    +
    + ))}
    @@ -108,6 +123,7 @@ export default function RoleChangeDialog({