fix(ui): hide noop add system btn and smart actions for readonly users

This commit is contained in:
henrygd
2026-03-30 19:45:12 -04:00
parent 5463a38f0f
commit f6440acb43
2 changed files with 19 additions and 15 deletions

View File

@@ -125,15 +125,17 @@ export default function Navbar() {
<DropdownMenuSubContent>{AdminLinks}</DropdownMenuSubContent> <DropdownMenuSubContent>{AdminLinks}</DropdownMenuSubContent>
</DropdownMenuSub> </DropdownMenuSub>
)} )}
<DropdownMenuItem {!isReadOnlyUser() && (
className="flex items-center" <DropdownMenuItem
onSelect={() => { className="flex items-center"
setAddSystemDialogOpen(true) onSelect={() => {
}} setAddSystemDialogOpen(true)
> }}
<PlusIcon className="h-4 w-4 me-2.5" /> >
<Trans>Add {{ foo: systemTranslation }}</Trans> <PlusIcon className="h-4 w-4 me-2.5" />
</DropdownMenuItem> <Trans>Add {{ foo: systemTranslation }}</Trans>
</DropdownMenuItem>
)}
</DropdownMenuGroup> </DropdownMenuGroup>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuGroup> <DropdownMenuGroup>
@@ -217,10 +219,12 @@ export default function Navbar() {
</DropdownMenuItem> </DropdownMenuItem>
</DropdownMenuContent> </DropdownMenuContent>
</DropdownMenu> </DropdownMenu>
<Button variant="outline" className="flex gap-1 ms-2" onClick={() => setAddSystemDialogOpen(true)}> {!isReadOnlyUser() && (
<PlusIcon className="h-4 w-4 -ms-1" /> <Button variant="outline" className="flex gap-1 ms-2" onClick={() => setAddSystemDialogOpen(true)}>
<Trans>Add {{ foo: systemTranslation }}</Trans> <PlusIcon className="h-4 w-4 -ms-1" />
</Button> <Trans>Add {{ foo: systemTranslation }}</Trans>
</Button>
)}
</div> </div>
</div> </div>
) )

View File

@@ -36,7 +36,7 @@ import { Input } from "@/components/ui/input"
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
import { Badge } from "@/components/ui/badge" import { Badge } from "@/components/ui/badge"
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"
import { pb } from "@/lib/api" import { isReadOnlyUser, pb } from "@/lib/api"
import type { SmartDeviceRecord, SmartAttribute } from "@/types" import type { SmartDeviceRecord, SmartAttribute } from "@/types"
import { import {
formatBytes, formatBytes,
@@ -492,7 +492,7 @@ export default function DisksTable({ systemId }: { systemId?: string }) {
const tableColumns = useMemo(() => { const tableColumns = useMemo(() => {
const columns = createColumns(longestName, longestModel, longestDevice) const columns = createColumns(longestName, longestModel, longestDevice)
const baseColumns = systemId ? columns.filter((col) => col.id !== "system") : columns const baseColumns = systemId ? columns.filter((col) => col.id !== "system") : columns
return [...baseColumns, actionColumn] return isReadOnlyUser() ? baseColumns : [...baseColumns, actionColumn]
}, [systemId, actionColumn, longestName, longestModel, longestDevice]) }, [systemId, actionColumn, longestName, longestModel, longestDevice])
const table = useReactTable({ const table = useReactTable({