ldap-rest 1.2.0 → 1.3.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/bin/sync-james.mjs +13 -2
- package/dist/abstract/ldapFlat.js +1 -1
- package/dist/abstract/plugin.js +1 -1
- package/dist/abstract/twakePlugin.js +1 -1
- package/dist/bin/index.js +1 -1
- package/dist/config/args.js +1 -1
- package/dist/config/options.js +1 -0
- package/dist/config/schema.js +1 -1
- package/dist/lib/auth/base.js +1 -1
- package/dist/lib/authz/base.js +1 -1
- package/dist/lib/entitySchema/validator.js +1 -1
- package/dist/lib/errors.js +1 -1
- package/dist/lib/expressFormatedResponses.js +1 -1
- package/dist/lib/health.js +1 -1
- package/dist/lib/hookBus.js +1 -0
- package/dist/lib/instanceProviders.js +1 -1
- package/dist/lib/ldapActions.js +1 -1
- package/dist/lib/ldapSchema.js +1 -1
- package/dist/lib/parseConfig.js +1 -1
- package/dist/lib/route.js +1 -0
- package/dist/lib/schemaFile.js +1 -1
- package/dist/lib/storage/store.js +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/lib/version.js +1 -0
- package/dist/logger/winston.js +1 -1
- package/dist/plugins/auth/auth.options.js +1 -0
- package/dist/plugins/auth/authzDynamic.js +1 -1
- package/dist/plugins/auth/authzLinid1.js +1 -1
- package/dist/plugins/auth/authzPerBranch.js +1 -1
- package/dist/plugins/auth/authzPerRoute.js +1 -1
- package/dist/plugins/auth/authzScope.js +1 -1
- package/dist/plugins/auth/crowdsec.js +1 -1
- package/dist/plugins/auth/fake.js +1 -1
- package/dist/plugins/auth/hmac.js +1 -1
- package/dist/plugins/auth/llng.js +1 -1
- package/dist/plugins/auth/openidconnect.js +1 -1
- package/dist/plugins/auth/rateLimit.js +1 -1
- package/dist/plugins/auth/token.js +1 -1
- package/dist/plugins/auth/totp.js +1 -1
- package/dist/plugins/auth/trustedProxy.js +1 -1
- package/dist/plugins/bcl.js +1 -1
- package/dist/plugins/bcl.options.js +1 -0
- package/dist/plugins/configApi.js +1 -1
- package/dist/plugins/demo/helloworld.js +1 -1
- package/dist/plugins/ldap/accountLifecycle.js +1 -1
- package/dist/plugins/ldap/bulkImport.js +1 -1
- package/dist/plugins/ldap/departmentSync.js +1 -1
- package/dist/plugins/ldap/enterpriseRules.js +1 -1
- package/dist/plugins/ldap/externalUsersInGroups.js +1 -1
- package/dist/plugins/ldap/flatGeneric.js +1 -1
- package/dist/plugins/ldap/groups.js +1 -1
- package/dist/plugins/ldap/ldap.options.js +1 -0
- package/dist/plugins/ldap/onChange.js +1 -1
- package/dist/plugins/ldap/organizations.js +1 -1
- package/dist/plugins/ldap/passwordPolicy.js +1 -1
- package/dist/plugins/ldap/raw.js +1 -1
- package/dist/plugins/ldap/trash.js +1 -1
- package/dist/plugins/metrics.js +1 -1
- package/dist/plugins/metrics.options.js +1 -0
- package/dist/plugins/rabbitmq.js +1 -1
- package/dist/plugins/rabbitmq.options.js +1 -0
- package/dist/plugins/scim/baseResolver.js +1 -1
- package/dist/plugins/scim/bulk.js +1 -1
- package/dist/plugins/scim/discovery.js +1 -1
- package/dist/plugins/scim/errors.js +1 -1
- package/dist/plugins/scim/filter.js +1 -1
- package/dist/plugins/scim/groups.js +1 -1
- package/dist/plugins/scim/mapping.js +1 -1
- package/dist/plugins/scim/patch.js +1 -1
- package/dist/plugins/scim/projection.js +1 -1
- package/dist/plugins/scim/scim.js +1 -1
- package/dist/plugins/scim/scim.options.js +1 -0
- package/dist/plugins/scim/users.js +1 -1
- package/dist/plugins/static.js +1 -1
- package/dist/plugins/static.options.js +1 -0
- package/dist/plugins/storage/file.js +1 -1
- package/dist/plugins/storage/ldap.js +1 -1
- package/dist/plugins/storage/postgres.js +1 -1
- package/dist/plugins/storage/valkey.js +1 -1
- package/dist/plugins/storage.js +1 -1
- package/dist/plugins/storage.options.js +1 -0
- package/dist/plugins/twake/appAccounts.options.js +1 -0
- package/dist/plugins/twake/appAccountsApi.js +1 -1
- package/dist/plugins/twake/appAccountsConsistency.js +1 -1
- package/dist/plugins/twake/calendar.js +1 -1
- package/dist/plugins/twake/calendar.options.js +1 -0
- package/dist/plugins/twake/calendarResources.js +1 -1
- package/dist/plugins/twake/cloudery.options.js +1 -0
- package/dist/plugins/twake/clouderyProvision.js +1 -1
- package/dist/plugins/twake/cozy.options.js +1 -0
- package/dist/plugins/twake/cozyProvision.js +1 -1
- package/dist/plugins/twake/drive.js +1 -1
- package/dist/plugins/twake/drive.options.js +1 -0
- package/dist/plugins/twake/groups.js +1 -1
- package/dist/plugins/twake/instances.js +1 -1
- package/dist/plugins/twake/james.js +1 -1
- package/dist/plugins/twake/james.options.js +1 -0
- package/dist/plugins/twake/lifecycleAttributes.js +1 -1
- package/dist/plugins/twake/lifecycleEvents.js +1 -1
- package/dist/plugins/twake/migrationProxy.js +1 -1
- package/dist/plugins/twake/migrationProxy.options.js +1 -0
- package/dist/plugins/twake/spaces.js +1 -1
- package/dist/plugins/twake/tombstone.js +1 -1
- package/dist/plugins/twake/twakeGroups.options.js +1 -0
- package/dist/plugins/twake/twakeInstances.options.js +1 -0
- package/dist/plugins/twake/twakeLifecycle.options.js +1 -0
- package/dist/plugins/twake/twakeSpaces.options.js +1 -0
- package/dist/plugins/twake/twakeTombstone.options.js +1 -0
- package/dist/plugins/weblogs.js +1 -1
- package/dist/src/abstract/ldapFlat.d.ts +28 -10
- package/dist/src/abstract/plugin.d.ts +10 -5
- package/dist/src/abstract/twakePlugin.d.ts +14 -4
- package/dist/src/bin/index.d.ts +17 -4
- package/dist/src/config/args.d.ts +2 -4
- package/dist/src/config/options.d.ts +89 -0
- package/dist/src/config/schema.d.ts +50 -1
- package/dist/src/hooks.d.ts +60 -22
- package/dist/src/lib/authz/base.d.ts +4 -51
- package/dist/src/lib/authz/composition.d.ts +2 -2
- package/dist/src/lib/entitySchema/validator.d.ts +63 -6
- package/dist/src/lib/errors.d.ts +56 -1
- package/dist/src/lib/expressFormatedResponses.d.ts +49 -7
- package/dist/src/lib/hookBus.d.ts +226 -0
- package/dist/src/lib/instanceProviders.d.ts +0 -8
- package/dist/src/lib/ldapActions.d.ts +11 -2
- package/dist/src/lib/parseConfig.d.ts +5 -0
- package/dist/src/lib/route.d.ts +99 -0
- package/dist/src/lib/utils.d.ts +37 -36
- package/dist/src/lib/version.d.ts +12 -0
- package/dist/src/plugins/auth/auth.options.d.ts +88 -0
- package/dist/src/plugins/auth/authzDynamic.d.ts +10 -1
- package/dist/src/plugins/auth/authzLinid1.d.ts +6 -0
- package/dist/src/plugins/auth/authzPerBranch.d.ts +9 -0
- package/dist/src/plugins/auth/authzPerRoute.d.ts +3 -0
- package/dist/src/plugins/auth/authzScope.d.ts +23 -14
- package/dist/src/plugins/auth/crowdsec.d.ts +5 -0
- package/dist/src/plugins/auth/fake.d.ts +3 -0
- package/dist/src/plugins/auth/hmac.d.ts +4 -0
- package/dist/src/plugins/auth/llng.d.ts +4 -0
- package/dist/src/plugins/auth/openidconnect.d.ts +7 -0
- package/dist/src/plugins/auth/rateLimit.d.ts +4 -0
- package/dist/src/plugins/auth/token.d.ts +3 -0
- package/dist/src/plugins/auth/totp.d.ts +5 -0
- package/dist/src/plugins/auth/trustedProxy.d.ts +4 -0
- package/dist/src/plugins/bcl.d.ts +3 -0
- package/dist/src/plugins/bcl.options.d.ts +8 -0
- package/dist/src/plugins/configApi.d.ts +24 -5
- package/dist/src/plugins/demo/helloworld.d.ts +8 -19
- package/dist/src/plugins/ldap/accountLifecycle.d.ts +17 -0
- package/dist/src/plugins/ldap/bulkImport.d.ts +6 -76
- package/dist/src/plugins/ldap/departmentSync.d.ts +1 -0
- package/dist/src/plugins/ldap/enterpriseRules.d.ts +8 -1
- package/dist/src/plugins/ldap/externalUsersInGroups.d.ts +4 -0
- package/dist/src/plugins/ldap/flatGeneric.d.ts +4 -0
- package/dist/src/plugins/ldap/groups.d.ts +27 -11
- package/dist/src/plugins/ldap/ldap.options.d.ts +75 -0
- package/dist/src/plugins/ldap/onChange.d.ts +10 -2
- package/dist/src/plugins/ldap/organizations.d.ts +16 -0
- package/dist/src/plugins/ldap/passwordPolicy.d.ts +32 -1
- package/dist/src/plugins/ldap/raw.d.ts +50 -19
- package/dist/src/plugins/ldap/trash.d.ts +6 -0
- package/dist/src/plugins/metrics.d.ts +3 -0
- package/dist/src/plugins/metrics.options.d.ts +8 -0
- package/dist/src/plugins/rabbitmq.d.ts +3 -0
- package/dist/src/plugins/rabbitmq.options.d.ts +8 -0
- package/dist/src/plugins/scim/baseResolver.d.ts +2 -1
- package/dist/src/plugins/scim/bulk.d.ts +6 -7
- package/dist/src/plugins/scim/discovery.d.ts +3 -0
- package/dist/src/plugins/scim/errors.d.ts +4 -1
- package/dist/src/plugins/scim/groups.d.ts +6 -4
- package/dist/src/plugins/scim/scim.d.ts +37 -3
- package/dist/src/plugins/scim/scim.options.d.ts +35 -0
- package/dist/src/plugins/scim/types.d.ts +2 -1
- package/dist/src/plugins/scim/users.d.ts +6 -7
- package/dist/src/plugins/static.d.ts +9 -0
- package/dist/src/plugins/static.options.d.ts +13 -0
- package/dist/src/plugins/storage.d.ts +12 -1
- package/dist/src/plugins/storage.options.d.ts +16 -0
- package/dist/src/plugins/twake/appAccounts.options.d.ts +13 -0
- package/dist/src/plugins/twake/appAccountsApi.d.ts +18 -0
- package/dist/src/plugins/twake/appAccountsConsistency.d.ts +8 -0
- package/dist/src/plugins/twake/calendar.d.ts +25 -2
- package/dist/src/plugins/twake/calendar.options.d.ts +19 -0
- package/dist/src/plugins/twake/cloudery.options.d.ts +26 -0
- package/dist/src/plugins/twake/clouderyProvision.d.ts +18 -0
- package/dist/src/plugins/twake/cozy.options.d.ts +23 -0
- package/dist/src/plugins/twake/cozyProvision.d.ts +14 -0
- package/dist/src/plugins/twake/drive.d.ts +7 -0
- package/dist/src/plugins/twake/drive.options.d.ts +15 -0
- package/dist/src/plugins/twake/groups.d.ts +30 -3
- package/dist/src/plugins/twake/instances.d.ts +43 -10
- package/dist/src/plugins/twake/james.d.ts +17 -0
- package/dist/src/plugins/twake/james.options.d.ts +21 -0
- package/dist/src/plugins/twake/lifecycleEvents.d.ts +12 -0
- package/dist/src/plugins/twake/migrationProxy.d.ts +11 -11
- package/dist/src/plugins/twake/migrationProxy.options.d.ts +16 -0
- package/dist/src/plugins/twake/spaces.d.ts +30 -0
- package/dist/src/plugins/twake/tombstone.d.ts +16 -14
- package/dist/src/plugins/twake/twakeGroups.options.d.ts +20 -0
- package/dist/src/plugins/twake/twakeInstances.options.d.ts +43 -0
- package/dist/src/plugins/twake/twakeLifecycle.options.d.ts +21 -0
- package/dist/src/plugins/twake/twakeSpaces.options.d.ts +19 -0
- package/dist/src/plugins/twake/twakeTombstone.options.d.ts +17 -0
- package/docs/README.md +1 -0
- package/docs/client-development/api/rest-api.md +9 -3
- package/docs/client-development/schemas/README.md +96 -32
- package/docs/plugin-development/README.md +45 -94
- package/docs/plugin-development/dependencies.md +11 -6
- package/docs/plugin-development/hooks.md +142 -23
- package/docs/plugin-development/openapi.md +14 -1
- package/docs/plugin-development/options.md +109 -0
- package/docs/plugin-development/routes.md +152 -0
- package/docs/plugin-development/testing.md +3 -3
- package/docs/usage/configuration.md +31 -24
- package/docs/usage/operations.md +19 -4
- package/docs/usage/plugins/integrations/groups.md +2 -2
- package/docs/usage/plugins/integrations/scim.md +12 -1
- package/docs/usage/plugins/integrations/spaces.md +1 -1
- package/docs/usage/plugins/ldap/enterprise-rules.md +10 -1
- package/docs/usage/plugins/ldap/flat-generic.md +4 -0
- package/docs/usage/plugins/ldap/raw.md +17 -1
- package/docs/usage/upgrading.md +207 -0
- package/package.json +358 -277
- package/static/browser/ldap-browser/LdapBrowser.js +8 -6
- package/static/browser/ldap-browser/LdapBrowser.js.map +1 -1
- package/static/browser/ldap-browser/api/RawApiClient.js +2 -0
- package/static/browser/ldap-browser/api/RawApiClient.js.map +1 -1
- package/static/browser/ldap-browser/components/EntryTree.js +9 -5
- package/static/browser/ldap-browser/components/EntryTree.js.map +1 -1
- package/static/browser/ldap-browser/components/EntryView.js +2 -0
- package/static/browser/ldap-browser/components/EntryView.js.map +1 -1
- package/static/browser/ldap-browser/schema.js +3 -2
- package/static/browser/ldap-browser/schema.js.map +1 -1
- package/static/browser/ldap-browser.esm.js +27 -18
- package/static/browser/ldap-browser.esm.js.map +1 -1
- package/static/browser/ldap-browser.js +27 -18
- package/static/browser/ldap-browser.js.map +1 -1
- package/static/browser/ldap-browser.min.js +1 -1
- package/static/browser/ldap-browser.min.js.map +1 -1
- package/static/browser/ldap-group-editor/LdapGroupEditor.js +8 -6
- package/static/browser/ldap-group-editor/LdapGroupEditor.js.map +1 -1
- package/static/browser/ldap-group-editor/api/GroupApiClient.js +1 -0
- package/static/browser/ldap-group-editor/api/GroupApiClient.js.map +1 -1
- package/static/browser/ldap-group-editor/components/CreateGroupModal.js +5 -1
- package/static/browser/ldap-group-editor/components/CreateGroupModal.js.map +1 -1
- package/static/browser/ldap-group-editor/components/GroupPropertyEditor.js +6 -3
- package/static/browser/ldap-group-editor/components/GroupPropertyEditor.js.map +1 -1
- package/static/browser/ldap-group-editor/components/GroupTree.js +6 -3
- package/static/browser/ldap-group-editor/components/GroupTree.js.map +1 -1
- package/static/browser/ldap-group-editor/components/MoveGroupModal.js +6 -3
- package/static/browser/ldap-group-editor/components/MoveGroupModal.js.map +1 -1
- package/static/browser/ldap-group-editor.esm.js +32 -16
- package/static/browser/ldap-group-editor.esm.js.map +1 -1
- package/static/browser/ldap-group-editor.js +32 -16
- package/static/browser/ldap-group-editor.js.map +1 -1
- package/static/browser/ldap-group-editor.min.js +1 -1
- package/static/browser/ldap-group-editor.min.js.map +1 -1
- package/static/browser/ldap-resource-editor/api/ResourceApiClient.js +3 -0
- package/static/browser/ldap-resource-editor/api/ResourceApiClient.js.map +1 -1
- package/static/browser/ldap-resource-editor/cache/CacheManager.js +3 -1
- package/static/browser/ldap-resource-editor/cache/CacheManager.js.map +1 -1
- package/static/browser/ldap-tree-viewer/LdapTreeViewer.js +6 -1
- package/static/browser/ldap-tree-viewer/LdapTreeViewer.js.map +1 -1
- package/static/browser/ldap-tree-viewer/api/LdapApiClient.js +2 -0
- package/static/browser/ldap-tree-viewer/api/LdapApiClient.js.map +1 -1
- package/static/browser/ldap-tree-viewer/components/TreeNode.js +4 -0
- package/static/browser/ldap-tree-viewer/components/TreeNode.js.map +1 -1
- package/static/browser/ldap-tree-viewer/components/TreeRoot.js +3 -0
- package/static/browser/ldap-tree-viewer/components/TreeRoot.js.map +1 -1
- package/static/browser/ldap-tree-viewer/store/Store.js +3 -1
- package/static/browser/ldap-tree-viewer/store/Store.js.map +1 -1
- package/static/browser/ldap-tree-viewer.esm.js +18 -2
- package/static/browser/ldap-tree-viewer.esm.js.map +1 -1
- package/static/browser/ldap-tree-viewer.js +18 -2
- package/static/browser/ldap-tree-viewer.js.map +1 -1
- package/static/browser/ldap-tree-viewer.min.js +1 -1
- package/static/browser/ldap-tree-viewer.min.js.map +1 -1
- package/static/browser/ldap-unit-editor/LdapUnitEditor.js +7 -5
- package/static/browser/ldap-unit-editor/LdapUnitEditor.js.map +1 -1
- package/static/browser/ldap-unit-editor/api/UnitApiClient.js +1 -0
- package/static/browser/ldap-unit-editor/api/UnitApiClient.js.map +1 -1
- package/static/browser/ldap-unit-editor/components/MoveUnitModal.js +7 -4
- package/static/browser/ldap-unit-editor/components/MoveUnitModal.js.map +1 -1
- package/static/browser/ldap-unit-editor/components/UnitPropertyEditor.js +7 -4
- package/static/browser/ldap-unit-editor/components/UnitPropertyEditor.js.map +1 -1
- package/static/browser/ldap-unit-editor/components/UnitTree.js +6 -3
- package/static/browser/ldap-unit-editor/components/UnitTree.js.map +1 -1
- package/static/browser/ldap-unit-editor.esm.js +28 -16
- package/static/browser/ldap-unit-editor.esm.js.map +1 -1
- package/static/browser/ldap-unit-editor.js +28 -16
- package/static/browser/ldap-unit-editor.js.map +1 -1
- package/static/browser/ldap-unit-editor.min.js +1 -1
- package/static/browser/ldap-unit-editor.min.js.map +1 -1
- package/static/browser/ldap-user-editor/LdapUserEditor.js +9 -7
- package/static/browser/ldap-user-editor/LdapUserEditor.js.map +1 -1
- package/static/browser/ldap-user-editor/api/UserApiClient.js +2 -0
- package/static/browser/ldap-user-editor/api/UserApiClient.js.map +1 -1
- package/static/browser/ldap-user-editor/cache/CacheManager.js +3 -1
- package/static/browser/ldap-user-editor/cache/CacheManager.js.map +1 -1
- package/static/browser/ldap-user-editor/components/MoveUserModal.js +7 -4
- package/static/browser/ldap-user-editor/components/MoveUserModal.js.map +1 -1
- package/static/browser/ldap-user-editor/components/PointerField.js +6 -1
- package/static/browser/ldap-user-editor/components/PointerField.js.map +1 -1
- package/static/browser/ldap-user-editor/components/UserEditor.js +10 -5
- package/static/browser/ldap-user-editor/components/UserEditor.js.map +1 -1
- package/static/browser/ldap-user-editor/components/UserList.js +8 -4
- package/static/browser/ldap-user-editor/components/UserList.js.map +1 -1
- package/static/browser/ldap-user-editor/components/UserTree.js +7 -3
- package/static/browser/ldap-user-editor/components/UserTree.js.map +1 -1
- package/static/browser/ldap-user-editor.esm.js +55 -30
- package/static/browser/ldap-user-editor.esm.js.map +1 -1
- package/static/browser/ldap-user-editor.js +55 -30
- package/static/browser/ldap-user-editor.js.map +1 -1
- package/static/browser/ldap-user-editor.min.js +1 -1
- package/static/browser/ldap-user-editor.min.js.map +1 -1
- package/static/browser/shared/components/DisposableComponent.js +3 -5
- package/static/browser/shared/components/DisposableComponent.js.map +1 -1
- package/static/browser/shared/components/Modal.js +2 -1
- package/static/browser/shared/components/Modal.js.map +1 -1
- package/static/browser/shared/components/StatusMessage.js +3 -2
- package/static/browser/shared/components/StatusMessage.js.map +1 -1
- package/static/browser/shared/utils/form.js.map +1 -1
- package/static/browser/shared/utils/hmac.js +1 -0
- package/static/browser/shared/utils/hmac.js.map +1 -1
- package/static/browser/shared/utils/totp.js +1 -0
- package/static/browser/shared/utils/totp.js.map +1 -1
- package/static/browser/shared.esm.js +9 -8
- package/static/browser/shared.esm.js.map +1 -1
- package/static/browser/shared.js +9 -8
- package/static/browser/shared.js.map +1 -1
- package/static/browser/shared.min.js +1 -1
- package/static/browser/shared.min.js.map +1 -1
- package/static/schemas/ad/groups.json +1 -1
- package/static/schemas/ad/users.json +3 -3
- package/static/schemas/example/organizations.json +2 -2
- package/static/schemas/example/users.json +2 -2
- package/static/schemas/obm/users.json +2 -2
- package/static/schemas/standard/groups.json +1 -1
- package/static/schemas/standard/users.json +2 -2
- package/static/schemas/twake/groups.json +4 -4
- package/static/schemas/twake/teamMailboxes.json +3 -3
- package/static/schemas/twake/users.json +7 -7
package/docs/usage/upgrading.md
CHANGED
|
@@ -4,6 +4,213 @@ What to check before deploying, newest first. Only releases that need a
|
|
|
4
4
|
decision or a configuration change appear here; see the
|
|
5
5
|
[CHANGELOG](../../CHANGELOG.md) for everything else.
|
|
6
6
|
|
|
7
|
+
## From 1.2.1
|
|
8
|
+
|
|
9
|
+
### A plugin written against the old hooks API
|
|
10
|
+
|
|
11
|
+
**Who is affected:** a deployment loading a plugin built outside this
|
|
12
|
+
repository that calls `launchHooks` / `launchHooksChained`, or subscribes
|
|
13
|
+
to a `*done` hook with its arguments packed in one tuple.
|
|
14
|
+
|
|
15
|
+
Hooks are raised through `this.hookBus`, and every hook is declared in
|
|
16
|
+
`src/hooks.ts`: a plugin raising or subscribing to a hook the server does
|
|
17
|
+
not declare no longer compiles. A notified hook — `ldapadddone`,
|
|
18
|
+
`ldapaddafter`, `ldapmodifydone`, `ldaprenamedone`, `ldapgroupadddone`,
|
|
19
|
+
`ldapgroupmodifydone`, `ldapgrouprenamedone`, `ldapexternaluseradded` — now
|
|
20
|
+
gets its arguments one by one: `(dn, entry, context) => …`, not
|
|
21
|
+
`([dn, entry], context) => …`. The packed form still compiles — parameters
|
|
22
|
+
are bivariant — and then reads the DN's first character, so a plugin left
|
|
23
|
+
as it was stops reacting without saying so. `ldapgroupdeletemember` threads
|
|
24
|
+
`[cn, member]`, a single member DN, as it always handed one.
|
|
25
|
+
|
|
26
|
+
A test waiting for a hook to land waits on `await server.hookBus.settled()`
|
|
27
|
+
rather than sleeping. See [hooks](../plugin-development/hooks.md#the-bus).
|
|
28
|
+
|
|
29
|
+
### A plugin with its own `options` or `optionDefinitions` member
|
|
30
|
+
|
|
31
|
+
**Who is affected:** a plugin built outside this repository that declares a
|
|
32
|
+
field, getter or method named `options`, or a static field named
|
|
33
|
+
`optionDefinitions`.
|
|
34
|
+
|
|
35
|
+
`DmPlugin` now has `options()`, which returns the values a plugin declared
|
|
36
|
+
through `optionDefinitions`. Rename the plugin's own `options` member; a
|
|
37
|
+
plugin that does not declare options keeps reading `this.config` as before.
|
|
38
|
+
|
|
39
|
+
### A plugin extending `TwakePlugin`
|
|
40
|
+
|
|
41
|
+
**Who is affected:** a plugin built outside this repository whose class extends
|
|
42
|
+
`TwakePlugin`.
|
|
43
|
+
|
|
44
|
+
The base constructor takes the WebAdmin URL, token and concurrency instead of
|
|
45
|
+
the names of the options holding them:
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
import { jamesOptionsOf } from 'ldap-rest/plugin-twake-james.options';
|
|
49
|
+
|
|
50
|
+
const options = jamesOptionsOf(server.config);
|
|
51
|
+
super(server, {
|
|
52
|
+
url: options.james_webadmin_url,
|
|
53
|
+
token: options.james_webadmin_token,
|
|
54
|
+
concurrency: options.james_concurrency,
|
|
55
|
+
urlOption: 'james_webadmin_url',
|
|
56
|
+
tokenOption: 'james_webadmin_token',
|
|
57
|
+
concurrencyOption: 'james_concurrency',
|
|
58
|
+
});
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The three `*Option` fields only name the option in the startup error and the
|
|
62
|
+
missing-token warning. `concurrency` must be a positive integer; the base
|
|
63
|
+
refuses anything else, naming `concurrencyOption`.
|
|
64
|
+
|
|
65
|
+
### A plugin building SCIM's exported helpers
|
|
66
|
+
|
|
67
|
+
**Who is affected:** a plugin built outside this repository that constructs
|
|
68
|
+
`ScimUsers`, `ScimGroups`, `ScimBulk`, `ScimDiscovery` or `BaseResolver`, or
|
|
69
|
+
calls `scimBodyParser`.
|
|
70
|
+
|
|
71
|
+
These take the SCIM options instead of a plain `Config`:
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
import { scimOptionsOf } from 'ldap-rest/plugin-scim-scim.options';
|
|
75
|
+
|
|
76
|
+
const options = scimOptionsOf(config);
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`BaseResolver` keeps its `(config, options)` form; the others take the checked
|
|
80
|
+
values beside what they already require.
|
|
81
|
+
|
|
82
|
+
### An invalid SCIM or Twake value
|
|
83
|
+
|
|
84
|
+
**Who is affected:** a deployment setting a SCIM limit to zero or a negative
|
|
85
|
+
number, giving a per-instance override of the wrong JSON type, or setting the
|
|
86
|
+
James, Calendar, Drive or migration proxy concurrency to the wrong type.
|
|
87
|
+
|
|
88
|
+
These options now refuse a value below 1 when the plugin loads: a zero used
|
|
89
|
+
to be silently replaced by the default, and a negative value used as it was.
|
|
90
|
+
Remove the option to keep the default, or give it a positive number.
|
|
91
|
+
|
|
92
|
+
A per-instance override (`--plugin core/scim:name:{...}`) must also use the
|
|
93
|
+
option's JSON type: `{"scim_max_results": "50"}` and `{"scim_user_base":
|
|
94
|
+
null}` are refused, where the quoted number used to be coerced and the null
|
|
95
|
+
treated as unset. The applicative accounts options refuse the same:
|
|
96
|
+
`{"max_app_accounts": "5"}` used to be kept as the string, and
|
|
97
|
+
`{"applicative_account_attribute": "cn"}` was spread into `['c', 'n']`.
|
|
98
|
+
|
|
99
|
+
The James, Calendar, Drive and migration proxy concurrency used to replace a
|
|
100
|
+
value that was not a number with `10`, and now refuses it. A zero or a
|
|
101
|
+
negative value was already refused by `p-limit`, and the message now names
|
|
102
|
+
the option. The other Twake options also refuse a value of the wrong JSON
|
|
103
|
+
type in an override.
|
|
104
|
+
|
|
105
|
+
A zero `--twake-group-max-page-limit`, `--twake-instance-timeout`,
|
|
106
|
+
`--cloudery-workflow-poll-interval-ms` or
|
|
107
|
+
`--cloudery-workflow-max-attempts` used to be replaced by the default and is
|
|
108
|
+
now refused.
|
|
109
|
+
|
|
110
|
+
The authentication and authorization options are checked the same way. A zero
|
|
111
|
+
`--rate-limit-window-ms`, `--rate-limit-max`, `--crowdsec-cache-ttl`,
|
|
112
|
+
`--authz-per-branch-cache-ttl` or `--authz-dynamic-cache-ttl` used to be
|
|
113
|
+
replaced by the default and is now refused. A zero `--auth-totp-step` or
|
|
114
|
+
`--auth-hmac-window` was accepted and broke the plugin — every counter was
|
|
115
|
+
`Infinity`, every signature not made in the same millisecond was refused — and
|
|
116
|
+
is now refused at startup. A zero `--ldap-organization-max-subnodes`,
|
|
117
|
+
`--ldap-raw-max-results`, `--ppolicy-warn-days`, `--ppolicy-min-length` or
|
|
118
|
+
`--bcl-retention` used to be replaced by the default and is now refused.
|
|
119
|
+
|
|
120
|
+
`ConfigParser` keeps an empty string for a string option. A plugin reads the
|
|
121
|
+
declared default instead when that default is not empty, as its `|| default`
|
|
122
|
+
used to: `DM_COZY_ADMIN_USER=` gives `admin`, `DM_CLOUDERY_OFFER=` gives
|
|
123
|
+
`b2b_twake_default`. An option whose empty value means something says so in
|
|
124
|
+
its declaration (`--cozy-apps`, `--cozy-user-deleted-routing-key`,
|
|
125
|
+
`--twake-instance-cozy-apps`, `--twake-instance-cozy-context`,
|
|
126
|
+
`--twake-instance-cloudery-offer`) and keeps it; an option whose default is
|
|
127
|
+
empty keeps the empty string.
|
|
128
|
+
|
|
129
|
+
### The group member check option
|
|
130
|
+
|
|
131
|
+
**Who is affected:** a deployment passing `--group-allow-unexistent-members`.
|
|
132
|
+
|
|
133
|
+
That spelling was stored under a key the groups plugin never read, so it never
|
|
134
|
+
disabled member validation. The option is now `--groups-allow-unexistent-members`
|
|
135
|
+
and `DM_ALLOW_UNEXISTENT_MEMBERS`, which the plugin reads; the old spelling is
|
|
136
|
+
gone.
|
|
137
|
+
|
|
138
|
+
### A config key a plugin did not declare
|
|
139
|
+
|
|
140
|
+
**Who is affected:** a plugin built outside this repository reading an option
|
|
141
|
+
through `this.config.<name>` without declaring it.
|
|
142
|
+
|
|
143
|
+
`Config` no longer has an index signature, so such a read does not compile.
|
|
144
|
+
Declare the option with `defineOptions` and read it through `this.options()`
|
|
145
|
+
(see [plugin options](../plugin-development/options.md)); the declaration also
|
|
146
|
+
makes the option known to the startup report and its `env` variable read.
|
|
147
|
+
|
|
148
|
+
### Node 22 or later is required
|
|
149
|
+
|
|
150
|
+
**Who is affected:** a deployment running on Node 20 (end of life
|
|
151
|
+
2026-04-30). A deployment of the published image is not: it is built on Node 24.
|
|
152
|
+
|
|
153
|
+
`engines` declares `>=22`, and the CI runs the suite on 22, 24 and 26. Node
|
|
154
|
+
20 is neither tested nor supported.
|
|
155
|
+
|
|
156
|
+
### Values past 4096 characters, and an address with a trailing or empty label
|
|
157
|
+
|
|
158
|
+
**Who is affected:** a deployment whose schemas accept a value longer than
|
|
159
|
+
4096 characters, or an address such as `a@b.c.` or `a@b..c` in an attribute
|
|
160
|
+
whose pattern came with the shipped schemas.
|
|
161
|
+
|
|
162
|
+
A schema `test` pattern is no longer run on a value longer than 4096
|
|
163
|
+
characters; the value is answered 400, naming the length, before the pattern
|
|
164
|
+
sees it, so that a pattern cannot be made to walk several kilobytes. This
|
|
165
|
+
holds for every attribute in every schema which carries a pattern, a
|
|
166
|
+
deployment's own included, and none of the shipped schemas declares a longer
|
|
167
|
+
limit. An attribute holding longer values declares its own `maxLength`, a
|
|
168
|
+
whole number of characters, or the server refuses to load the schema:
|
|
169
|
+
|
|
170
|
+
```json
|
|
171
|
+
{
|
|
172
|
+
"sshPublicKey": {
|
|
173
|
+
"type": "array",
|
|
174
|
+
"items": { "type": "string", "maxLength": 16384, "test": "^[^\\r\\n]*$" }
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
The address patterns shipped with the schemas no longer accept a trailing dot
|
|
180
|
+
or an empty label: `a@b.c.`, `a@b..c` and `a@.b.c` are refused. Entries already holding
|
|
181
|
+
such a value stay as they are; the value is refused the next time that
|
|
182
|
+
attribute is written. A deployment that copied one of these patterns keeps
|
|
183
|
+
its own copy, unbounded only if it declares no `maxLength`; the patterns to
|
|
184
|
+
use are in the
|
|
185
|
+
[schema reference](../../docs/client-development/schemas/README.md#test-optional).
|
|
186
|
+
|
|
187
|
+
### A `null` under a name the schema does not declare
|
|
188
|
+
|
|
189
|
+
**Who is affected:** a client sending `null` to an entity whose schema does
|
|
190
|
+
not declare the attribute, or to an entity without a schema — the
|
|
191
|
+
`dhcpHosts` and `dnsRecords` schemas shipped with `"strict": false` among
|
|
192
|
+
them.
|
|
193
|
+
|
|
194
|
+
Such a write answered 500, with nothing written. It now succeeds: the key is
|
|
195
|
+
left out of a creation or an `add`, and clears the attribute in a `replace`.
|
|
196
|
+
No action is required. A strict schema still answers 400 for such a name, and
|
|
197
|
+
the value is written as if the key were left out, so a client relying on the
|
|
198
|
+
500 to notice a misspelt attribute no longer hears about it — see
|
|
199
|
+
[what a value must look like](../client-development/schemas/README.md#what-a-value-must-look-like).
|
|
200
|
+
|
|
201
|
+
## From 1.2.0 to 1.2.1
|
|
202
|
+
|
|
203
|
+
### `{org}` once in a Twake branch pattern
|
|
204
|
+
|
|
205
|
+
**Who is affected:** a deployment whose `--twake-group-base`,
|
|
206
|
+
`--twake-group-user-base` or `--twake-space-base` holds `{org}` more than
|
|
207
|
+
once. None is known.
|
|
208
|
+
|
|
209
|
+
The server refuses to start on such a pattern. It filled the first `{org}`
|
|
210
|
+
only and read the organization back from the first one, so a second
|
|
211
|
+
occurrence never worked; now that every occurrence is filled, the two
|
|
212
|
+
readings would disagree.
|
|
213
|
+
|
|
7
214
|
## From 1.1 to 1.2.0
|
|
8
215
|
|
|
9
216
|
### The process stops on an uncaught exception
|