From cef22ba64513d14b96541b4de31af71a4b8e3cd2 Mon Sep 17 00:00:00 2001 From: nshandra <34254522+nshandra@users.noreply.github.com> Date: Tue, 21 Feb 2023 21:38:06 +0100 Subject: [PATCH 1/6] Fix import missing fields --- src/legacy/models/userHelpers.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/legacy/models/userHelpers.js b/src/legacy/models/userHelpers.js index 6465856..d5372c8 100644 --- a/src/legacy/models/userHelpers.js +++ b/src/legacy/models/userHelpers.js @@ -317,6 +317,7 @@ function getUserPayloadFromPlainAttributes(baseUser, userFields) { id: (baseUser.userCredentials && baseUser.userCredentials.id) || generateUid(), userInfo: { id: userRoot.id }, }, + ...clean(_(userFields).pick(userCredentialsFields.filter(item => item !== 'password')).value()), }; } From fce211d7050dcd509e5ceab80d4a3ec63e17cb4c Mon Sep 17 00:00:00 2001 From: nshandra <34254522+nshandra@users.noreply.github.com> Date: Tue, 21 Feb 2023 22:00:45 +0100 Subject: [PATCH 2/6] Fix user edit failing because user.userRoles is empty --- src/data/repositories/UserD2ApiRepository.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/repositories/UserD2ApiRepository.ts b/src/data/repositories/UserD2ApiRepository.ts index edbed31..e727036 100644 --- a/src/data/repositories/UserD2ApiRepository.ts +++ b/src/data/repositories/UserD2ApiRepository.ts @@ -130,6 +130,7 @@ export class UserD2ApiRepository implements UserRepository { skype: user?.skype, telegram: user?.telegram, twitter: user?.twitter, + userRoles: user?.userCredentials.userRoles, userCredentials: { ...existingUser.userCredentials, disabled: user?.userCredentials.disabled, From 39d02d3f8ae2427b1b35248ef454f482beab31aa Mon Sep 17 00:00:00 2001 From: nshandra <34254522+nshandra@users.noreply.github.com> Date: Tue, 21 Feb 2023 23:28:26 +0100 Subject: [PATCH 3/6] Streamline disable user --- src/legacy/List/List.component.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/legacy/List/List.component.js b/src/legacy/List/List.component.js index 7ddbc64..a82a4b3 100644 --- a/src/legacy/List/List.component.js +++ b/src/legacy/List/List.component.js @@ -159,9 +159,7 @@ export class ListHybrid extends React.Component { const newValue = action === "disable"; const response = await updateUsers(this.context.d2, users, user => { if (user?.userCredentials?.disabled !== newValue) { - return set("userCredentials.disabled", newValue, user); - } else if (user?.disabled !== newValue) { - return set("disabled", newValue, user); + return set("disabled", newValue, set("userCredentials.disabled", newValue, user)); } else { return null; } From 335a3f855d786137bb809a6ea46b2a4a4c506a44 Mon Sep 17 00:00:00 2001 From: nshandra <34254522+nshandra@users.noreply.github.com> Date: Tue, 21 Feb 2023 23:54:11 +0100 Subject: [PATCH 4/6] Patch missing fields from user schema (waiting to eyeseetea/d2-api upgrade), add missing fields in getUserPayloadFromPlainAttributes as a array --- src/data/repositories/UserD2ApiRepository.ts | 2 ++ src/legacy/models/userHelpers.js | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/data/repositories/UserD2ApiRepository.ts b/src/data/repositories/UserD2ApiRepository.ts index e727036..e8faccf 100644 --- a/src/data/repositories/UserD2ApiRepository.ts +++ b/src/data/repositories/UserD2ApiRepository.ts @@ -131,6 +131,8 @@ export class UserD2ApiRepository implements UserRepository { telegram: user?.telegram, twitter: user?.twitter, userRoles: user?.userCredentials.userRoles, + username: user?.userCredentials.username, + disabled: user?.userCredentials.disabled, userCredentials: { ...existingUser.userCredentials, disabled: user?.userCredentials.disabled, diff --git a/src/legacy/models/userHelpers.js b/src/legacy/models/userHelpers.js index d5372c8..74b3e26 100644 --- a/src/legacy/models/userHelpers.js +++ b/src/legacy/models/userHelpers.js @@ -18,6 +18,8 @@ const propertiesIgnoredOnImport = ["id", "created", "lastUpdated", "lastLogin"]; const userCredentialsFields = ["username", "password", "userRoles", "disabled", "openId"]; +const user238MissingFields = ["username", "userRoles", "disabled"]; + const columnNameFromPropertyMapping = { id: "ID", username: "Username", @@ -317,7 +319,7 @@ function getUserPayloadFromPlainAttributes(baseUser, userFields) { id: (baseUser.userCredentials && baseUser.userCredentials.id) || generateUid(), userInfo: { id: userRoot.id }, }, - ...clean(_(userFields).pick(userCredentialsFields.filter(item => item !== 'password')).value()), + ...clean(_(userFields).pick(user238MissingFields).value()), }; } From 2f87b09d152c8a23c75627b27e08da46b119a0bf Mon Sep 17 00:00:00 2001 From: nshandra <34254522+nshandra@users.noreply.github.com> Date: Wed, 22 Feb 2023 12:53:01 +0100 Subject: [PATCH 5/6] Disabled add new user button --- src/webapp/components/user-list-table/UserListTable.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/webapp/components/user-list-table/UserListTable.tsx b/src/webapp/components/user-list-table/UserListTable.tsx index 41dee31..46c4edc 100644 --- a/src/webapp/components/user-list-table/UserListTable.tsx +++ b/src/webapp/components/user-list-table/UserListTable.tsx @@ -229,10 +229,11 @@ export const UserListTable: React.FC = ({ pageSizeInitialValue: 25, }, searchBoxLabel: i18n.t("Search by name or username..."), - onActionButtonClick: () => navigate("/new"), + // FIXME: Disabled as long as user creation via /new does not work. + // onActionButtonClick: () => navigate("/new"), onReorderColumns, }; - }, [openSettings, enableReplicate, editUsers, onReorderColumns, reload, navigate]); + }, [openSettings, enableReplicate, editUsers, onReorderColumns, reload]); const refreshRows = useCallback( async ( From ac80c1af8f9a204dbf235f844cf669f81c0f66ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacio=20Foche=20P=C3=A9rez?= Date: Thu, 23 Feb 2023 07:39:38 +0100 Subject: [PATCH 6/6] version bumped --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a4ee83b..4f7e634 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "user-extended-app", "description": "DHIS2 Extended User app", - "version": "1.2.0", + "version": "1.2.1", "license": "GPL-3.0", "author": "EyeSeeTea team", "homepage": ".",