fix(ui): учитывать готовность устройства в действиях IPsec

This commit is contained in:
Denozordec committed 2026-09-30 14:48:21 +07:00
1 parent b8923d075d
commit f0071a495c
7 files changed
+97 -12

No files matched your search

+8 -4
View File
@@ -150,6 +150,7 @@ function CertRow({
}
export interface IpsecServerGridProps {
canManage?: (serverId: string) => boolean
servers: IpsecServerSummaryDto[]
onInit?: (row: IpsecServerSummaryDto) => void
onRemove?: (row: IpsecServerSummaryDto) => void
@@ -161,6 +162,7 @@ export interface IpsecServerGridProps {
function IpsecServerGrid({
servers,
canManage,
onInit,
onRemove,
onEditPeer,
@@ -208,8 +210,8 @@ function IpsecServerGrid({
<PeerRow
key={p.rosId}
peer={p}
onEdit={onEditPeer ? (peer) => onEditPeer(s.serverId, peer) : undefined}
onDelete={onDeletePeer ? (peer) => onDeletePeer(s.serverId, peer) : undefined}
onEdit={onEditPeer && (!canManage || canManage(s.serverId)) ? (peer) => onEditPeer(s.serverId, peer) : undefined}
onDelete={onDeletePeer && (!canManage || canManage(s.serverId)) ? (peer) => onDeletePeer(s.serverId, peer) : undefined}
/>
))}
</div>
@@ -228,8 +230,8 @@ function IpsecServerGrid({
<CertRow
key={c.name}
cert={c}
onDelete={onDeleteCert ? (cert) => onDeleteCert(s.serverId, cert) : undefined}
onExport={onExportCert ? (cert) => onExportCert(s.serverId, cert) : undefined}
onDelete={onDeleteCert && (!canManage || canManage(s.serverId)) ? (cert) => onDeleteCert(s.serverId, cert) : undefined}
onExport={onExportCert && (!canManage || canManage(s.serverId)) ? (cert) => onExportCert(s.serverId, cert) : undefined}
/>
))}
</div>
@@ -250,6 +252,7 @@ function IpsecServerGrid({
type="button"
size="sm"
variant="outline"
disabled={!onInit || (canManage && !canManage(s.serverId))}
onClick={() => onInit?.(s)}
title={s.initialized ? "Обновить managed-конфиг сервера" : "Инициализировать IKEv2-сервер"}
>
@@ -264,6 +267,7 @@ function IpsecServerGrid({
className="size-8 text-destructive"
aria-label="Удалить IKEv2-сервер"
title="Удалить managed-объекты IKEv2 (identity/mode-config/peer/pool/NAT + сертификаты)"
disabled={canManage && !canManage(s.serverId)}
onClick={() => onRemove(s)}
>
<Trash2Icon className="size-3.5" />
+6 -1
View File
@@ -28,6 +28,7 @@ import {
} from "lucide-react"
export interface IpsecUsersGridProps {
canManage?: (serverId: string) => boolean
clients: IpsecClientDto[]
compactServer?: boolean
emptyAction?: ReactNode
@@ -40,6 +41,7 @@ export interface IpsecUsersGridProps {
function IpsecUsersGrid({
clients,
canManage,
compactServer = false,
emptyAction,
emptyTitle = "Нет клиентов IKEv2",
@@ -63,6 +65,7 @@ function IpsecUsersGrid({
<UsersIcon className="size-3.5 shrink-0 text-muted-foreground" />
<button
type="button"
disabled={!onEdit || (canManage && !canManage(c.serverId))}
className="truncate text-left font-medium hover:underline"
onClick={() => onEdit?.(c)}
>
@@ -198,6 +201,7 @@ function IpsecUsersGrid({
className="size-7"
aria-label="Скачать сертификат"
title="Скачать .p12"
disabled={canManage && !canManage(c.serverId)}
onClick={() => onDownloadCert(c)}
>
<WifiIcon className="size-3.5" />
@@ -210,6 +214,7 @@ function IpsecUsersGrid({
size="icon"
className="size-7 text-destructive"
aria-label="Удалить клиента"
disabled={canManage && !canManage(c.serverId)}
onClick={() => onDelete(c)}
>
<Trash2Icon className="size-3.5" />
@@ -226,7 +231,7 @@ function IpsecUsersGrid({
)
return cols
}, [compactServer, onDownloadCert, onEdit, onDelete])
}, [compactServer, onDownloadCert, onEdit, onDelete, canManage])
const table = useTable({
features: dataGridFeatures,