diff --git a/ui/src/admin/components/AdminTabs.js b/ui/src/admin/components/AdminTabs.js
index 99c7c42aa5..92bf869ed5 100644
--- a/ui/src/admin/components/AdminTabs.js
+++ b/ui/src/admin/components/AdminTabs.js
@@ -1,66 +1,58 @@
-import React, {Component, PropTypes} from 'react'
+import React, {PropTypes} from 'react'
import {Tab, Tabs, TabPanel, TabPanels, TabList} from 'src/shared/components/Tabs';
import UsersTable from 'src/admin/components/UsersTable'
import RolesTable from 'src/admin/components/RolesTable'
import QueriesPage from 'src/admin/containers/QueriesPage'
-const TABS = ['Users', 'Roles', 'Queries'];
+const AdminTabs = ({
+ users,
+ roles,
+ source,
+ onDeleteRole,
+ onDeleteUser,
+ onFilterRoles,
+ onFilterUsers,
+}) => {
+ const hasRoles = !!source.links.roles
-class AdminTabs extends Component {
- constructor(props) {
- super(props)
+ let tabs = [
+ {
+ type: 'Users',
+ component: (),
+ },
+ {
+ type: 'Roles',
+ component: (),
+ },
+ {
+ type: 'Queries',
+ component: (),
+ },
+ ]
- this.state = {
- activeTab: TABS[0],
- }
-
- this.handleActivateTab = this.handleActivateTab.bind(this)
+ if (!hasRoles) {
+ tabs = tabs.filter(t => t.type !== 'Roles')
}
- handleActivateTab(activeIndex) {
- this.setState({activeTab: TABS[activeIndex]})
- }
-
- render() {
- const {
- users,
- roles,
- source,
- onDeleteRole,
- onDeleteUser,
- onFilterRoles,
- onFilterUsers,
- } = this.props
-
- return (
-
-
- {TABS[0]}
- {TABS[1]}
- {TABS[2]}
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
- }
+ return (
+
+
+ {
+ tabs.map((t, i) => ({tabs[i].type}))
+ }
+
+
+ {
+ tabs.map((t, i) => ({t.component}))
+ }
+
+
+ )
}
const {
diff --git a/ui/src/admin/components/UsersTable.js b/ui/src/admin/components/UsersTable.js
index d4a7f1920c..3a54861777 100644
--- a/ui/src/admin/components/UsersTable.js
+++ b/ui/src/admin/components/UsersTable.js
@@ -3,7 +3,7 @@ import UserRow from 'src/admin/components/UserRow'
import EmptyRow from 'src/admin/components/EmptyRow'
import FilterBar from 'src/admin/components/FilterBar'
-const UsersTable = ({users, onDelete, onFilter}) => (
+const UsersTable = ({users, hasRoles, onDelete, onFilter}) => (
@@ -11,7 +11,7 @@ const UsersTable = ({users, onDelete, onFilter}) => (
User |
- Roles |
+ {hasRoles && Roles | }
Permissions |
|
@@ -31,6 +31,7 @@ const UsersTable = ({users, onDelete, onFilter}) => (
const {
arrayOf,
+ bool,
func,
shape,
string,
@@ -47,6 +48,7 @@ UsersTable.propTypes = {
scope: string.isRequired,
})),
})),
+ hasRoles: bool.isRequired,
onDelete: func.isRequired,
onFilter: func,
}