|
|
|
@ -2,7 +2,7 @@ import { css } from '@emotion/css'; |
|
|
|
|
import React, { useState } from 'react'; |
|
|
|
|
|
|
|
|
|
import { GrafanaTheme2 } from '@grafana/data'; |
|
|
|
|
import { RadioButtonGroup, Field, useStyles2 } from '@grafana/ui'; |
|
|
|
|
import { useStyles2, TabsBar, Tab } from '@grafana/ui'; |
|
|
|
|
import { contextSrv } from 'app/core/services/context_srv'; |
|
|
|
|
|
|
|
|
|
import { Page } from '../../core/components/Page/Page'; |
|
|
|
@ -11,11 +11,6 @@ import { UsersListPageContent } from '../users/UsersListPage'; |
|
|
|
|
|
|
|
|
|
import { UserListAdminPageContent } from './UserListAdminPage'; |
|
|
|
|
|
|
|
|
|
const views = [ |
|
|
|
|
{ value: 'admin', label: 'All organisations' }, |
|
|
|
|
{ value: 'org', label: 'This organisation' }, |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
export default function UserListPage() { |
|
|
|
|
const hasAccessToAdminUsers = contextSrv.hasAccess(AccessControlAction.UsersRead, contextSrv.isGrafanaAdmin); |
|
|
|
|
const hasAccessToOrgUsers = contextSrv.hasPermission(AccessControlAction.OrgUsersRead); |
|
|
|
@ -34,19 +29,18 @@ export default function UserListPage() { |
|
|
|
|
return ( |
|
|
|
|
<Page navId={'global-users'}> |
|
|
|
|
{showToggle && ( |
|
|
|
|
<Field label={'Display list of users for'} className={styles.container}> |
|
|
|
|
<RadioButtonGroup options={views} onChange={setView} value={view} /> |
|
|
|
|
</Field> |
|
|
|
|
<TabsBar className={styles.tabsMargin}> |
|
|
|
|
<Tab label="All users" active={view === 'admin'} onChangeTab={() => setView('admin')} /> |
|
|
|
|
<Tab label="Organization users" active={view === 'org'} onChangeTab={() => setView('org')} /> |
|
|
|
|
</TabsBar> |
|
|
|
|
)} |
|
|
|
|
{view === 'admin' ? <UserListAdminPageContent /> : <UsersListPageContent />} |
|
|
|
|
</Page> |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const getStyles = (theme: GrafanaTheme2) => { |
|
|
|
|
return { |
|
|
|
|
container: css` |
|
|
|
|
margin: ${theme.spacing(2, 0)}; |
|
|
|
|
`,
|
|
|
|
|
}; |
|
|
|
|
}; |
|
|
|
|
const getStyles = (theme: GrafanaTheme2) => ({ |
|
|
|
|
tabsMargin: css({ |
|
|
|
|
marginBottom: theme.spacing(3), |
|
|
|
|
}), |
|
|
|
|
}); |
|
|
|
|