mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Disable server stats buttons when user doesn't have permissions to access those links (#43603)
This commit is contained in:
parent
f999910dc6
commit
13223140ad
@ -41,5 +41,8 @@ describe('ServerStats', () => {
|
|||||||
expect(screen.getByText('Playlists')).toBeInTheDocument();
|
expect(screen.getByText('Playlists')).toBeInTheDocument();
|
||||||
expect(screen.getByText('Snapshots')).toBeInTheDocument();
|
expect(screen.getByText('Snapshots')).toBeInTheDocument();
|
||||||
expect(screen.getByRole('link', { name: 'Manage dashboards' })).toBeInTheDocument();
|
expect(screen.getByRole('link', { name: 'Manage dashboards' })).toBeInTheDocument();
|
||||||
|
expect(screen.getByRole('link', { name: 'Manage data sources' })).toBeInTheDocument();
|
||||||
|
expect(screen.getByRole('link', { name: 'Alerts' })).toBeInTheDocument();
|
||||||
|
expect(screen.getByRole('link', { name: 'Manage users' })).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -14,6 +14,9 @@ export const ServerStats = () => {
|
|||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
const styles = useStyles2(getStyles);
|
const styles = useStyles2(getStyles);
|
||||||
|
|
||||||
|
const hasAccessToDataSources = contextSrv.hasAccess(AccessControlAction.DataSourcesRead, contextSrv.isGrafanaAdmin);
|
||||||
|
const hasAccessToAdminUsers = contextSrv.hasAccess(AccessControlAction.UsersRead, contextSrv.isGrafanaAdmin);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (contextSrv.hasAccess(AccessControlAction.ActionServerStatsRead, contextSrv.isGrafanaAdmin)) {
|
if (contextSrv.hasAccess(AccessControlAction.ActionServerStatsRead, contextSrv.isGrafanaAdmin)) {
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
@ -55,9 +58,11 @@ export const ServerStats = () => {
|
|||||||
<StatCard
|
<StatCard
|
||||||
content={[{ name: 'Data sources', value: stats.datasources }]}
|
content={[{ name: 'Data sources', value: stats.datasources }]}
|
||||||
footer={
|
footer={
|
||||||
<LinkButton href={'/datasources'} variant={'secondary'}>
|
hasAccessToDataSources && (
|
||||||
Manage data sources
|
<LinkButton href={'/datasources'} variant={'secondary'}>
|
||||||
</LinkButton>
|
Manage data sources
|
||||||
|
</LinkButton>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<StatCard
|
<StatCard
|
||||||
@ -77,9 +82,11 @@ export const ServerStats = () => {
|
|||||||
{ name: 'Active sessions', value: stats.activeSessions },
|
{ name: 'Active sessions', value: stats.activeSessions },
|
||||||
]}
|
]}
|
||||||
footer={
|
footer={
|
||||||
<LinkButton href={'/admin/users'} variant={'secondary'}>
|
hasAccessToAdminUsers && (
|
||||||
Manage users
|
<LinkButton href={'/admin/users'} variant={'secondary'}>
|
||||||
</LinkButton>
|
Manage users
|
||||||
|
</LinkButton>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -133,7 +140,7 @@ const getStyles = (theme: GrafanaTheme2) => {
|
|||||||
|
|
||||||
type StatCardProps = {
|
type StatCardProps = {
|
||||||
content: Array<Record<string, number | string>>;
|
content: Array<Record<string, number | string>>;
|
||||||
footer?: JSX.Element;
|
footer?: JSX.Element | boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
const StatCard = ({ content, footer }: StatCardProps) => {
|
const StatCard = ({ content, footer }: StatCardProps) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user