chore(ui): simplify UserRole component

pull/5921/head
Pavel Zavora 2022-05-24 08:23:32 +02:00
parent 3027ab9b7e
commit aa95f394ee
1 changed files with 63 additions and 74 deletions

View File

@ -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