From ffa48b32d144a53562fc9ce2838cf39587b7cfc3 Mon Sep 17 00:00:00 2001 From: Lauri Nevala Date: Mon, 28 Dec 2020 08:08:11 +0200 Subject: [PATCH] Check is persistent volume claims resource to allowed for user (#1850) Signed-off-by: Lauri Nevala --- src/common/rbac.ts | 5 +++-- src/renderer/components/+storage/storage.tsx | 14 ++++++++------ src/renderer/utils/rbac.ts | 1 + 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/common/rbac.ts b/src/common/rbac.ts index 0e0e5a780e..bd003e87a1 100644 --- a/src/common/rbac.ts +++ b/src/common/rbac.ts @@ -1,8 +1,8 @@ import { getHostedCluster } from "./cluster-store"; export type KubeResource = - "namespaces" | "nodes" | "events" | "resourcequotas" | - "services" | "secrets" | "configmaps" | "ingresses" | "networkpolicies" | "persistentvolumes" | "storageclasses" | + "namespaces" | "nodes" | "events" | "resourcequotas" | "services" | + "secrets" | "configmaps" | "ingresses" | "networkpolicies" | "persistentvolumeclaims" | "persistentvolumes" | "storageclasses" | "pods" | "daemonsets" | "deployments" | "statefulsets" | "replicasets" | "jobs" | "cronjobs" | "endpoints" | "customresourcedefinitions" | "horizontalpodautoscalers" | "podsecuritypolicies" | "poddisruptionbudgets"; @@ -27,6 +27,7 @@ export const apiResources: KubeApiResource[] = [ { resource: "networkpolicies", group: "networking.k8s.io" }, { resource: "nodes" }, { resource: "persistentvolumes" }, + { resource: "persistentvolumeclaims" }, { resource: "pods" }, { resource: "poddisruptionbudgets" }, { resource: "podsecuritypolicies" }, diff --git a/src/renderer/components/+storage/storage.tsx b/src/renderer/components/+storage/storage.tsx index 9eb86892d7..c0696d66db 100644 --- a/src/renderer/components/+storage/storage.tsx +++ b/src/renderer/components/+storage/storage.tsx @@ -16,12 +16,14 @@ export class Storage extends React.Component { const tabRoutes: TabLayoutRoute[] = []; const query = namespaceUrlParam.toObjectParam(); - tabRoutes.push({ - title: Persistent Volume Claims, - component: PersistentVolumeClaims, - url: volumeClaimsURL({ query }), - routePath: volumeClaimsRoute.path.toString(), - }); + if (isAllowedResource("persistentvolumeclaims")) { + tabRoutes.push({ + title: Persistent Volume Claims, + component: PersistentVolumeClaims, + url: volumeClaimsURL({ query }), + routePath: volumeClaimsRoute.path.toString(), + }); + } if (isAllowedResource("persistentvolumes")) { tabRoutes.push({ diff --git a/src/renderer/utils/rbac.ts b/src/renderer/utils/rbac.ts index 36665824aa..5411e5116c 100644 --- a/src/renderer/utils/rbac.ts +++ b/src/renderer/utils/rbac.ts @@ -11,6 +11,7 @@ export const ResourceNames: Record = { "configmaps": _i18n._("Config Maps"), "ingresses": _i18n._("Ingresses"), "networkpolicies": _i18n._("Network Policies"), + "persistentvolumeclaims": _i18n._("Persistent Volume Claims"), "persistentvolumes": _i18n._("Persistent Volumes"), "storageclasses": _i18n._("Storage Classes"), "pods": _i18n._("Pods"),