passbolt-browser-extension 5.12.1 → 5.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/safe-chain-config.json +2 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +30 -22
- package/.github/ISSUE_TEMPLATE/config.yml +11 -0
- package/.jpmignore +0 -1
- package/CHANGELOG.md +82 -1
- package/CONTRIBUTING.md +1 -12
- package/README.md +5 -16
- package/RELEASE_NOTES.md +2 -3
- package/SECURITY.md +7 -0
- package/i18next.config.js +28 -0
- package/jest.config.json +1 -0
- package/package.json +20 -40
- package/src/all/background_page/controller/accountRecovery/reviewRequestController.test.js +1 -1
- package/src/all/background_page/{event → controller/actionLog}/findAllForActionLogController.js +1 -1
- package/src/all/background_page/{event → controller/actionLog}/findAllForActionLogController.test.js +4 -4
- package/src/all/background_page/controller/export/exportResourcesFileController.test.js +7 -2
- package/src/all/background_page/controller/folder/folderCreateController.js +3 -1
- package/src/all/background_page/controller/group/findMyGroupsController.test.js +2 -2
- package/src/all/background_page/controller/group/getOrFindGroupsController.js +61 -0
- package/src/all/background_page/controller/group/getOrFindGroupsController.test.js +69 -0
- package/src/all/background_page/controller/group/getOrFindGroupsUsersController.js +62 -0
- package/src/all/background_page/controller/group/getOrFindGroupsUsersController.test.js +69 -0
- package/src/all/background_page/controller/group/groupCreateController.js +1 -1
- package/src/all/background_page/controller/group/groupCreateController.test.js +1 -1
- package/src/all/background_page/controller/group/groupUpdateController.js +1 -1
- package/src/all/background_page/controller/group/updateAllGroupsLocalStorageController.test.js +1 -1
- package/src/all/background_page/controller/keyring/synchroniseKeyringController.js +51 -0
- package/src/all/background_page/controller/keyring/synchroniseKeyringController.test.js +49 -0
- package/src/all/background_page/controller/metadata/shareMetadataKeyPrivateController.test.js +1 -1
- package/src/all/background_page/controller/move/moveFolderController.js +0 -2
- package/src/all/background_page/controller/permission/FindAcoPermissionsForDisplayController.js +1 -1
- package/src/all/background_page/controller/permission/FindAcoPermissionsForDisplayController.test.js +2 -2
- package/src/all/background_page/controller/resource/findAllByIdsForDisplayPermissionsController.test.js +8 -3
- package/src/all/background_page/controller/resource/findAllIdsByIsSharedWithGroupController.test.js +9 -4
- package/src/all/background_page/controller/resource/resourceUpdateController.test.js +1 -2
- package/src/all/background_page/controller/resourceLocalStorage/resourceUpdateLocalStorageController.test.js +5 -2
- package/src/all/background_page/controller/share/findFoldersForShareController.js +66 -0
- package/src/all/background_page/controller/share/findFoldersForShareController.test.js +70 -0
- package/src/all/background_page/controller/share/searchUsersAndGroupsController.js +4 -4
- package/src/all/background_page/controller/share/searchUsersAndGroupsController.test.js +8 -23
- package/src/all/background_page/controller/share/shareResourcesController.test.js +2 -2
- package/src/all/background_page/controller/subscription/createSubscriptionKeyController.js +63 -0
- package/src/all/background_page/controller/subscription/createSubscriptionKeyController.test.js +56 -0
- package/src/all/background_page/controller/subscription/deleteSubscriptionKeyController.js +55 -0
- package/src/all/background_page/controller/subscription/deleteSubscriptionKeyController.test.js +50 -0
- package/src/all/background_page/controller/user/deleteUserController.test.js +1 -1
- package/src/all/background_page/controller/user/getOrFindUsersController.js +61 -0
- package/src/all/background_page/controller/user/getOrFindUsersController.test.js +69 -0
- package/src/all/background_page/error/deleteDryRunError.js +1 -1
- package/src/all/background_page/event/actionLogEvents.js +1 -1
- package/src/all/background_page/event/appEvents.js +25 -0
- package/src/all/background_page/event/groupEvents.js +26 -0
- package/src/all/background_page/event/keyringEvents.js +12 -0
- package/src/all/background_page/event/shareEvents.js +3 -9
- package/src/all/background_page/event/userEvents.js +13 -0
- package/src/all/background_page/model/config.js +12 -2
- package/src/all/background_page/model/entity/folder/folderEntity.js +2 -2
- package/src/all/background_page/model/entity/folder/folderEntity.test.js +2 -2
- package/src/all/background_page/model/entity/folder/foldersCollection.test.js +1 -1
- package/src/all/background_page/model/entity/group/update/groupUpdateEntity.js +1 -1
- package/src/all/background_page/model/entity/group/update/groupUpdateEntity.test.js +1 -1
- package/src/all/background_page/model/entity/permission/actionLog/updatedPermissionEntity.js +2 -2
- package/src/all/background_page/model/entity/permission/actionLog/updatedPermissionEntity.test.data.js +1 -1
- package/src/all/background_page/model/entity/permission/change/permissionChangeEntity.js +1 -1
- package/src/all/background_page/model/entity/permission/change/permissionChangesCollection.js +2 -2
- package/src/all/background_page/model/entity/permission/change/permissionChangesCollection.test.js +2 -2
- package/src/all/background_page/model/entity/resource/resourceEntity.js +2 -2
- package/src/all/background_page/model/entity/resource/resourceEntity.test.js +1 -1
- package/src/all/background_page/model/entity/user/userEntity.js +16 -377
- package/src/all/background_page/model/entity/user/userEntity.test.js +22 -297
- package/src/all/background_page/model/entity/userAndGroupSearchResultEntity/userAndGroupSearchResultEntity.js +1 -1
- package/src/all/background_page/model/folder/folderModel.js +5 -154
- package/src/all/background_page/model/group/groupModel.js +1 -1
- package/src/all/background_page/model/keyring.js +52 -17
- package/src/all/background_page/model/keyring.test.js +110 -0
- package/src/all/background_page/model/resource/resourceModel.js +2 -55
- package/src/all/background_page/model/setup/setupModel.js +2 -2
- package/src/all/background_page/model/user/userModel.js +18 -15
- package/src/all/background_page/model/user/userModel.test.js +1 -3
- package/src/all/background_page/service/api/abstract/abstractService.js +3 -17
- package/src/all/background_page/service/api/edition/passboltEditionApiService.js +64 -0
- package/src/all/background_page/service/api/edition/passboltEditionApiService.test.js +99 -0
- package/src/all/background_page/service/api/group/groupApiService.js +22 -23
- package/src/all/background_page/service/api/group/groupApiService.test.js +70 -0
- package/src/all/background_page/service/api/resource/resourceService.js +18 -12
- package/src/all/background_page/service/api/share/{shareService.js → shareApiService.js} +10 -7
- package/src/all/background_page/service/api/share/{shareService.test.js → shareApiService.test.js} +5 -5
- package/src/all/background_page/service/group/createGroupService.js +1 -1
- package/src/all/background_page/service/group/createGroupService.test.js +1 -1
- package/src/all/background_page/service/group/findAndUpdateGroupsLocalStorageService.js +56 -1
- package/src/all/background_page/service/group/findAndUpdateGroupsLocalStorageService.test.js +84 -2
- package/src/all/background_page/service/group/findGroupsService.js +5 -9
- package/src/all/background_page/service/group/findGroupsService.test.data.js +1 -1
- package/src/all/background_page/service/group/findGroupsService.test.js +10 -15
- package/src/all/background_page/service/group/getOrFindGroupsService.js +65 -0
- package/src/all/background_page/service/group/getOrFindGroupsService.test.js +168 -0
- package/src/all/background_page/service/group/getOrFindGroupsUsersService.js +51 -0
- package/src/all/background_page/service/group/getOrFindGroupsUsersService.test.js +94 -0
- package/src/all/background_page/service/group/groupUpdateService.js +5 -3
- package/src/all/background_page/service/group/groupUpdateService.test.js +10 -2
- package/src/all/background_page/service/local_storage/groupLocalStorage.js +2 -2
- package/src/all/background_page/service/local_storage/groupLocalStorage.test.js +3 -3
- package/src/all/background_page/service/local_storage/userLocalStorage.js +57 -36
- package/src/all/background_page/service/local_storage/userLocalStorage.test.js +282 -0
- package/src/all/background_page/service/metadata/createMetadataKeyService.test.js +1 -1
- package/src/all/background_page/service/metadata/saveMetadataSettingsService.test.js +1 -1
- package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.test.js +1 -1
- package/src/all/background_page/service/migrateMetadata/migrateMetadataResourcesService.js +1 -1
- package/src/all/background_page/service/move/calculatePermissionsChangesForMoveService.js +113 -0
- package/src/all/background_page/service/move/calculatePermissionsChangesForMoveService.test.data.js +38 -0
- package/src/all/background_page/service/move/calculatePermissionsChangesForMoveService.test.js +158 -0
- package/src/all/background_page/service/move/moveOneFolderService.js +6 -7
- package/src/all/background_page/service/move/moveOneFolderService.test.js +90 -90
- package/src/all/background_page/service/move/moveResourcesService.js +2 -5
- package/src/all/background_page/service/permission/findPermissionsService.js +1 -1
- package/src/all/background_page/service/resource/create/resourceCreateService.js +13 -31
- package/src/all/background_page/service/resource/create/resourceCreateService.test.js +25 -18
- package/src/all/background_page/service/resource/export/exportResourcesService.test.js +13 -4
- package/src/all/background_page/service/resource/findAndUpdateResourcesLocalStorageService.test.js +35 -28
- package/src/all/background_page/service/resource/findResourcesService.js +78 -2
- package/src/all/background_page/service/resource/findResourcesService.test.data.js +1 -1
- package/src/all/background_page/service/resource/findResourcesService.test.js +90 -31
- package/src/all/background_page/service/resource/getOrFindResourcesService.test.js +18 -8
- package/src/all/background_page/service/session_storage/keepSessionAliveService.js +3 -3
- package/src/all/background_page/service/session_storage/keepSessionAliveService.test.js +5 -3
- package/src/all/background_page/service/share/searchUsersAndGroupsService.js +41 -0
- package/src/all/background_page/service/share/searchUsersAndGroupsService.test.js +64 -0
- package/src/all/background_page/service/share/shareFoldersService.js +3 -3
- package/src/all/background_page/service/share/shareFoldersService.test.js +3 -3
- package/src/all/background_page/service/share/shareResourceService.js +4 -4
- package/src/all/background_page/service/share/shareResourceService.test.js +8 -8
- package/src/all/background_page/service/subscription/createSubscriptionKeyService.js +57 -0
- package/src/all/background_page/service/subscription/createSubscriptionKeyService.test.js +111 -0
- package/src/all/background_page/service/subscription/deleteSubscriptionKeyService.js +35 -0
- package/src/all/background_page/service/subscription/deleteSubscriptionKeyService.test.js +55 -0
- package/src/all/background_page/service/user/deleteUserService.js +4 -4
- package/src/all/background_page/service/user/deleteUserService.test.js +10 -10
- package/src/all/background_page/service/user/findAndUpdateUsersLocalStorageService.js +81 -0
- package/src/all/background_page/service/user/findAndUpdateUsersLocalStorageService.test.js +132 -0
- package/src/all/background_page/service/user/findUsersService.js +6 -6
- package/src/all/background_page/service/user/findUsersService.test.js +39 -38
- package/src/all/background_page/service/user/getOrFindUsersService.js +60 -0
- package/src/all/background_page/service/user/getOrFindUsersService.test.js +110 -0
- package/src/all/background_page/utils/assertions.js +1 -0
- package/src/all/locales/ko-KR/common.json +1 -1
- package/src/chrome/manifest.json +1 -1
- package/src/chrome-mv3/manifest.json +1 -1
- package/src/firefox/manifest.json +3 -3
- package/src/safari/manifest.json +2 -2
- package/test/jest.env-setup.js +31 -0
- package/webpack/applyOutputClean.js +69 -0
- package/webpack/base.config.js +33 -0
- package/webpack/common-blocks.js +91 -0
- package/webpack/expectedBuildArtifacts.js +51 -0
- package/webpack/i18nextExtractionPlugin.js +43 -0
- package/webpack/passboltEnvPlugin.js +41 -0
- package/webpack/webExtPlugin/index.js +75 -0
- package/webpack.chromium-mv2.config.js +40 -0
- package/webpack.chromium-mv3.config.js +40 -0
- package/webpack.common.config.js +186 -0
- package/webpack.config.js +38 -0
- package/webpack.firefox.config.js +40 -0
- package/webpack.mv2.config.js +65 -0
- package/webpack.mv3.config.js +99 -0
- package/webpack.safari-background-page.config.js +66 -57
- package/webpack.safari.config.js +44 -0
- package/Gruntfile.js +0 -471
- package/am_i_compromised.py +0 -1036
- package/am_i_compromised.sh +0 -688
- package/i18next-parser.config.js +0 -22
- package/src/all/background_page/config/config.json +0 -7
- package/src/all/background_page/config/config.json.debug +0 -7
- package/src/all/background_page/config/config.json.default +0 -7
- package/src/all/background_page/model/entity/group/groupEntity.js +0 -241
- package/src/all/background_page/model/entity/group/groupEntity.test.js +0 -136
- package/src/all/background_page/model/entity/group/groupsCollection.js +0 -166
- package/src/all/background_page/model/entity/group/groupsCollection.test.data.js +0 -34
- package/src/all/background_page/model/entity/group/groupsCollection.test.js +0 -227
- package/src/all/background_page/model/entity/permission/permissionEntity.js +0 -485
- package/src/all/background_page/model/entity/permission/permissionEntity.test.js +0 -263
- package/src/all/background_page/model/entity/permission/permissionsCollection.js +0 -486
- package/src/all/background_page/model/entity/permission/permissionsCollection.test.js +0 -700
- package/src/all/background_page/model/entity/user/usersCollection.js +0 -147
- package/src/all/background_page/model/entity/user/usersCollection.test.js +0 -223
- package/src/all/background_page/model/share/shareModel.js +0 -183
- package/src/all/background_page/model/share/shareModel.test.js +0 -61
- package/src/all/background_page/service/api/user/userService.js +0 -260
- package/src/all/background_page/service/resource/create/resourceCreateService.test.data.js +0 -55
- package/webpack-content-scripts.browser-integration.config.js +0 -57
- package/webpack-content-scripts.config.js +0 -61
- package/webpack-content-scripts.public-website-sign-in.config.js +0 -57
- package/webpack-data.config.js +0 -102
- package/webpack-data.download.config.js +0 -59
- package/webpack-data.in-form-call-to-action.config.js +0 -97
- package/webpack-data.in-form-menu.config.js +0 -97
- package/webpack-offscreens.config.js +0 -55
- package/webpack.background-page.config.js +0 -62
- package/webpack.service-worker.config.js +0 -65
|
@@ -11,6 +11,7 @@ import GetKeyInfoController from "../controller/crypto/getKeyInfoController";
|
|
|
11
11
|
import DownloadUserPublicKeyController from "../controller/crypto/downloadUserPublicKeyController";
|
|
12
12
|
import DownloadUserPrivateKeyController from "../controller/crypto/downloadUserPrivateKeyController";
|
|
13
13
|
import GetUserPrivateKeyController from "../controller/crypto/getUserPrivateKeyController";
|
|
14
|
+
import SynchroniseKeyringController from "../controller/keyring/synchroniseKeyringController";
|
|
14
15
|
|
|
15
16
|
const listen = function (worker, _, account) {
|
|
16
17
|
/*
|
|
@@ -61,6 +62,17 @@ const listen = function (worker, _, account) {
|
|
|
61
62
|
await controller._exec(passphrase);
|
|
62
63
|
});
|
|
63
64
|
|
|
65
|
+
/*
|
|
66
|
+
* Synchronise the keyring with the API.
|
|
67
|
+
*
|
|
68
|
+
* @listens passbolt.keyring.sync
|
|
69
|
+
* @param requestId {uuid} The request identifier
|
|
70
|
+
*/
|
|
71
|
+
worker.port.on("passbolt.keyring.sync", async (requestId) => {
|
|
72
|
+
const controller = new SynchroniseKeyringController(worker, requestId);
|
|
73
|
+
await controller._exec();
|
|
74
|
+
});
|
|
75
|
+
|
|
64
76
|
/*
|
|
65
77
|
* ==================================================================================
|
|
66
78
|
* Backups key events
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
* @since 1.0.0
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import FolderModel from "../model/folder/folderModel";
|
|
16
15
|
import ShareResourcesController from "../controller/share/shareResourcesController";
|
|
17
16
|
import ShareOneFolderController from "../controller/share/shareOneFolderController";
|
|
18
17
|
import SearchUsersAndGroupsController from "../controller/share/searchUsersAndGroupsController";
|
|
18
|
+
import FindFoldersForShareController from "../controller/share/findFoldersForShareController";
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Listens the share events
|
|
@@ -30,14 +30,8 @@ const listen = function (worker, apiClientOptions, account) {
|
|
|
30
30
|
* @param {array} foldersIds The ids of the folders to retrieve.
|
|
31
31
|
*/
|
|
32
32
|
worker.port.on("passbolt.share.get-folders", async (requestId, foldersIds) => {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const foldersCollection = await folderModel.findAllForShare(foldersIds);
|
|
36
|
-
worker.port.emit(requestId, "SUCCESS", foldersCollection);
|
|
37
|
-
} catch (error) {
|
|
38
|
-
console.error(error);
|
|
39
|
-
worker.port.emit(requestId, "ERROR", error);
|
|
40
|
-
}
|
|
33
|
+
const controller = new FindFoldersForShareController(worker, requestId, apiClientOptions);
|
|
34
|
+
await controller._exec(foldersIds);
|
|
41
35
|
});
|
|
42
36
|
|
|
43
37
|
/*
|
|
@@ -14,6 +14,7 @@ import SecurityTokenEntity from "../model/entity/securityToken/securityTokenEnti
|
|
|
14
14
|
import AvatarUpdateEntity from "../model/entity/avatar/update/avatarUpdateEntity";
|
|
15
15
|
import UpdateUserLocalStorageController from "../controller/user/updateUserLocalStorageController";
|
|
16
16
|
import GetOrFindLoggedInUserController from "../controller/user/getOrFindLoggedInUserController";
|
|
17
|
+
import GetOrFindUsersController from "../controller/user/getOrFindUsersController";
|
|
17
18
|
import UpdateUserController from "../controller/user/updateUserController";
|
|
18
19
|
import DeleteDryRunUserController from "../controller/user/deleteDryRunUserController";
|
|
19
20
|
import DeleteUserController from "../controller/user/deleteUserController";
|
|
@@ -46,6 +47,18 @@ const listen = function (worker, apiClientOptions, account) {
|
|
|
46
47
|
}
|
|
47
48
|
});
|
|
48
49
|
|
|
50
|
+
/*
|
|
51
|
+
* Find users by their ids.
|
|
52
|
+
*
|
|
53
|
+
* @listens passbolt.users.get-by-ids
|
|
54
|
+
* @param {uuid} requestId The request identifier
|
|
55
|
+
* @param {Array<uuid>} userIds The ids of the users to retrieve
|
|
56
|
+
*/
|
|
57
|
+
worker.port.on("passbolt.users.get-by-ids", async (requestId, userIds) => {
|
|
58
|
+
const controller = new GetOrFindUsersController(worker, requestId, apiClientOptions, account);
|
|
59
|
+
controller._exec(userIds);
|
|
60
|
+
});
|
|
61
|
+
|
|
49
62
|
/*
|
|
50
63
|
* ==================================================================================
|
|
51
64
|
* CRUD
|
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Config model.
|
|
3
3
|
*
|
|
4
|
+
* Build-time keys (debug, log.*) are injected by webpack's EnvironmentPlugin
|
|
5
|
+
* (see webpack/passboltEnvPlugin.js). Other keys (user.*) are runtime-only and
|
|
6
|
+
* persisted in local storage.
|
|
7
|
+
*
|
|
4
8
|
* @copyright (c) 2017 Passbolt SARL
|
|
5
9
|
* @licence GNU Affero General Public License http://www.gnu.org/licenses/agpl-3.0.en.html
|
|
6
10
|
*/
|
|
11
|
+
import storage from "../sdk/storage";
|
|
7
12
|
|
|
8
|
-
|
|
13
|
+
const _config = {
|
|
14
|
+
debug: process.env.PASSBOLT_DEBUG === "true",
|
|
15
|
+
log: {
|
|
16
|
+
level: Number.parseInt(process.env.PASSBOLT_LOG_LEVEL, 10) || 0,
|
|
17
|
+
console: process.env.PASSBOLT_LOG_CONSOLE === "true",
|
|
18
|
+
},
|
|
19
|
+
};
|
|
9
20
|
|
|
10
21
|
const defaultConfig = { ..._config };
|
|
11
|
-
import storage from "../sdk/storage";
|
|
12
22
|
|
|
13
23
|
/**
|
|
14
24
|
* Init the configuration.
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import EntitySchema from "passbolt-styleguide/src/shared/models/entity/abstract/entitySchema";
|
|
15
15
|
import EntityValidationError from "passbolt-styleguide/src/shared/models/entity/abstract/entityValidationError";
|
|
16
|
-
import PermissionEntity from "
|
|
17
|
-
import PermissionsCollection from "
|
|
16
|
+
import PermissionEntity from "passbolt-styleguide/src/shared/models/entity/permission/permissionEntity";
|
|
17
|
+
import PermissionsCollection from "passbolt-styleguide/src/shared/models/entity/permission/permissionsCollection";
|
|
18
18
|
import EntityV2 from "passbolt-styleguide/src/shared/models/entity/abstract/entityV2";
|
|
19
19
|
import UserEntity from "../user/userEntity";
|
|
20
20
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import FolderEntity from "./folderEntity";
|
|
15
15
|
import EntityValidationError from "passbolt-styleguide/src/shared/models/entity/abstract/entityValidationError";
|
|
16
16
|
import EntitySchema from "passbolt-styleguide/src/shared/models/entity/abstract/entitySchema";
|
|
17
|
-
import PermissionEntity from "
|
|
17
|
+
import PermissionEntity from "passbolt-styleguide/src/shared/models/entity/permission/permissionEntity";
|
|
18
18
|
import {
|
|
19
19
|
defaultFolderDto,
|
|
20
20
|
folderWithReadPermissionDto,
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
minimalFolderDto,
|
|
23
23
|
} from "passbolt-styleguide/src/shared/models/entity/folder/folderEntity.test.data";
|
|
24
24
|
import { ownerPermissionDto } from "passbolt-styleguide/src/shared/models/entity/permission/permissionEntity.test.data";
|
|
25
|
-
import PermissionsCollection from "
|
|
25
|
+
import PermissionsCollection from "passbolt-styleguide/src/shared/models/entity/permission/permissionsCollection";
|
|
26
26
|
import * as assertEntityProperty from "passbolt-styleguide/test/assert/assertEntityProperty";
|
|
27
27
|
import UserEntity from "../user/userEntity";
|
|
28
28
|
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
updatePermissionDto,
|
|
22
22
|
} from "passbolt-styleguide/src/shared/models/entity/permission/permissionEntity.test.data";
|
|
23
23
|
import { v4 as uuidv4 } from "uuid";
|
|
24
|
-
import PermissionEntity from "
|
|
24
|
+
import PermissionEntity from "passbolt-styleguide/src/shared/models/entity/permission/permissionEntity";
|
|
25
25
|
|
|
26
26
|
describe("Folders collection entity", () => {
|
|
27
27
|
it("schema must validate", () => {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
11
|
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
12
|
*/
|
|
13
|
-
import GroupEntity from "
|
|
13
|
+
import GroupEntity from "passbolt-styleguide/src/shared/models/entity/group/groupEntity";
|
|
14
14
|
import Entity from "passbolt-styleguide/src/shared/models/entity/abstract/entity";
|
|
15
15
|
import GroupUpdateSecretsCollection from "../../secret/groupUpdate/groupUpdateSecretsCollection";
|
|
16
16
|
import GroupUserChangesCollection from "../../groupUser/change/groupUserChangesCollection";
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import EntityValidationError from "passbolt-styleguide/src/shared/models/entity/abstract/entityValidationError";
|
|
14
14
|
import GroupUpdateEntity from "./groupUpdateEntity";
|
|
15
|
-
import GroupEntity from "
|
|
15
|
+
import GroupEntity from "passbolt-styleguide/src/shared/models/entity/group/groupEntity";
|
|
16
16
|
import EntitySchema from "passbolt-styleguide/src/shared/models/entity/abstract/entitySchema";
|
|
17
17
|
|
|
18
18
|
describe("Group update entity", () => {
|
package/src/all/background_page/model/entity/permission/actionLog/updatedPermissionEntity.js
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
11
|
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
12
|
*/
|
|
13
|
-
import GroupEntity from "
|
|
14
|
-
import PermissionEntity from "
|
|
13
|
+
import GroupEntity from "passbolt-styleguide/src/shared/models/entity/group/groupEntity";
|
|
14
|
+
import PermissionEntity from "passbolt-styleguide/src/shared/models/entity/permission/permissionEntity";
|
|
15
15
|
import Entity from "passbolt-styleguide/src/shared/models/entity/abstract/entity";
|
|
16
16
|
import LoggedUserEntity from "../../user/actionLog/loggedUserEntity";
|
|
17
17
|
import EntitySchema from "passbolt-styleguide/src/shared/models/entity/abstract/entitySchema";
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* @since 5.4.0
|
|
13
13
|
*/
|
|
14
14
|
import { defaultUserDto } from "passbolt-styleguide/src/shared/models/entity/user/userEntity.test.data";
|
|
15
|
-
import PermissionEntity from "
|
|
15
|
+
import PermissionEntity from "passbolt-styleguide/src/shared/models/entity/permission/permissionEntity";
|
|
16
16
|
import { v4 as uuidv4 } from "uuid";
|
|
17
17
|
|
|
18
18
|
export const defaultUpdatePermissionDto = (data) => ({
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
12
|
* @since 2.13.0
|
|
13
13
|
*/
|
|
14
|
-
import PermissionEntity from "
|
|
14
|
+
import PermissionEntity from "passbolt-styleguide/src/shared/models/entity/permission/permissionEntity";
|
|
15
15
|
import Entity from "passbolt-styleguide/src/shared/models/entity/abstract/entity";
|
|
16
16
|
import EntitySchema from "passbolt-styleguide/src/shared/models/entity/abstract/entitySchema";
|
|
17
17
|
|
package/src/all/background_page/model/entity/permission/change/permissionChangesCollection.js
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
12
|
* @since 2.13.0
|
|
13
13
|
*/
|
|
14
|
-
import PermissionEntity from "
|
|
15
|
-
import PermissionsCollection from "
|
|
14
|
+
import PermissionEntity from "passbolt-styleguide/src/shared/models/entity/permission/permissionEntity";
|
|
15
|
+
import PermissionsCollection from "passbolt-styleguide/src/shared/models/entity/permission/permissionsCollection";
|
|
16
16
|
import PermissionChangeEntity from "./permissionChangeEntity";
|
|
17
17
|
import EntityCollection from "passbolt-styleguide/src/shared/models/entity/abstract/entityCollection";
|
|
18
18
|
import EntitySchema from "passbolt-styleguide/src/shared/models/entity/abstract/entitySchema";
|
package/src/all/background_page/model/entity/permission/change/permissionChangesCollection.test.js
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import PermissionChangesCollection from "./permissionChangesCollection";
|
|
15
15
|
import EntitySchema from "passbolt-styleguide/src/shared/models/entity/abstract/entitySchema";
|
|
16
|
-
import PermissionEntity from "
|
|
17
|
-
import PermissionsCollection from "
|
|
16
|
+
import PermissionEntity from "passbolt-styleguide/src/shared/models/entity/permission/permissionEntity";
|
|
17
|
+
import PermissionsCollection from "passbolt-styleguide/src/shared/models/entity/permission/permissionsCollection";
|
|
18
18
|
|
|
19
19
|
describe("PermissionChangesCollection", () => {
|
|
20
20
|
it("schema must validate", () => {
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
12
|
* @since 2.13.0
|
|
13
13
|
*/
|
|
14
|
-
import PermissionEntity from "
|
|
15
|
-
import PermissionsCollection from "
|
|
14
|
+
import PermissionEntity from "passbolt-styleguide/src/shared/models/entity/permission/permissionEntity";
|
|
15
|
+
import PermissionsCollection from "passbolt-styleguide/src/shared/models/entity/permission/permissionsCollection";
|
|
16
16
|
import FavoriteEntity from "../favorite/favoriteEntity";
|
|
17
17
|
import ResourceTypeEntity from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypeEntity";
|
|
18
18
|
import TagsCollection from "../tag/tagsCollection";
|
|
@@ -24,7 +24,7 @@ import { defaultResourceMetadataDto } from "passbolt-styleguide/src/shared/model
|
|
|
24
24
|
import ResourceMetadataEntity from "passbolt-styleguide/src/shared/models/entity/resource/metadata/resourceMetadataEntity";
|
|
25
25
|
import { v4 as uuidv4 } from "uuid";
|
|
26
26
|
import { metadata } from "passbolt-styleguide/test/fixture/encryptedMetadata/metadata";
|
|
27
|
-
import PermissionEntity from "
|
|
27
|
+
import PermissionEntity from "passbolt-styleguide/src/shared/models/entity/permission/permissionEntity";
|
|
28
28
|
|
|
29
29
|
describe("Resource entity", () => {
|
|
30
30
|
describe("ResourceEntity::getSchema", () => {
|
|
@@ -11,389 +11,28 @@
|
|
|
11
11
|
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
12
|
* @since 2.13.0
|
|
13
13
|
*/
|
|
14
|
-
import
|
|
15
|
-
import RoleEntity from "passbolt-styleguide/src/shared/models/entity/role/roleEntity";
|
|
16
|
-
import PendingAccountRecoveryRequestEntity from "passbolt-styleguide/src/shared/models/entity/accountRecovery/pendingAccountRecoveryRequestEntity";
|
|
17
|
-
import GpgkeyEntity from "passbolt-styleguide/src/shared/models/entity/gpgkey/gpgkeyEntity";
|
|
18
|
-
import ProfileEntity from "passbolt-styleguide/src/shared/models/entity/profile/profileEntity";
|
|
19
|
-
import GroupsUsersCollection from "passbolt-styleguide/src/shared/models/entity/groupUser/groupsUsersCollection";
|
|
20
|
-
import AccountRecoveryUserSettingEntity from "passbolt-styleguide/src/shared/models/entity/accountRecovery/accountRecoveryUserSettingEntity";
|
|
14
|
+
import UserEntity from "passbolt-styleguide/src/shared/models/entity/user/userEntity";
|
|
21
15
|
import AppEmailValidatorService from "../../../service/validator/appEmailValidatorService";
|
|
22
16
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// Associations
|
|
33
|
-
if (this._props.profile) {
|
|
34
|
-
this._profile = new ProfileEntity(this._props.profile, { ...options, clone: false });
|
|
35
|
-
delete this._props.profile;
|
|
36
|
-
}
|
|
37
|
-
if (this._props.role) {
|
|
38
|
-
this._role = new RoleEntity(this._props.role, { ...options, clone: false });
|
|
39
|
-
delete this._props.role;
|
|
40
|
-
}
|
|
41
|
-
if (this._props.gpgkey) {
|
|
42
|
-
this._gpgkey = new GpgkeyEntity(this._props.gpgkey, { ...options, clone: false });
|
|
43
|
-
delete this._props.gpgkey;
|
|
44
|
-
}
|
|
45
|
-
if (this._props.groups_users) {
|
|
46
|
-
this._groups_users = new GroupsUsersCollection(this._props.groups_users, { ...options, clone: false });
|
|
47
|
-
delete this._props.groups_users;
|
|
48
|
-
}
|
|
49
|
-
if (this._props.account_recovery_user_setting) {
|
|
50
|
-
this._account_recovery_user_setting = new AccountRecoveryUserSettingEntity(
|
|
51
|
-
this._props.account_recovery_user_setting,
|
|
52
|
-
{ ...options, clone: false },
|
|
53
|
-
);
|
|
54
|
-
delete this._props.account_recovery_user_setting;
|
|
55
|
-
}
|
|
56
|
-
if (this._props.pending_account_recovery_request) {
|
|
57
|
-
this._pending_account_recovery_request = new PendingAccountRecoveryRequestEntity(
|
|
58
|
-
this._props.pending_account_recovery_request,
|
|
59
|
-
{ ...options, clone: false },
|
|
60
|
-
);
|
|
61
|
-
delete this._props.pending_account_recovery_request;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Browser-extension flavour of UserEntity.
|
|
19
|
+
*
|
|
20
|
+
* Injects the application email validator on the `username` schema property. The validator
|
|
21
|
+
* depends on OrganizationSettingsModel, a bext-only static cache that cannot be hosted in
|
|
22
|
+
* the styleguide. All other behaviour (associations, marshalling, serialization, getters)
|
|
23
|
+
* is inherited from the styleguide source of truth.
|
|
24
|
+
*/
|
|
25
|
+
class BextUserEntity extends UserEntity {
|
|
65
26
|
/**
|
|
66
27
|
* @inheritDoc
|
|
67
|
-
*
|
|
68
|
-
|
|
69
|
-
marshall() {
|
|
70
|
-
if (this._props.last_logged_in === "") {
|
|
71
|
-
this._props.last_logged_in = null;
|
|
72
|
-
}
|
|
73
|
-
super.marshall();
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Get user entity schema
|
|
78
|
-
* @returns {Object} schema
|
|
28
|
+
* Override the schema to attach the custom email validator on `username`.
|
|
29
|
+
* `super.getSchema()` returns a fresh object literal each call, so mutating is safe.
|
|
79
30
|
*/
|
|
80
31
|
static getSchema() {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
"username",
|
|
85
|
-
// "role_id",
|
|
86
|
-
],
|
|
87
|
-
properties: {
|
|
88
|
-
id: {
|
|
89
|
-
type: "string",
|
|
90
|
-
format: "uuid",
|
|
91
|
-
},
|
|
92
|
-
role_id: {
|
|
93
|
-
type: "string",
|
|
94
|
-
format: "uuid",
|
|
95
|
-
},
|
|
96
|
-
username: {
|
|
97
|
-
type: "string",
|
|
98
|
-
custom: AppEmailValidatorService.validate,
|
|
99
|
-
},
|
|
100
|
-
active: {
|
|
101
|
-
type: "boolean",
|
|
102
|
-
},
|
|
103
|
-
deleted: {
|
|
104
|
-
type: "boolean",
|
|
105
|
-
},
|
|
106
|
-
disabled: {
|
|
107
|
-
type: "string",
|
|
108
|
-
format: "date-time",
|
|
109
|
-
nullable: true,
|
|
110
|
-
},
|
|
111
|
-
missing_metadata_key_ids: {
|
|
112
|
-
type: "array",
|
|
113
|
-
items: {
|
|
114
|
-
type: "string",
|
|
115
|
-
format: "uuid",
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
created: {
|
|
119
|
-
type: "string",
|
|
120
|
-
format: "date-time",
|
|
121
|
-
},
|
|
122
|
-
modified: {
|
|
123
|
-
type: "string",
|
|
124
|
-
format: "date-time",
|
|
125
|
-
},
|
|
126
|
-
last_logged_in: {
|
|
127
|
-
type: "string",
|
|
128
|
-
format: "date-time",
|
|
129
|
-
nullable: true,
|
|
130
|
-
},
|
|
131
|
-
is_mfa_enabled: {
|
|
132
|
-
type: "boolean",
|
|
133
|
-
nullable: true,
|
|
134
|
-
},
|
|
135
|
-
locale: {
|
|
136
|
-
type: "string",
|
|
137
|
-
pattern: /^[a-z]{2}-[A-Z]{2}$/,
|
|
138
|
-
nullable: true,
|
|
139
|
-
},
|
|
140
|
-
// Associated models
|
|
141
|
-
role: RoleEntity.getSchema(),
|
|
142
|
-
profile: ProfileEntity.getSchema(),
|
|
143
|
-
gpgkey: GpgkeyEntity.getSchema(),
|
|
144
|
-
groups_users: GroupsUsersCollection.getSchema(),
|
|
145
|
-
account_recovery_user_setting: AccountRecoveryUserSettingEntity.getSchema(),
|
|
146
|
-
pending_account_recovery_request: PendingAccountRecoveryRequestEntity.getSchema(),
|
|
147
|
-
},
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/*
|
|
152
|
-
* ==================================================
|
|
153
|
-
* Serialization
|
|
154
|
-
* ==================================================
|
|
155
|
-
*/
|
|
156
|
-
/**
|
|
157
|
-
* Return a DTO ready to be sent to API
|
|
158
|
-
* @param {object} [contain] optional for example {profile: {avatar:true}}
|
|
159
|
-
* @returns {*}
|
|
160
|
-
*/
|
|
161
|
-
toDto(contain) {
|
|
162
|
-
const result = Object.assign({}, this._props);
|
|
163
|
-
if (!contain) {
|
|
164
|
-
return result;
|
|
165
|
-
}
|
|
166
|
-
if (this.role && contain.role) {
|
|
167
|
-
result.role = this.role.toDto();
|
|
168
|
-
}
|
|
169
|
-
if (this.profile && contain.profile) {
|
|
170
|
-
if (contain.profile === true) {
|
|
171
|
-
result.profile = this.profile.toDto();
|
|
172
|
-
} else {
|
|
173
|
-
result.profile = this.profile.toDto(contain.profile);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
if (this.gpgkey && contain.gpgkey) {
|
|
177
|
-
result.gpgkey = this.gpgkey.toDto();
|
|
178
|
-
}
|
|
179
|
-
if (this.groupsUsers && contain.groups_users) {
|
|
180
|
-
result.groups_users = this.groupsUsers.toDto();
|
|
181
|
-
}
|
|
182
|
-
if (this.accountRecoveryUserSetting && contain.account_recovery_user_setting) {
|
|
183
|
-
result.account_recovery_user_setting = this.accountRecoveryUserSetting.toDto();
|
|
184
|
-
}
|
|
185
|
-
if (this.pendingAccountRecoveryUserRequest && contain.pending_account_recovery_request) {
|
|
186
|
-
result.pending_account_recovery_request = this.pendingAccountRecoveryUserRequest.toDto();
|
|
187
|
-
}
|
|
188
|
-
return result;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Customizes JSON stringification behavior
|
|
193
|
-
* @returns {*}
|
|
194
|
-
*/
|
|
195
|
-
toJSON() {
|
|
196
|
-
return this.toDto(UserEntity.ALL_CONTAIN_OPTIONS);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/*
|
|
200
|
-
* ==================================================
|
|
201
|
-
* Dynamic properties getters
|
|
202
|
-
* ==================================================
|
|
203
|
-
*/
|
|
204
|
-
/**
|
|
205
|
-
* Get user id
|
|
206
|
-
* @returns {(string|null)} uuid
|
|
207
|
-
*/
|
|
208
|
-
get id() {
|
|
209
|
-
return this._props.id || null;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Get user role id
|
|
214
|
-
* @returns {(string|null)} uuid
|
|
215
|
-
*/
|
|
216
|
-
get roleId() {
|
|
217
|
-
return this._props.role_id || null;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Get user username
|
|
222
|
-
* @returns {string} email
|
|
223
|
-
*/
|
|
224
|
-
get username() {
|
|
225
|
-
return this._props.username;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Get user activation status
|
|
230
|
-
* @returns {(boolean|null)} true if user completed the setup
|
|
231
|
-
*/
|
|
232
|
-
get isActive() {
|
|
233
|
-
if (typeof this._props.active === "undefined") {
|
|
234
|
-
return null;
|
|
235
|
-
}
|
|
236
|
-
return this._props.active;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Get user deleted status
|
|
241
|
-
* @returns {(boolean|null)} true if user is deleted
|
|
242
|
-
*/
|
|
243
|
-
get isDeleted() {
|
|
244
|
-
if (typeof this._props.deleted === "undefined") {
|
|
245
|
-
return null;
|
|
246
|
-
}
|
|
247
|
-
return this._props.deleted;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Get missing metadata keys ids for a user
|
|
252
|
-
* @returns {(array)} the list of missing metadata keys
|
|
253
|
-
*/
|
|
254
|
-
get missingMetadataKeysIds() {
|
|
255
|
-
return this._props.missing_metadata_key_ids || [];
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* Get user creation date
|
|
260
|
-
* @returns {(string|null)} date
|
|
261
|
-
*/
|
|
262
|
-
get created() {
|
|
263
|
-
return this._props.created || null;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* Get user modification date
|
|
268
|
-
* @returns {(string|null)} date
|
|
269
|
-
*/
|
|
270
|
-
get modified() {
|
|
271
|
-
return this._props.modified || null;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* Get user last login date
|
|
276
|
-
* @returns {(string|null)} date
|
|
277
|
-
*/
|
|
278
|
-
get lastLoggedIn() {
|
|
279
|
-
return this._props.last_logged_in || null;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Get mfa enabled flag
|
|
284
|
-
* @returns {(boolean|null)} true if mfa is enabled
|
|
285
|
-
*/
|
|
286
|
-
get isMfaEnabled() {
|
|
287
|
-
if (typeof this._props.is_mfa_enabled === "undefined") {
|
|
288
|
-
return null;
|
|
289
|
-
}
|
|
290
|
-
return this._props.is_mfa_enabled;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* Get the user locale.
|
|
295
|
-
* @returns {(string|null)}
|
|
296
|
-
*/
|
|
297
|
-
get locale() {
|
|
298
|
-
return this._props.locale || null;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
* Set the user locale
|
|
303
|
-
* @params {string} locale The locale to set
|
|
304
|
-
*/
|
|
305
|
-
set locale(locale) {
|
|
306
|
-
this._props.locale = locale;
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
/**
|
|
310
|
-
* Set the user missing metadata keys ids
|
|
311
|
-
* @params {array} the missing metadata keys ids
|
|
312
|
-
*/
|
|
313
|
-
set missingMetadataKeysIds(missingMetadataKeysIds) {
|
|
314
|
-
this._props.missing_metadata_key_ids = missingMetadataKeysIds;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* UserEntity.ALL_CONTAIN_OPTIONS
|
|
319
|
-
* @returns {object} all contain options that can be used in toDto()
|
|
320
|
-
*/
|
|
321
|
-
static get ALL_CONTAIN_OPTIONS() {
|
|
322
|
-
return {
|
|
323
|
-
profile: ProfileEntity.ALL_CONTAIN_OPTIONS,
|
|
324
|
-
role: true,
|
|
325
|
-
gpgkey: true,
|
|
326
|
-
groups_users: true,
|
|
327
|
-
account_recovery_user_setting: true,
|
|
328
|
-
pending_account_recovery_request: true,
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
/*
|
|
333
|
-
* ==================================================
|
|
334
|
-
* Static properties getters
|
|
335
|
-
* ==================================================
|
|
336
|
-
*/
|
|
337
|
-
/**
|
|
338
|
-
* ProfileEntity.ENTITY_NAME
|
|
339
|
-
* @returns {string}
|
|
340
|
-
*/
|
|
341
|
-
static get ENTITY_NAME() {
|
|
342
|
-
return ENTITY_NAME;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
/*
|
|
346
|
-
* ==================================================
|
|
347
|
-
* Associated properties getters
|
|
348
|
-
* ==================================================
|
|
349
|
-
*/
|
|
350
|
-
/**
|
|
351
|
-
* Get user profile
|
|
352
|
-
* @returns {(ProfileEntity|null)} profile
|
|
353
|
-
*/
|
|
354
|
-
get profile() {
|
|
355
|
-
return this._profile || null;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
/**
|
|
359
|
-
* Get user role
|
|
360
|
-
* @returns {(RoleEntity|null)} role
|
|
361
|
-
*/
|
|
362
|
-
get role() {
|
|
363
|
-
return this._role || null;
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
/**
|
|
367
|
-
* Get user gpgkey
|
|
368
|
-
* @returns {(GpgkeyEntity|null)} key
|
|
369
|
-
*/
|
|
370
|
-
get gpgkey() {
|
|
371
|
-
return this._gpgkey || null;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
/**
|
|
375
|
-
* Get user groups
|
|
376
|
-
* @returns {(GroupsUsersCollection|null)} users groups
|
|
377
|
-
*/
|
|
378
|
-
get groupsUsers() {
|
|
379
|
-
return this._groups_users || null;
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
/**
|
|
383
|
-
* Get user account recover setting
|
|
384
|
-
* @returns {(AccountRecoveryUserSettingEntity|null)} account recover setting
|
|
385
|
-
*/
|
|
386
|
-
get accountRecoveryUserSetting() {
|
|
387
|
-
return this._account_recovery_user_setting || null;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
/**
|
|
391
|
-
* Get the pending account recovery request
|
|
392
|
-
* @returns {AccountRecoveryRequestEntity|null} pending account recovery request
|
|
393
|
-
*/
|
|
394
|
-
get pendingAccountRecoveryUserRequest() {
|
|
395
|
-
return this._pending_account_recovery_request || null;
|
|
32
|
+
const schema = super.getSchema();
|
|
33
|
+
schema.properties.username.custom = AppEmailValidatorService.validate;
|
|
34
|
+
return schema;
|
|
396
35
|
}
|
|
397
36
|
}
|
|
398
37
|
|
|
399
|
-
export default
|
|
38
|
+
export default BextUserEntity;
|