chore(ui): simplify UserRole component
parent
3027ab9b7e
commit
aa95f394ee
|
@ -1,4 +1,4 @@
|
||||||
import React, {PureComponent} from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
import UserPermissionsDropdown from 'src/admin/components/UserPermissionsDropdown'
|
import UserPermissionsDropdown from 'src/admin/components/UserPermissionsDropdown'
|
||||||
import UserRoleDropdown from 'src/admin/components/UserRoleDropdown'
|
import UserRoleDropdown from 'src/admin/components/UserRoleDropdown'
|
||||||
|
@ -6,7 +6,6 @@ import {USERS_TABLE} from 'src/admin/constants/tableSizing'
|
||||||
|
|
||||||
import UserRowEdit from 'src/admin/components/UserRowEdit'
|
import UserRowEdit from 'src/admin/components/UserRowEdit'
|
||||||
import {User, UserPermission} from 'src/types/influxAdmin'
|
import {User, UserPermission} from 'src/types/influxAdmin'
|
||||||
import {ErrorHandling} from 'src/shared/decorators/errors'
|
|
||||||
import {Link} from 'react-router'
|
import {Link} from 'react-router'
|
||||||
|
|
||||||
const ADMIN_STYLES = [
|
const ADMIN_STYLES = [
|
||||||
|
@ -51,7 +50,7 @@ const OssUserDBPermissions = ({user}: {user: User}) => (
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
|
||||||
interface UserRowProps {
|
interface Props {
|
||||||
user: User
|
user: User
|
||||||
allRoles: any[]
|
allRoles: any[]
|
||||||
allPermissions: string[]
|
allPermissions: string[]
|
||||||
|
@ -66,81 +65,71 @@ interface UserRowProps {
|
||||||
onUpdateRoles: (user: User, roles: any[]) => void
|
onUpdateRoles: (user: User, roles: any[]) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
@ErrorHandling
|
const UserRow = ({
|
||||||
class UserRow extends PureComponent<UserRowProps> {
|
user,
|
||||||
public render() {
|
allRoles,
|
||||||
const {
|
allPermissions,
|
||||||
user,
|
hasRoles,
|
||||||
allRoles,
|
isNew,
|
||||||
allPermissions,
|
isEditing,
|
||||||
hasRoles,
|
page,
|
||||||
isNew,
|
onEdit,
|
||||||
isEditing,
|
onSave,
|
||||||
page,
|
onCancel,
|
||||||
onEdit,
|
onUpdatePermissions,
|
||||||
onSave,
|
onUpdateRoles,
|
||||||
onCancel,
|
}: Props) => {
|
||||||
onUpdatePermissions,
|
if (isEditing) {
|
||||||
onUpdateRoles,
|
|
||||||
} = this.props
|
|
||||||
|
|
||||||
if (isEditing) {
|
|
||||||
return (
|
|
||||||
<UserRowEdit
|
|
||||||
user={user}
|
|
||||||
isNew={isNew}
|
|
||||||
onEdit={onEdit}
|
|
||||||
onSave={onSave}
|
|
||||||
onCancel={onCancel}
|
|
||||||
hasRoles={hasRoles}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
const adminStyle =
|
|
||||||
ADMIN_STYLES[
|
|
||||||
+!!user.permissions.find(
|
|
||||||
x => x.scope === 'all' && (x.allowed || []).includes('ALL')
|
|
||||||
)
|
|
||||||
]
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<tr>
|
<UserRowEdit
|
||||||
<td style={{width: `${USERS_TABLE.colUsername}px`}}>
|
user={user}
|
||||||
<Link to={page}>{user.name}</Link>
|
isNew={isNew}
|
||||||
</td>
|
onEdit={onEdit}
|
||||||
{hasRoles ? (
|
onSave={onSave}
|
||||||
<td>
|
onCancel={onCancel}
|
||||||
<UserRoleDropdown
|
hasRoles={hasRoles}
|
||||||
user={user}
|
/>
|
||||||
allRoles={allRoles}
|
|
||||||
onUpdateRoles={onUpdateRoles}
|
|
||||||
/>
|
|
||||||
</td>
|
|
||||||
) : (
|
|
||||||
<td style={{width: `${USERS_TABLE.colAdministrator}px`}}>
|
|
||||||
<span className={adminStyle.style}>{adminStyle.text}</span>
|
|
||||||
</td>
|
|
||||||
)}
|
|
||||||
<td>
|
|
||||||
{this.hasPermissions ? (
|
|
||||||
<UserPermissionsDropdown
|
|
||||||
user={user}
|
|
||||||
allPermissions={allPermissions}
|
|
||||||
onUpdatePermissions={onUpdatePermissions}
|
|
||||||
/>
|
|
||||||
) : (
|
|
||||||
<OssUserDBPermissions user={user} />
|
|
||||||
)}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private get hasPermissions() {
|
const adminStyle =
|
||||||
const {allPermissions, hasRoles} = this.props
|
ADMIN_STYLES[
|
||||||
return hasRoles && allPermissions && !!allPermissions.length
|
+!!user.permissions.find(
|
||||||
}
|
x => x.scope === 'all' && (x.allowed || []).includes('ALL')
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
return (
|
||||||
|
<tr>
|
||||||
|
<td style={{width: `${USERS_TABLE.colUsername}px`}}>
|
||||||
|
<Link to={page}>{user.name}</Link>
|
||||||
|
</td>
|
||||||
|
{hasRoles ? (
|
||||||
|
<td>
|
||||||
|
<UserRoleDropdown
|
||||||
|
user={user}
|
||||||
|
allRoles={allRoles}
|
||||||
|
onUpdateRoles={onUpdateRoles}
|
||||||
|
/>
|
||||||
|
</td>
|
||||||
|
) : (
|
||||||
|
<td style={{width: `${USERS_TABLE.colAdministrator}px`}}>
|
||||||
|
<span className={adminStyle.style}>{adminStyle.text}</span>
|
||||||
|
</td>
|
||||||
|
)}
|
||||||
|
<td>
|
||||||
|
{hasRoles ? (
|
||||||
|
<UserPermissionsDropdown
|
||||||
|
user={user}
|
||||||
|
allPermissions={allPermissions}
|
||||||
|
onUpdatePermissions={onUpdatePermissions}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<OssUserDBPermissions user={user} />
|
||||||
|
)}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default UserRow
|
export default UserRow
|
||||||
|
|
Loading…
Reference in New Issue