diff --git a/ui/src/admin/components/UserAdminDropdown.tsx b/ui/src/admin/components/UserAdminDropdown.tsx deleted file mode 100644 index b661dd9e8..000000000 --- a/ui/src/admin/components/UserAdminDropdown.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import React, {PureComponent} from 'react' -import classnames from 'classnames' - -import MultiSelectDropdown from 'src/shared/components/MultiSelectDropdown' - -import {USERS_TABLE} from 'src/admin/constants/tableSizing' -import {User, UserPermission} from 'src/types/influxAdmin' -import {ErrorHandling} from 'src/shared/decorators/errors' - -interface Props { - user: User - onUpdatePermissions: (user: User, permissions: UserPermission[]) => void -} - -const ADMIN_YES_OPTION = 'YES' -const ALL_PERMISSIONS = [{name: ADMIN_YES_OPTION}] - -@ErrorHandling -class UserAdminDropdown extends PureComponent { - public render() { - return ( - - ) - } - - private handleApply = (items): void => { - const {onUpdatePermissions, user} = this.props - let permissions = (user.permissions || []).filter(x => x.scope !== 'all') - if (items && items.length) { - permissions = [{scope: 'all', allowed: ['ALL']}, ...permissions] - } - onUpdatePermissions(user, permissions) - } - - private get admin() { - return ( - (this.props.user.permissions || []).filter( - x => x.scope === 'all' && (x.allowed || []).includes('ALL') - ).length > 0 - ) - } - private get selectedPermissions() { - return this.admin ? [{name: ADMIN_YES_OPTION}] : [] - } - - private get permissionsLabel() { - return this.admin ? 'YES' : 'NO' - } - - private get permissionsClass() { - return classnames(`dropdown-${USERS_TABLE.colPermissions}`, { - 'admin-table--multi-select-empty': !this.admin, - }) - } -} - -export default UserAdminDropdown diff --git a/ui/src/admin/components/UserRow.tsx b/ui/src/admin/components/UserRow.tsx index 72c49b096..19de5a7b9 100644 --- a/ui/src/admin/components/UserRow.tsx +++ b/ui/src/admin/components/UserRow.tsx @@ -7,9 +7,50 @@ import {USERS_TABLE} from 'src/admin/constants/tableSizing' import UserRowEdit from 'src/admin/components/UserRowEdit' import {User, UserPermission} from 'src/types/influxAdmin' import {ErrorHandling} from 'src/shared/decorators/errors' -import UserAdminDropdown from './UserAdminDropdown' import {Link} from 'react-router' +const ADMIN_STYLES = [ + { + style: 'admin--not-admin', + text: 'No', + }, + { + style: 'admin--is-admin', + text: 'Yes', + }, +] + +const mapOSSPermission = (allowed: string[]) => { + let retVal = '' + for (const x of allowed) { + if (x === 'WRITE') { + retVal += 'W' + continue + } + if (x === 'READ') { + retVal = 'R' + retVal + continue + } + } + return retVal +} +const OssUserDBPermissions = ({user}: {user: User}) => ( + <> + {(user.permissions || []) + .filter(x => x.scope === 'database') + .sort((a, b) => a.name.localeCompare(b.name)) + .map(x => ( + <> + {x.name} + {':'} + + {mapOSSPermission(x.allowed)} + + + ))} + +) + interface UserRowProps { user: User allRoles: any[] @@ -56,12 +97,19 @@ class UserRow extends PureComponent { ) } + const adminStyle = + ADMIN_STYLES[ + +!!user.permissions.find( + x => x.scope === 'all' && (x.allowed || []).includes('ALL') + ) + ] + return ( {user.name} - {hasRoles && ( + {hasRoles ? ( { onUpdateRoles={onUpdateRoles} /> + ) : ( + + {adminStyle.text} + )} {this.hasPermissions ? ( @@ -78,10 +130,7 @@ class UserRow extends PureComponent { onUpdatePermissions={onUpdatePermissions} /> ) : ( - + )} diff --git a/ui/src/admin/components/UsersTable.tsx b/ui/src/admin/components/UsersTable.tsx index f5380a986..4495869fa 100644 --- a/ui/src/admin/components/UsersTable.tsx +++ b/ui/src/admin/components/UsersTable.tsx @@ -54,10 +54,10 @@ const UsersTable = ({ User - {hasRoles && Roles} - {hasRoles ? 'Permissions' : 'Administrator'} + {hasRoles ? 'Roles' : 'Admin'} + Permissions @@ -82,7 +82,7 @@ const UsersTable = ({ /> )) ) : ( - + )} diff --git a/ui/src/admin/constants/tableSizing.js b/ui/src/admin/constants/tableSizing.js index 7f2ec4c67..d57a70286 100644 --- a/ui/src/admin/constants/tableSizing.js +++ b/ui/src/admin/constants/tableSizing.js @@ -1,5 +1,6 @@ export const USERS_TABLE = { colUsername: 240, + colAdministrator: 70, colPassword: 186, colRoles: 190, colPermissions: 190, diff --git a/ui/src/admin/containers/influxdb/UserPage.tsx b/ui/src/admin/containers/influxdb/UserPage.tsx index a9cf85b3b..4e30add95 100644 --- a/ui/src/admin/containers/influxdb/UserPage.tsx +++ b/ui/src/admin/containers/influxdb/UserPage.tsx @@ -232,7 +232,7 @@ const UserPageContent = ({ {password === undefined ? '' : 'Set password for user: '} {userName} - {password === undefined ? ( + {password === undefined && ( <>