Merge pull request #1090 from dbeaver/feat/CB-2339-enable-users

CB-2339 feat(plugin-authentication-administration): Enabling users from table
This commit is contained in:
Konstantin Vasilev
2022-09-02 10:28:25 +03:00
committed by GitHub
2 changed files with 24 additions and 3 deletions
@@ -9,11 +9,13 @@
import { observer } from 'mobx-react-lite';
import styled, { css, use } from 'reshadow';
import type { AdminUser } from '@cloudbeaver/core-authentication';
import { AdminUser, UsersResource } from '@cloudbeaver/core-authentication';
import {
TableItem, TableColumnValue, TableItemSelect, TableItemExpand, Placeholder, Checkbox
} from '@cloudbeaver/core-blocks';
import { useService } from '@cloudbeaver/core-di';
import { NotificationService } from '@cloudbeaver/core-events';
import { useTranslate } from '@cloudbeaver/core-localization';
import { useStyles } from '@cloudbeaver/core-theming';
import { UsersAdministrationService } from '../UsersAdministrationService';
@@ -36,6 +38,20 @@ interface Props {
export const User = observer<Props>(function User({ user, selectable }) {
const usersAdministrationService = useService(UsersAdministrationService);
const roles = user.grantedRoles.join(', ');
const usersService = useService(UsersResource);
const notificationService = useService(NotificationService);
const translate = useTranslate();
async function handleEnabledCheckboxChange(enabled: boolean) {
try {
await usersService.enableUser(user.userId, enabled);
} catch (error: any) {
notificationService.logException(error);
}
}
const enabledCheckboxTitle = usersService.isActiveUser(user.userId)
? translate('administration_roles_role_granted_users_permission_denied') : undefined;
return styled(useStyles(styles))(
<TableItem item={user.userId} expandElement={UserEdit} selectDisabled={!selectable}>
@@ -50,7 +66,12 @@ export const User = observer<Props>(function User({ user, selectable }) {
<TableColumnValue title={user.userId} expand ellipsis>{user.userId}</TableColumnValue>
<TableColumnValue title={roles} ellipsis>{roles}</TableColumnValue>
<TableColumnValue>
<Checkbox checked={user.enabled} disabled />
<Checkbox
checked={user.enabled}
disabled={usersService.isActiveUser(user.userId)}
title={enabledCheckboxTitle}
onChange={handleEnabledCheckboxChange}
/>
</TableColumnValue>
<TableColumnValue flex {...use({ gap: true })}>
<Placeholder container={usersAdministrationService.userDetailsInfoPlaceholder} user={user} />
@@ -3,4 +3,4 @@ import { userProfilePlugin } from './manifest';
export default userProfilePlugin;
export * from './UserMenu/MENU_USER_PROFILE';
export * from './UserMenu/UserMenu';
export * from './UserMenu/UserMenu';