From c0d6d2e4772a47a3861681f22295b15ee6b2c5d7 Mon Sep 17 00:00:00 2001 From: Konstantin Vasilev Date: Tue, 30 Aug 2022 15:50:04 +0300 Subject: [PATCH 1/2] CB-2339 feat(plugin-authentication-administration): Enabling users from table --- .../Administration/Users/UsersTable/User.tsx | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/User.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/User.tsx index b54604f60a..892d2bf5a7 100644 --- a/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/User.tsx +++ b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/User.tsx @@ -11,13 +11,15 @@ import styled, { css, use } from 'reshadow'; import type { AdminUser } from '@cloudbeaver/core-authentication'; import { - TableItem, TableColumnValue, TableItemSelect, TableItemExpand, Placeholder, Checkbox + TableItem, TableColumnValue, TableItemSelect, TableItemExpand, Placeholder, FieldCheckbox } from '@cloudbeaver/core-blocks'; -import { useService } from '@cloudbeaver/core-di'; +import { useController, useService } from '@cloudbeaver/core-di'; import { useStyles } from '@cloudbeaver/core-theming'; +import { UserFormController } from '../UserForm/UserFormController'; import { UsersAdministrationService } from '../UsersAdministrationService'; import { UserEdit } from './UserEdit'; +import { UserEditController } from './UserEditController'; const styles = css` TableColumnValue[expand] { @@ -36,8 +38,21 @@ interface Props { export const User = observer(function User({ user, selectable }) { const usersAdministrationService = useService(UsersAdministrationService); const roles = user.grantedRoles.join(', '); + const editController = useController(UserEditController, user.userId); + const formController = useController(UserFormController); + const st = useStyles(styles); - return styled(useStyles(styles))( + if (!editController.user) { + return null; + } + + formController.update(editController.user, true, () => {}); + + function handleEnabledChange() { + formController.save(); + } + + return styled(st)( {selectable && ( @@ -50,7 +65,12 @@ export const User = observer(function User({ user, selectable }) { {user.userId} {roles} - + From 09f6bea69923fa357dd62a61bdf4e9b4673c1a1a Mon Sep 17 00:00:00 2001 From: Konstantin Vasilev Date: Wed, 31 Aug 2022 11:42:09 +0300 Subject: [PATCH 2/2] CB-2339 feat(plugin-authentication-administration): Use resource service instead of controller --- .../Administration/Users/UsersTable/User.tsx | 43 ++++++++++--------- .../packages/plugin-user-profile/src/index.ts | 2 +- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/User.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/User.tsx index 892d2bf5a7..130131c2e3 100644 --- a/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/User.tsx +++ b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/User.tsx @@ -9,17 +9,17 @@ 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, FieldCheckbox + TableItem, TableColumnValue, TableItemSelect, TableItemExpand, Placeholder, Checkbox } from '@cloudbeaver/core-blocks'; -import { useController, useService } from '@cloudbeaver/core-di'; +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 { UserFormController } from '../UserForm/UserFormController'; import { UsersAdministrationService } from '../UsersAdministrationService'; import { UserEdit } from './UserEdit'; -import { UserEditController } from './UserEditController'; const styles = css` TableColumnValue[expand] { @@ -38,21 +38,22 @@ interface Props { export const User = observer(function User({ user, selectable }) { const usersAdministrationService = useService(UsersAdministrationService); const roles = user.grantedRoles.join(', '); - const editController = useController(UserEditController, user.userId); - const formController = useController(UserFormController); - const st = useStyles(styles); + const usersService = useService(UsersResource); + const notificationService = useService(NotificationService); + const translate = useTranslate(); - if (!editController.user) { - return null; + async function handleEnabledCheckboxChange(enabled: boolean) { + try { + await usersService.enableUser(user.userId, enabled); + } catch (error: any) { + notificationService.logException(error); + } } - formController.update(editController.user, true, () => {}); + const enabledCheckboxTitle = usersService.isActiveUser(user.userId) + ? translate('administration_roles_role_granted_users_permission_denied') : undefined; - function handleEnabledChange() { - formController.save(); - } - - return styled(st)( + return styled(useStyles(styles))( {selectable && ( @@ -65,11 +66,11 @@ export const User = observer(function User({ user, selectable }) { {user.userId} {roles} - diff --git a/webapp/packages/plugin-user-profile/src/index.ts b/webapp/packages/plugin-user-profile/src/index.ts index 61f245673e..4be3350f23 100644 --- a/webapp/packages/plugin-user-profile/src/index.ts +++ b/webapp/packages/plugin-user-profile/src/index.ts @@ -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'; \ No newline at end of file