Skip to content

Commit df1d1f8

Browse files
fix: hide dev ui links for users with viewer rights
1 parent 1b74502 commit df1d1f8

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

src/components/BasicNodeViewer/BasicNodeViewer.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import React from 'react';
33
import {ArrowUpRightFromSquare} from '@gravity-ui/icons';
44
import {Icon} from '@gravity-ui/uikit';
55

6+
import {selectIsUserAllowedToMakeChanges} from '../../store/reducers/authentication/authentication';
67
import type {PreparedNode} from '../../store/reducers/node/types';
78
import type {AdditionalNodesProps} from '../../types/additionalProps';
89
import {cn} from '../../utils/cn';
910
import {
1011
createDeveloperUIInternalPageHref,
1112
createDeveloperUILinkWithNodeId,
1213
} from '../../utils/developerUI/developerUI';
14+
import {useTypedSelector} from '../../utils/hooks';
1315
import {EntityStatus} from '../EntityStatus/EntityStatus';
1416
import {Tags} from '../Tags';
1517

@@ -24,6 +26,8 @@ interface BasicNodeViewerProps {
2426
}
2527

2628
export const BasicNodeViewer = ({node, additionalNodesProps, className}: BasicNodeViewerProps) => {
29+
const isUserAllowedToMakeChanges = useTypedSelector(selectIsUserAllowedToMakeChanges);
30+
2731
let developerUIInternalHref: string | undefined;
2832

2933
if (additionalNodesProps?.getNodeRef) {
@@ -42,7 +46,7 @@ export const BasicNodeViewer = ({node, additionalNodesProps, className}: BasicNo
4246
<React.Fragment>
4347
<div className={b('title')}>Node</div>
4448
<EntityStatus status={node.SystemState} name={node.Host} />
45-
{developerUIInternalHref && (
49+
{developerUIInternalHref && isUserAllowedToMakeChanges ? (
4650
<a
4751
rel="noopener noreferrer"
4852
className={b('link', {external: true})}
@@ -51,7 +55,7 @@ export const BasicNodeViewer = ({node, additionalNodesProps, className}: BasicNo
5155
>
5256
<Icon data={ArrowUpRightFromSquare} />
5357
</a>
54-
)}
58+
) : null}
5559

5660
<div className={b('id')}>
5761
<label className={b('label')}>NodeID</label>

src/containers/Header/Header.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {Breadcrumbs} from '@gravity-ui/uikit';
44

55
import {InternalLink} from '../../components/InternalLink';
66
import {LinkWithIcon} from '../../components/LinkWithIcon/LinkWithIcon';
7+
import {selectIsUserAllowedToMakeChanges} from '../../store/reducers/authentication/authentication';
78
import {useClusterBaseInfo} from '../../store/reducers/cluster/cluster';
89
import {cn} from '../../utils/cn';
910
import {DEVELOPER_UI_TITLE} from '../../utils/constants';
@@ -23,6 +24,7 @@ interface HeaderProps {
2324

2425
function Header({mainPage}: HeaderProps) {
2526
const {page, pageBreadcrumbsOptions} = useTypedSelector((state) => state.header);
27+
const isUserAllowedToMakeChanges = useTypedSelector(selectIsUserAllowedToMakeChanges);
2628

2729
const clusterInfo = useClusterBaseInfo();
2830

@@ -78,10 +80,12 @@ function Header({mainPage}: HeaderProps) {
7880
}}
7981
/>
8082

81-
<LinkWithIcon
82-
title={DEVELOPER_UI_TITLE}
83-
url={createDeveloperUIInternalPageHref()}
84-
/>
83+
{isUserAllowedToMakeChanges ? (
84+
<LinkWithIcon
85+
title={DEVELOPER_UI_TITLE}
86+
url={createDeveloperUIInternalPageHref()}
87+
/>
88+
) : null}
8589
</header>
8690
);
8791
};

0 commit comments

Comments
 (0)