2024-10-01 01:15:51 +00:00
|
|
|
import { UserCheck, Link } from 'lucide-react';
|
|
|
|
import { useCurrentStateAndParams } from '@uirouter/react';
|
|
|
|
|
|
|
|
import { useUnauthorizedRedirect } from '@/react/hooks/useUnauthorizedRedirect';
|
|
|
|
|
|
|
|
import { PageHeader } from '@@/PageHeader';
|
|
|
|
import { Tab, WidgetTabs, findSelectedTabIndex } from '@@/Widget/WidgetTabs';
|
|
|
|
|
|
|
|
import { ClusterRolesDatatable } from './ClusterRolesDatatable/ClusterRolesDatatable';
|
|
|
|
import { ClusterRoleBindingsDatatable } from './ClusterRoleBindingsDatatable/ClusterRoleBindingsDatatable';
|
|
|
|
|
|
|
|
export function ClusterRolesView() {
|
|
|
|
useUnauthorizedRedirect(
|
2024-11-11 20:55:30 +00:00
|
|
|
{
|
|
|
|
authorizations: ['K8sClusterRoleBindingsW', 'K8sClusterRolesW'],
|
|
|
|
adminOnlyCE: true,
|
|
|
|
},
|
2024-10-01 01:15:51 +00:00
|
|
|
{ to: 'kubernetes.dashboard' }
|
|
|
|
);
|
|
|
|
|
|
|
|
const tabs: Tab[] = [
|
|
|
|
{
|
|
|
|
name: 'Cluster Roles',
|
|
|
|
icon: UserCheck,
|
|
|
|
widget: <ClusterRolesDatatable />,
|
|
|
|
selectedTabParam: 'clusterRoles',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'Cluster Role Bindings',
|
|
|
|
icon: Link,
|
|
|
|
widget: <ClusterRoleBindingsDatatable />,
|
|
|
|
selectedTabParam: 'clusterRoleBindings',
|
|
|
|
},
|
|
|
|
];
|
|
|
|
|
|
|
|
const currentTabIndex = findSelectedTabIndex(
|
|
|
|
useCurrentStateAndParams(),
|
|
|
|
tabs
|
|
|
|
);
|
|
|
|
|
|
|
|
return (
|
|
|
|
<>
|
|
|
|
<PageHeader
|
|
|
|
title="Cluster Role list"
|
|
|
|
breadcrumbs="Cluster Roles"
|
|
|
|
reload
|
|
|
|
/>
|
|
|
|
<>
|
|
|
|
<WidgetTabs tabs={tabs} currentTabIndex={currentTabIndex} />
|
|
|
|
<div className="content">{tabs[currentTabIndex].widget}</div>
|
|
|
|
</>
|
|
|
|
</>
|
|
|
|
);
|
|
|
|
}
|