ldap-rest 2.0.3 → 2.0.5
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/dist/lib/entitySchema/validator.js +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/plugins/auth/authzDynamic.js +1 -1
- package/dist/plugins/auth/trustedProxy.js +1 -1
- package/dist/plugins/ldap/departmentSync.js +1 -1
- package/dist/plugins/scim/baseResolver.js +1 -1
- package/dist/src/abstract/ldapFlat.d.ts +6 -6
- package/dist/src/abstract/plugin.d.ts +11 -11
- package/dist/src/abstract/twakePlugin.d.ts +4 -4
- package/dist/src/bin/index.d.ts +10 -10
- package/dist/src/browser/ldap-browser/LdapBrowser.d.ts +1 -1
- package/dist/src/browser/ldap-browser/api/RawApiClient.d.ts +1 -1
- package/dist/src/browser/ldap-browser/components/EntryTree.d.ts +2 -2
- package/dist/src/browser/ldap-browser/components/EntryView.d.ts +2 -2
- package/dist/src/browser/ldap-browser/index.d.ts +4 -5
- package/dist/src/browser/ldap-browser/schema.d.ts +1 -1
- package/dist/src/browser/ldap-group-editor/LdapGroupEditor.d.ts +2 -2
- package/dist/src/browser/ldap-group-editor/api/GroupApiClient.d.ts +1 -1
- package/dist/src/browser/ldap-group-editor/components/CreateGroupModal.d.ts +2 -2
- package/dist/src/browser/ldap-group-editor/components/GroupPropertyEditor.d.ts +1 -1
- package/dist/src/browser/ldap-group-editor/components/MoveGroupModal.d.ts +1 -1
- package/dist/src/browser/ldap-group-editor/types.d.ts +1 -1
- package/dist/src/browser/ldap-resource-editor/api/ResourceApiClient.d.ts +2 -2
- package/dist/src/browser/ldap-resource-editor/index.d.ts +2 -2
- package/dist/src/browser/ldap-resource-editor/types.d.ts +1 -1
- package/dist/src/browser/ldap-tree-viewer/LdapTreeViewer.d.ts +1 -1
- package/dist/src/browser/ldap-tree-viewer/components/TreeNode.d.ts +2 -2
- package/dist/src/browser/ldap-tree-viewer/components/TreeRoot.d.ts +2 -2
- package/dist/src/browser/ldap-tree-viewer/index.d.ts +2 -3
- package/dist/src/browser/ldap-tree-viewer/store/actions.d.ts +2 -2
- package/dist/src/browser/ldap-tree-viewer/store/reducers.d.ts +2 -2
- package/dist/src/browser/ldap-unit-editor/LdapUnitEditor.d.ts +1 -1
- package/dist/src/browser/ldap-unit-editor/api/UnitApiClient.d.ts +1 -1
- package/dist/src/browser/ldap-unit-editor/components/MoveUnitModal.d.ts +1 -1
- package/dist/src/browser/ldap-unit-editor/components/UnitPropertyEditor.d.ts +1 -1
- package/dist/src/browser/ldap-unit-editor/types.d.ts +1 -1
- package/dist/src/browser/ldap-user-editor/LdapUserEditor.d.ts +2 -2
- package/dist/src/browser/ldap-user-editor/api/UserApiClient.d.ts +2 -2
- package/dist/src/browser/ldap-user-editor/components/MoveUserModal.d.ts +1 -1
- package/dist/src/browser/ldap-user-editor/components/PointerField.d.ts +2 -2
- package/dist/src/browser/ldap-user-editor/components/UserEditor.d.ts +1 -1
- package/dist/src/browser/ldap-user-editor/components/UserList.d.ts +1 -1
- package/dist/src/browser/ldap-user-editor/components/UserTree.d.ts +1 -1
- package/dist/src/browser/ldap-user-editor/index.d.ts +2 -3
- package/dist/src/browser/ldap-user-editor/types.d.ts +1 -1
- package/dist/src/browser/shared/components/Modal.d.ts +1 -1
- package/dist/src/browser/shared/index.d.ts +7 -7
- package/dist/src/browser/shared/utils/form.d.ts +1 -1
- package/dist/src/browser/shared/utils/schema.d.ts +1 -1
- package/dist/src/config/args.d.ts +3 -3
- package/dist/src/config/options.d.ts +2 -2
- package/dist/src/config/schema.d.ts +1 -1
- package/dist/src/hooks.d.ts +5 -5
- package/dist/src/lib/auth/base.d.ts +2 -2
- package/dist/src/lib/authz/base.d.ts +6 -6
- package/dist/src/lib/authz/composition.d.ts +4 -4
- package/dist/src/lib/entitySchema/validator.d.ts +23 -2
- package/dist/src/lib/expressFormatedResponses.d.ts +1 -1
- package/dist/src/lib/health.d.ts +1 -1
- package/dist/src/lib/hookBus.d.ts +1 -1
- package/dist/src/lib/ldap/schema.d.ts +2 -2
- package/dist/src/lib/ldapActions.d.ts +5 -5
- package/dist/src/lib/mailDomains.d.ts +1 -1
- package/dist/src/lib/parseConfig.d.ts +1 -1
- package/dist/src/lib/schemaFile.d.ts +1 -1
- package/dist/src/lib/staticFiles.d.ts +1 -1
- package/dist/src/lib/storage/store.d.ts +1 -1
- package/dist/src/lib/utils.d.ts +3 -3
- package/dist/src/logger/winston.d.ts +1 -1
- package/dist/src/plugins/auth/auth.options.d.ts +39 -39
- package/dist/src/plugins/auth/authzDynamic.d.ts +24 -11
- package/dist/src/plugins/auth/authzLinid1.d.ts +7 -7
- package/dist/src/plugins/auth/authzPerBranch.d.ts +8 -8
- package/dist/src/plugins/auth/authzPerRoute.d.ts +2 -2
- package/dist/src/plugins/auth/authzScope.d.ts +1 -1
- package/dist/src/plugins/auth/crowdsec.d.ts +4 -4
- package/dist/src/plugins/auth/fake.d.ts +3 -3
- package/dist/src/plugins/auth/hmac.d.ts +4 -4
- package/dist/src/plugins/auth/llng.d.ts +20 -5
- package/dist/src/plugins/auth/openidconnect.d.ts +9 -9
- package/dist/src/plugins/auth/rateLimit.d.ts +3 -3
- package/dist/src/plugins/auth/token.d.ts +3 -3
- package/dist/src/plugins/auth/totp.d.ts +5 -5
- package/dist/src/plugins/auth/trustedProxy.d.ts +16 -32
- package/dist/src/plugins/bcl.d.ts +4 -4
- package/dist/src/plugins/bcl.options.d.ts +3 -3
- package/dist/src/plugins/configApi.d.ts +1 -1
- package/dist/src/plugins/demo/helloworld.d.ts +1 -1
- package/dist/src/plugins/ldap/accountLifecycle.d.ts +1 -1
- package/dist/src/plugins/ldap/bulkImport.d.ts +5 -5
- package/dist/src/plugins/ldap/departmentSync.d.ts +14 -3
- package/dist/src/plugins/ldap/enterpriseRules.d.ts +7 -7
- package/dist/src/plugins/ldap/externalUsersInGroups.d.ts +6 -6
- package/dist/src/plugins/ldap/flatGeneric.d.ts +6 -6
- package/dist/src/plugins/ldap/groups.d.ts +8 -8
- package/dist/src/plugins/ldap/ldap.options.d.ts +45 -45
- package/dist/src/plugins/ldap/onChange.d.ts +4 -4
- package/dist/src/plugins/ldap/organization.d.ts +1 -1
- package/dist/src/plugins/ldap/organizations.d.ts +12 -12
- package/dist/src/plugins/ldap/passwordPolicy.d.ts +11 -11
- package/dist/src/plugins/ldap/raw.d.ts +8 -8
- package/dist/src/plugins/ldap/trash.d.ts +6 -6
- package/dist/src/plugins/metrics.d.ts +3 -3
- package/dist/src/plugins/metrics.options.d.ts +3 -3
- package/dist/src/plugins/rabbitmq.d.ts +4 -4
- package/dist/src/plugins/rabbitmq.options.d.ts +3 -3
- package/dist/src/plugins/scim/baseResolver.d.ts +3 -3
- package/dist/src/plugins/scim/bulk.d.ts +7 -7
- package/dist/src/plugins/scim/discovery.d.ts +4 -4
- package/dist/src/plugins/scim/errors.d.ts +3 -3
- package/dist/src/plugins/scim/filter.d.ts +1 -1
- package/dist/src/plugins/scim/groups.d.ts +8 -8
- package/dist/src/plugins/scim/list.d.ts +1 -1
- package/dist/src/plugins/scim/mapping.d.ts +2 -2
- package/dist/src/plugins/scim/patch.d.ts +2 -2
- package/dist/src/plugins/scim/scim.d.ts +30 -30
- package/dist/src/plugins/scim/scim.options.d.ts +27 -27
- package/dist/src/plugins/scim/users.d.ts +6 -6
- package/dist/src/plugins/static.d.ts +6 -6
- package/dist/src/plugins/static.options.d.ts +6 -6
- package/dist/src/plugins/storage/file.d.ts +2 -2
- package/dist/src/plugins/storage/ldap.d.ts +2 -2
- package/dist/src/plugins/storage/postgres.d.ts +2 -2
- package/dist/src/plugins/storage/valkey.d.ts +2 -2
- package/dist/src/plugins/storage.d.ts +13 -13
- package/dist/src/plugins/storage.options.d.ts +11 -11
- package/dist/src/plugins/twake/appAccounts.options.d.ts +6 -6
- package/dist/src/plugins/twake/appAccountsApi.d.ts +7 -7
- package/dist/src/plugins/twake/appAccountsConsistency.d.ts +9 -9
- package/dist/src/plugins/twake/calendar.d.ts +14 -14
- package/dist/src/plugins/twake/calendar.options.d.ts +11 -11
- package/dist/src/plugins/twake/calendarResources.d.ts +1 -1
- package/dist/src/plugins/twake/cloudery.options.d.ts +18 -18
- package/dist/src/plugins/twake/clouderyProvision.d.ts +19 -19
- package/dist/src/plugins/twake/cozy.options.d.ts +14 -14
- package/dist/src/plugins/twake/cozyProvision.d.ts +15 -15
- package/dist/src/plugins/twake/drive.d.ts +9 -9
- package/dist/src/plugins/twake/drive.options.d.ts +7 -7
- package/dist/src/plugins/twake/groups.d.ts +16 -16
- package/dist/src/plugins/twake/instances.d.ts +38 -38
- package/dist/src/plugins/twake/james.d.ts +18 -18
- package/dist/src/plugins/twake/james.options.d.ts +13 -13
- package/dist/src/plugins/twake/lifecycleAttributes.d.ts +2 -2
- package/dist/src/plugins/twake/lifecycleEvents.d.ts +13 -13
- package/dist/src/plugins/twake/migrationProxy.d.ts +11 -11
- package/dist/src/plugins/twake/migrationProxy.options.d.ts +8 -8
- package/dist/src/plugins/twake/spaces.d.ts +12 -12
- package/dist/src/plugins/twake/tombstone.d.ts +10 -10
- package/dist/src/plugins/twake/twakeGroups.options.d.ts +12 -12
- package/dist/src/plugins/twake/twakeInstances.options.d.ts +35 -35
- package/dist/src/plugins/twake/twakeLifecycle.options.d.ts +12 -12
- package/dist/src/plugins/twake/twakeSpaces.options.d.ts +11 -11
- package/dist/src/plugins/twake/twakeTombstone.options.d.ts +9 -9
- package/dist/src/plugins/weblogs.d.ts +1 -1
- package/docs/client-development/schemas/README.md +6 -1
- package/docs/development/contracts.md +22 -0
- package/docs/presentations/en.md +1 -1
- package/docs/presentations/fr.md +1 -1
- package/docs/usage/plugins/auth/authz-dynamic.md +3 -1
- package/docs/usage/plugins/auth/trusted-proxy.md +11 -1
- package/docs/usage/upgrading.md +27 -0
- package/package.json +4 -3
- package/static/browser/ldap-user-editor.esm.js.map +1 -1
- package/static/browser/ldap-user-editor.js.map +1 -1
- package/static/browser/ldap-user-editor.min.js.map +1 -1
- package/static/browser/shared/utils/schema.js.map +1 -1
- package/static/browser/shared.esm.js.map +1 -1
- package/static/browser/shared.js.map +1 -1
- package/static/browser/shared.min.js.map +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { Express } from 'express';
|
|
2
|
-
import TwakePlugin from '../../abstract/twakePlugin';
|
|
3
|
-
import type { HealthStatus } from '../../lib/health';
|
|
4
|
-
import { type Role } from '../../abstract/plugin';
|
|
5
|
-
import type { DM } from '../../bin';
|
|
6
|
-
import type { AttributeValue } from '../../lib/ldapActions';
|
|
7
|
-
import { Hooks } from '../../hooks';
|
|
8
|
-
import type { ChangesToNotify } from '../ldap/onChange';
|
|
2
|
+
import TwakePlugin from '../../abstract/twakePlugin.js';
|
|
3
|
+
import type { HealthStatus } from '../../lib/health.js';
|
|
4
|
+
import { type Role } from '../../abstract/plugin.js';
|
|
5
|
+
import type { DM } from '../../bin/index.js';
|
|
6
|
+
import type { AttributeValue } from '../../lib/ldapActions.js';
|
|
7
|
+
import { Hooks } from '../../hooks.js';
|
|
8
|
+
import type { ChangesToNotify } from '../ldap/onChange.js';
|
|
9
9
|
type Identity = {
|
|
10
10
|
id: string;
|
|
11
11
|
email: string;
|
|
@@ -21,17 +21,17 @@ export declare const QuotaParams: import("@sinclair/typebox").TObject<{
|
|
|
21
21
|
}>;
|
|
22
22
|
export default class James extends TwakePlugin {
|
|
23
23
|
static optionDefinitions: {
|
|
24
|
-
james_webadmin_url: import("../../config/options").StringOption;
|
|
25
|
-
james_webadmin_token: import("../../config/options").StringOption;
|
|
26
|
-
james_signature_template: import("../../config/options").StringOption;
|
|
27
|
-
james_concurrency: import("../../config/options").NumberOption;
|
|
28
|
-
james_init_delay: import("../../config/options").NumberOption;
|
|
29
|
-
james_retry_attempts: import("../../config/options").NumberOption;
|
|
30
|
-
james_retry_delay: import("../../config/options").NumberOption;
|
|
31
|
-
james_mailing_list_branch: import("../../config/options").ArrayOption;
|
|
32
|
-
james_mailbox_type_attribute: import("../../config/options").StringOption;
|
|
33
|
-
james_sync_forwards: import("../../config/options").BooleanOption;
|
|
34
|
-
james_team_mailbox_any_domain: import("../../config/options").BooleanOption;
|
|
24
|
+
james_webadmin_url: import("../../config/options.js").StringOption;
|
|
25
|
+
james_webadmin_token: import("../../config/options.js").StringOption;
|
|
26
|
+
james_signature_template: import("../../config/options.js").StringOption;
|
|
27
|
+
james_concurrency: import("../../config/options.js").NumberOption;
|
|
28
|
+
james_init_delay: import("../../config/options.js").NumberOption;
|
|
29
|
+
james_retry_attempts: import("../../config/options.js").NumberOption;
|
|
30
|
+
james_retry_delay: import("../../config/options.js").NumberOption;
|
|
31
|
+
james_mailing_list_branch: import("../../config/options.js").ArrayOption;
|
|
32
|
+
james_mailbox_type_attribute: import("../../config/options.js").StringOption;
|
|
33
|
+
james_sync_forwards: import("../../config/options.js").BooleanOption;
|
|
34
|
+
james_team_mailbox_any_domain: import("../../config/options.js").BooleanOption;
|
|
35
35
|
};
|
|
36
36
|
name: string;
|
|
37
37
|
roles: Role[];
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* James plugin options, see `docs/plugin-development/options.md`.
|
|
3
3
|
*/
|
|
4
|
-
import type { Config } from '../../config/args';
|
|
5
|
-
import { type OptionsOf } from '../../config/options';
|
|
4
|
+
import type { Config } from '../../config/args.js';
|
|
5
|
+
import { type OptionsOf } from '../../config/options.js';
|
|
6
6
|
export declare const jamesOptions: {
|
|
7
|
-
james_webadmin_url: import("../../config/options").StringOption;
|
|
8
|
-
james_webadmin_token: import("../../config/options").StringOption;
|
|
9
|
-
james_signature_template: import("../../config/options").StringOption;
|
|
10
|
-
james_concurrency: import("../../config/options").NumberOption;
|
|
11
|
-
james_init_delay: import("../../config/options").NumberOption;
|
|
12
|
-
james_retry_attempts: import("../../config/options").NumberOption;
|
|
13
|
-
james_retry_delay: import("../../config/options").NumberOption;
|
|
14
|
-
james_mailing_list_branch: import("../../config/options").ArrayOption;
|
|
15
|
-
james_mailbox_type_attribute: import("../../config/options").StringOption;
|
|
16
|
-
james_sync_forwards: import("../../config/options").BooleanOption;
|
|
17
|
-
james_team_mailbox_any_domain: import("../../config/options").BooleanOption;
|
|
7
|
+
james_webadmin_url: import("../../config/options.js").StringOption;
|
|
8
|
+
james_webadmin_token: import("../../config/options.js").StringOption;
|
|
9
|
+
james_signature_template: import("../../config/options.js").StringOption;
|
|
10
|
+
james_concurrency: import("../../config/options.js").NumberOption;
|
|
11
|
+
james_init_delay: import("../../config/options.js").NumberOption;
|
|
12
|
+
james_retry_attempts: import("../../config/options.js").NumberOption;
|
|
13
|
+
james_retry_delay: import("../../config/options.js").NumberOption;
|
|
14
|
+
james_mailing_list_branch: import("../../config/options.js").ArrayOption;
|
|
15
|
+
james_mailbox_type_attribute: import("../../config/options.js").StringOption;
|
|
16
|
+
james_sync_forwards: import("../../config/options.js").BooleanOption;
|
|
17
|
+
james_team_mailbox_any_domain: import("../../config/options.js").BooleanOption;
|
|
18
18
|
};
|
|
19
19
|
export type JamesOptions = OptionsOf<typeof jamesOptions>;
|
|
20
20
|
/** The checked values for a caller that holds a Config instead of the plugin */
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* deletion), read from the `--twake-lifecycle-*` options: the ones
|
|
6
6
|
* `core/twake/lifecycleEvents` reads, and `core/twake/tombstone` writes.
|
|
7
7
|
*/
|
|
8
|
-
import type { Config } from '../../bin';
|
|
9
|
-
import type { AttributesList, AttributeValue } from '../../lib/ldapActions';
|
|
8
|
+
import type { Config } from '../../bin/index.js';
|
|
9
|
+
import type { AttributesList, AttributeValue } from '../../lib/ldapActions.js';
|
|
10
10
|
export type DeletedAtFormat = 'iso8601' | 'generalizedTime';
|
|
11
11
|
export interface LifecycleAttributes {
|
|
12
12
|
role: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import DmPlugin, { type Role } from '../../abstract/plugin';
|
|
2
|
-
import type { DM } from '../../bin';
|
|
3
|
-
import type { Hooks } from '../../hooks';
|
|
1
|
+
import DmPlugin, { type Role } from '../../abstract/plugin.js';
|
|
2
|
+
import type { DM } from '../../bin/index.js';
|
|
3
|
+
import type { Hooks } from '../../hooks.js';
|
|
4
4
|
export declare const LIFECYCLE_EVENTS: readonly ["created", "roleChanged", "disabled", "enabled", "updated", "memberAdded", "memberRemoved", "deleted"];
|
|
5
5
|
export type LifecycleEvent = (typeof LIFECYCLE_EVENTS)[number];
|
|
6
6
|
declare const MEMBER_LISTS: readonly ["$members", "$added", "$removed"];
|
|
@@ -24,16 +24,16 @@ interface Rule {
|
|
|
24
24
|
export declare function parseRules(source: string): Rule[];
|
|
25
25
|
export default class TwakeLifecycleEvents extends DmPlugin {
|
|
26
26
|
static optionDefinitions: {
|
|
27
|
-
twake_lifecycle_role_attribute: import("../../config/options").StringOption;
|
|
28
|
-
twake_lifecycle_lock_attribute: import("../../config/options").StringOption;
|
|
29
|
-
twake_lifecycle_lock_value: import("../../config/options").StringOption;
|
|
30
|
-
twake_lifecycle_deleted_attribute: import("../../config/options").StringOption;
|
|
31
|
-
twake_lifecycle_deleted_value: import("../../config/options").StringOption;
|
|
32
|
-
twake_lifecycle_deleted_at_attribute: import("../../config/options").StringOption;
|
|
33
|
-
twake_lifecycle_deleted_at_format: import("../../config/options").StringOption;
|
|
34
|
-
twake_lifecycle_reason_attribute: import("../../config/options").StringOption;
|
|
35
|
-
twake_lifecycle_rules: import("../../config/options").StringOption;
|
|
36
|
-
twake_lifecycle_member_attribute: import("../../config/options").StringOption;
|
|
27
|
+
twake_lifecycle_role_attribute: import("../../config/options.js").StringOption;
|
|
28
|
+
twake_lifecycle_lock_attribute: import("../../config/options.js").StringOption;
|
|
29
|
+
twake_lifecycle_lock_value: import("../../config/options.js").StringOption;
|
|
30
|
+
twake_lifecycle_deleted_attribute: import("../../config/options.js").StringOption;
|
|
31
|
+
twake_lifecycle_deleted_value: import("../../config/options.js").StringOption;
|
|
32
|
+
twake_lifecycle_deleted_at_attribute: import("../../config/options.js").StringOption;
|
|
33
|
+
twake_lifecycle_deleted_at_format: import("../../config/options.js").StringOption;
|
|
34
|
+
twake_lifecycle_reason_attribute: import("../../config/options.js").StringOption;
|
|
35
|
+
twake_lifecycle_rules: import("../../config/options.js").StringOption;
|
|
36
|
+
twake_lifecycle_member_attribute: import("../../config/options.js").StringOption;
|
|
37
37
|
};
|
|
38
38
|
name: string;
|
|
39
39
|
roles: Role[];
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Express } from 'express';
|
|
2
|
-
import TwakePlugin from '../../abstract/twakePlugin';
|
|
3
|
-
import { type Role } from '../../abstract/plugin';
|
|
4
|
-
import type { DM } from '../../bin';
|
|
5
|
-
import type { Hooks } from '../../hooks';
|
|
6
|
-
import type { HealthStatus } from '../../lib/health';
|
|
2
|
+
import TwakePlugin from '../../abstract/twakePlugin.js';
|
|
3
|
+
import { type Role } from '../../abstract/plugin.js';
|
|
4
|
+
import type { DM } from '../../bin/index.js';
|
|
5
|
+
import type { Hooks } from '../../hooks.js';
|
|
6
|
+
import type { HealthStatus } from '../../lib/health.js';
|
|
7
7
|
/**
|
|
8
8
|
* @openapi
|
|
9
9
|
* components:
|
|
@@ -21,12 +21,12 @@ export declare const MailMigrationParams: import("@sinclair/typebox").TObject<{
|
|
|
21
21
|
}>;
|
|
22
22
|
export default class MigrationProxy extends TwakePlugin {
|
|
23
23
|
static optionDefinitions: {
|
|
24
|
-
migration_proxy_url: import("../../config/options").StringOption;
|
|
25
|
-
migration_proxy_token: import("../../config/options").StringOption;
|
|
26
|
-
migration_proxy_branch: import("../../config/options").ArrayOption;
|
|
27
|
-
migration_proxy_concurrency: import("../../config/options").NumberOption;
|
|
28
|
-
migration_proxy_retry_attempts: import("../../config/options").NumberOption;
|
|
29
|
-
migration_proxy_retry_delay: import("../../config/options").NumberOption;
|
|
24
|
+
migration_proxy_url: import("../../config/options.js").StringOption;
|
|
25
|
+
migration_proxy_token: import("../../config/options.js").StringOption;
|
|
26
|
+
migration_proxy_branch: import("../../config/options.js").ArrayOption;
|
|
27
|
+
migration_proxy_concurrency: import("../../config/options.js").NumberOption;
|
|
28
|
+
migration_proxy_retry_attempts: import("../../config/options.js").NumberOption;
|
|
29
|
+
migration_proxy_retry_delay: import("../../config/options.js").NumberOption;
|
|
30
30
|
};
|
|
31
31
|
name: string;
|
|
32
32
|
roles: Role[];
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Twake Mail migration proxy options, see `docs/plugin-development/options.md`.
|
|
3
3
|
*/
|
|
4
|
-
import type { Config } from '../../config/args';
|
|
5
|
-
import { type OptionsOf } from '../../config/options';
|
|
4
|
+
import type { Config } from '../../config/args.js';
|
|
5
|
+
import { type OptionsOf } from '../../config/options.js';
|
|
6
6
|
export declare const migrationProxyOptions: {
|
|
7
|
-
migration_proxy_url: import("../../config/options").StringOption;
|
|
8
|
-
migration_proxy_token: import("../../config/options").StringOption;
|
|
9
|
-
migration_proxy_branch: import("../../config/options").ArrayOption;
|
|
10
|
-
migration_proxy_concurrency: import("../../config/options").NumberOption;
|
|
11
|
-
migration_proxy_retry_attempts: import("../../config/options").NumberOption;
|
|
12
|
-
migration_proxy_retry_delay: import("../../config/options").NumberOption;
|
|
7
|
+
migration_proxy_url: import("../../config/options.js").StringOption;
|
|
8
|
+
migration_proxy_token: import("../../config/options.js").StringOption;
|
|
9
|
+
migration_proxy_branch: import("../../config/options.js").ArrayOption;
|
|
10
|
+
migration_proxy_concurrency: import("../../config/options.js").NumberOption;
|
|
11
|
+
migration_proxy_retry_attempts: import("../../config/options.js").NumberOption;
|
|
12
|
+
migration_proxy_retry_delay: import("../../config/options.js").NumberOption;
|
|
13
13
|
};
|
|
14
14
|
export type MigrationProxyOptions = OptionsOf<typeof migrationProxyOptions>;
|
|
15
15
|
/** The checked values for a caller that holds a Config instead of the plugin */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Express } from 'express';
|
|
2
|
-
import DmPlugin, { type Role } from '../../abstract/plugin';
|
|
3
|
-
import type { DM } from '../../bin';
|
|
4
|
-
import type { Hooks } from '../../hooks';
|
|
2
|
+
import DmPlugin, { type Role } from '../../abstract/plugin.js';
|
|
3
|
+
import type { DM } from '../../bin/index.js';
|
|
4
|
+
import type { Hooks } from '../../hooks.js';
|
|
5
5
|
/** From the weakest to the strongest. */
|
|
6
6
|
export declare const SPACE_ROLES: readonly ["viewer", "editor", "admin"];
|
|
7
7
|
export type SpaceRole = (typeof SPACE_ROLES)[number];
|
|
@@ -37,15 +37,15 @@ export declare const SpaceGroupParams: import("@sinclair/typebox").TObject<{
|
|
|
37
37
|
}>;
|
|
38
38
|
export default class TwakeSpaces extends DmPlugin {
|
|
39
39
|
static optionDefinitions: {
|
|
40
|
-
twake_space_base: import("../../config/options").StringOption;
|
|
41
|
-
twake_space_class: import("../../config/options").ArrayOption;
|
|
42
|
-
twake_space_display_name_attribute: import("../../config/options").StringOption;
|
|
43
|
-
twake_space_admin_attribute: import("../../config/options").StringOption;
|
|
44
|
-
twake_space_editor_attribute: import("../../config/options").StringOption;
|
|
45
|
-
twake_space_viewer_attribute: import("../../config/options").StringOption;
|
|
46
|
-
twake_space_user_role_attribute: import("../../config/options").StringOption;
|
|
47
|
-
twake_space_exchange: import("../../config/options").StringOption;
|
|
48
|
-
twake_space_sync_queue: import("../../config/options").StringOption;
|
|
40
|
+
twake_space_base: import("../../config/options.js").StringOption;
|
|
41
|
+
twake_space_class: import("../../config/options.js").ArrayOption;
|
|
42
|
+
twake_space_display_name_attribute: import("../../config/options.js").StringOption;
|
|
43
|
+
twake_space_admin_attribute: import("../../config/options.js").StringOption;
|
|
44
|
+
twake_space_editor_attribute: import("../../config/options.js").StringOption;
|
|
45
|
+
twake_space_viewer_attribute: import("../../config/options.js").StringOption;
|
|
46
|
+
twake_space_user_role_attribute: import("../../config/options.js").StringOption;
|
|
47
|
+
twake_space_exchange: import("../../config/options.js").StringOption;
|
|
48
|
+
twake_space_sync_queue: import("../../config/options.js").StringOption;
|
|
49
49
|
};
|
|
50
50
|
name: string;
|
|
51
51
|
roles: Role[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Express, Request } from 'express';
|
|
2
|
-
import DmPlugin, { type Role } from '../../abstract/plugin';
|
|
3
|
-
import type { DM } from '../../bin';
|
|
4
|
-
import type { Hooks } from '../../hooks';
|
|
2
|
+
import DmPlugin, { type Role } from '../../abstract/plugin.js';
|
|
3
|
+
import type { DM } from '../../bin/index.js';
|
|
4
|
+
import type { Hooks } from '../../hooks.js';
|
|
5
5
|
export declare const EraseTombstoneBody: import("@sinclair/typebox").TObject<{
|
|
6
6
|
dn: import("@sinclair/typebox").TString;
|
|
7
7
|
force: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
@@ -11,13 +11,13 @@ export declare const EraseTombstoneResponse: import("@sinclair/typebox").TObject
|
|
|
11
11
|
}>;
|
|
12
12
|
export default class TwakeTombstone extends DmPlugin {
|
|
13
13
|
static optionDefinitions: {
|
|
14
|
-
twake_tombstone_dn: import("../../config/options").ArrayOption;
|
|
15
|
-
twake_tombstone_default_reason: import("../../config/options").StringOption;
|
|
16
|
-
twake_tombstone_reason_header: import("../../config/options").StringOption;
|
|
17
|
-
twake_tombstone_reasons: import("../../config/options").ArrayOption;
|
|
18
|
-
twake_tombstone_clear_attributes: import("../../config/options").ArrayOption;
|
|
19
|
-
twake_tombstone_erase_min_age: import("../../config/options").NumberOption;
|
|
20
|
-
twake_tombstone_group_bases: import("../../config/options").ArrayOption;
|
|
14
|
+
twake_tombstone_dn: import("../../config/options.js").ArrayOption;
|
|
15
|
+
twake_tombstone_default_reason: import("../../config/options.js").StringOption;
|
|
16
|
+
twake_tombstone_reason_header: import("../../config/options.js").StringOption;
|
|
17
|
+
twake_tombstone_reasons: import("../../config/options.js").ArrayOption;
|
|
18
|
+
twake_tombstone_clear_attributes: import("../../config/options.js").ArrayOption;
|
|
19
|
+
twake_tombstone_erase_min_age: import("../../config/options.js").NumberOption;
|
|
20
|
+
twake_tombstone_group_bases: import("../../config/options.js").ArrayOption;
|
|
21
21
|
};
|
|
22
22
|
name: string;
|
|
23
23
|
roles: Role[];
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Twake groups options, see `docs/plugin-development/options.md`.
|
|
3
3
|
*/
|
|
4
|
-
import type { Config } from '../../config/args';
|
|
5
|
-
import { type OptionsOf } from '../../config/options';
|
|
4
|
+
import type { Config } from '../../config/args.js';
|
|
5
|
+
import { type OptionsOf } from '../../config/options.js';
|
|
6
6
|
export declare const twakeGroupsOptions: {
|
|
7
|
-
twake_group_base: import("../../config/options").StringOption;
|
|
8
|
-
twake_group_user_base: import("../../config/options").StringOption;
|
|
9
|
-
twake_group_organization_dn: import("../../config/options").StringOption;
|
|
10
|
-
twake_group_organization_status_attribute: import("../../config/options").StringOption;
|
|
11
|
-
twake_group_organization_deleted_value: import("../../config/options").StringOption;
|
|
12
|
-
twake_group_display_name_attribute: import("../../config/options").StringOption;
|
|
13
|
-
twake_group_color_attribute: import("../../config/options").StringOption;
|
|
14
|
-
twake_group_created_at_attribute: import("../../config/options").StringOption;
|
|
15
|
-
twake_group_max_page_limit: import("../../config/options").NumberOption;
|
|
16
|
-
twake_group_member_fields: import("../../config/options").JsonOption<{}>;
|
|
7
|
+
twake_group_base: import("../../config/options.js").StringOption;
|
|
8
|
+
twake_group_user_base: import("../../config/options.js").StringOption;
|
|
9
|
+
twake_group_organization_dn: import("../../config/options.js").StringOption;
|
|
10
|
+
twake_group_organization_status_attribute: import("../../config/options.js").StringOption;
|
|
11
|
+
twake_group_organization_deleted_value: import("../../config/options.js").StringOption;
|
|
12
|
+
twake_group_display_name_attribute: import("../../config/options.js").StringOption;
|
|
13
|
+
twake_group_color_attribute: import("../../config/options.js").StringOption;
|
|
14
|
+
twake_group_created_at_attribute: import("../../config/options.js").StringOption;
|
|
15
|
+
twake_group_max_page_limit: import("../../config/options.js").NumberOption;
|
|
16
|
+
twake_group_member_fields: import("../../config/options.js").JsonOption<{}>;
|
|
17
17
|
};
|
|
18
18
|
export type TwakeGroupsOptions = OptionsOf<typeof twakeGroupsOptions>;
|
|
19
19
|
/** The checked values for a caller that holds a Config instead of the plugin */
|
|
@@ -1,42 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Twake instances options, see `docs/plugin-development/options.md`.
|
|
3
3
|
*/
|
|
4
|
-
import type { Config } from '../../config/args';
|
|
5
|
-
import { type OptionsOf } from '../../config/options';
|
|
4
|
+
import type { Config } from '../../config/args.js';
|
|
5
|
+
import { type OptionsOf } from '../../config/options.js';
|
|
6
6
|
export declare const twakeInstancesOptions: {
|
|
7
|
-
twake_instance_dn: import("../../config/options").ArrayOption;
|
|
8
|
-
twake_instance_skip_attribute: import("../../config/options").StringOption;
|
|
9
|
-
twake_instance_skip_value: import("../../config/options").StringOption;
|
|
10
|
-
twake_instance_provider: import("../../config/options").StringOption;
|
|
11
|
-
twake_instance_id: import("../../config/options").StringOption;
|
|
12
|
-
twake_instance_fqdn_attribute: import("../../config/options").StringOption;
|
|
13
|
-
twake_instance_sent_attribute: import("../../config/options").StringOption;
|
|
14
|
-
twake_instance_locale: import("../../config/options").StringOption;
|
|
15
|
-
twake_instance_timeout: import("../../config/options").NumberOption;
|
|
16
|
-
twake_instance_cloudery_url: import("../../config/options").StringOption;
|
|
17
|
-
twake_instance_cloudery_token: import("../../config/options").StringOption;
|
|
18
|
-
twake_instance_cloudery_offer: import("../../config/options").StringOption;
|
|
19
|
-
twake_instance_cloudery_domain: import("../../config/options").StringOption;
|
|
20
|
-
twake_instance_cloudery_organization_offer: import("../../config/options").StringOption;
|
|
21
|
-
twake_instance_cozy_url: import("../../config/options").StringOption;
|
|
22
|
-
twake_instance_cozy_user: import("../../config/options").StringOption;
|
|
23
|
-
twake_instance_cozy_passphrase: import("../../config/options").StringOption;
|
|
24
|
-
twake_instance_cozy_domain: import("../../config/options").StringOption;
|
|
25
|
-
twake_instance_cozy_context: import("../../config/options").StringOption;
|
|
26
|
-
twake_instance_cozy_apps: import("../../config/options").StringOption;
|
|
27
|
-
twake_instance_cozy_org_id: import("../../config/options").StringOption;
|
|
28
|
-
twake_instance_cozy_org_domain: import("../../config/options").StringOption;
|
|
29
|
-
twake_instance_auth_exchange: import("../../config/options").StringOption;
|
|
30
|
-
twake_instance_b2b_exchange: import("../../config/options").StringOption;
|
|
31
|
-
twake_instance_user_created_key: import("../../config/options").StringOption;
|
|
32
|
-
twake_instance_organization_created_key: import("../../config/options").StringOption;
|
|
33
|
-
twake_instance_workplace_created_key: import("../../config/options").StringOption;
|
|
34
|
-
twake_instance_queue: import("../../config/options").StringOption;
|
|
35
|
-
twake_instance_organization_base: import("../../config/options").StringOption;
|
|
36
|
-
twake_instance_organization_id_attribute: import("../../config/options").StringOption;
|
|
37
|
-
twake_instance_organization_domain_attribute: import("../../config/options").StringOption;
|
|
38
|
-
twake_instance_organization_name_attribute: import("../../config/options").StringOption;
|
|
39
|
-
twake_instance_organization_fqdn_attribute: import("../../config/options").StringOption;
|
|
7
|
+
twake_instance_dn: import("../../config/options.js").ArrayOption;
|
|
8
|
+
twake_instance_skip_attribute: import("../../config/options.js").StringOption;
|
|
9
|
+
twake_instance_skip_value: import("../../config/options.js").StringOption;
|
|
10
|
+
twake_instance_provider: import("../../config/options.js").StringOption;
|
|
11
|
+
twake_instance_id: import("../../config/options.js").StringOption;
|
|
12
|
+
twake_instance_fqdn_attribute: import("../../config/options.js").StringOption;
|
|
13
|
+
twake_instance_sent_attribute: import("../../config/options.js").StringOption;
|
|
14
|
+
twake_instance_locale: import("../../config/options.js").StringOption;
|
|
15
|
+
twake_instance_timeout: import("../../config/options.js").NumberOption;
|
|
16
|
+
twake_instance_cloudery_url: import("../../config/options.js").StringOption;
|
|
17
|
+
twake_instance_cloudery_token: import("../../config/options.js").StringOption;
|
|
18
|
+
twake_instance_cloudery_offer: import("../../config/options.js").StringOption;
|
|
19
|
+
twake_instance_cloudery_domain: import("../../config/options.js").StringOption;
|
|
20
|
+
twake_instance_cloudery_organization_offer: import("../../config/options.js").StringOption;
|
|
21
|
+
twake_instance_cozy_url: import("../../config/options.js").StringOption;
|
|
22
|
+
twake_instance_cozy_user: import("../../config/options.js").StringOption;
|
|
23
|
+
twake_instance_cozy_passphrase: import("../../config/options.js").StringOption;
|
|
24
|
+
twake_instance_cozy_domain: import("../../config/options.js").StringOption;
|
|
25
|
+
twake_instance_cozy_context: import("../../config/options.js").StringOption;
|
|
26
|
+
twake_instance_cozy_apps: import("../../config/options.js").StringOption;
|
|
27
|
+
twake_instance_cozy_org_id: import("../../config/options.js").StringOption;
|
|
28
|
+
twake_instance_cozy_org_domain: import("../../config/options.js").StringOption;
|
|
29
|
+
twake_instance_auth_exchange: import("../../config/options.js").StringOption;
|
|
30
|
+
twake_instance_b2b_exchange: import("../../config/options.js").StringOption;
|
|
31
|
+
twake_instance_user_created_key: import("../../config/options.js").StringOption;
|
|
32
|
+
twake_instance_organization_created_key: import("../../config/options.js").StringOption;
|
|
33
|
+
twake_instance_workplace_created_key: import("../../config/options.js").StringOption;
|
|
34
|
+
twake_instance_queue: import("../../config/options.js").StringOption;
|
|
35
|
+
twake_instance_organization_base: import("../../config/options.js").StringOption;
|
|
36
|
+
twake_instance_organization_id_attribute: import("../../config/options.js").StringOption;
|
|
37
|
+
twake_instance_organization_domain_attribute: import("../../config/options.js").StringOption;
|
|
38
|
+
twake_instance_organization_name_attribute: import("../../config/options.js").StringOption;
|
|
39
|
+
twake_instance_organization_fqdn_attribute: import("../../config/options.js").StringOption;
|
|
40
40
|
};
|
|
41
41
|
export type TwakeInstancesOptions = OptionsOf<typeof twakeInstancesOptions>;
|
|
42
42
|
/** The checked values for a caller that holds a Config instead of the plugin */
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
* Account lifecycle options, shared by the Twake lifecycle plugins. See
|
|
3
3
|
* `docs/plugin-development/options.md`.
|
|
4
4
|
*/
|
|
5
|
-
import type { Config } from '../../config/args';
|
|
6
|
-
import { type OptionsOf } from '../../config/options';
|
|
5
|
+
import type { Config } from '../../config/args.js';
|
|
6
|
+
import { type OptionsOf } from '../../config/options.js';
|
|
7
7
|
export declare const twakeLifecycleOptions: {
|
|
8
|
-
twake_lifecycle_role_attribute: import("../../config/options").StringOption;
|
|
9
|
-
twake_lifecycle_lock_attribute: import("../../config/options").StringOption;
|
|
10
|
-
twake_lifecycle_lock_value: import("../../config/options").StringOption;
|
|
11
|
-
twake_lifecycle_deleted_attribute: import("../../config/options").StringOption;
|
|
12
|
-
twake_lifecycle_deleted_value: import("../../config/options").StringOption;
|
|
13
|
-
twake_lifecycle_deleted_at_attribute: import("../../config/options").StringOption;
|
|
14
|
-
twake_lifecycle_deleted_at_format: import("../../config/options").StringOption;
|
|
15
|
-
twake_lifecycle_reason_attribute: import("../../config/options").StringOption;
|
|
16
|
-
twake_lifecycle_rules: import("../../config/options").StringOption;
|
|
17
|
-
twake_lifecycle_member_attribute: import("../../config/options").StringOption;
|
|
8
|
+
twake_lifecycle_role_attribute: import("../../config/options.js").StringOption;
|
|
9
|
+
twake_lifecycle_lock_attribute: import("../../config/options.js").StringOption;
|
|
10
|
+
twake_lifecycle_lock_value: import("../../config/options.js").StringOption;
|
|
11
|
+
twake_lifecycle_deleted_attribute: import("../../config/options.js").StringOption;
|
|
12
|
+
twake_lifecycle_deleted_value: import("../../config/options.js").StringOption;
|
|
13
|
+
twake_lifecycle_deleted_at_attribute: import("../../config/options.js").StringOption;
|
|
14
|
+
twake_lifecycle_deleted_at_format: import("../../config/options.js").StringOption;
|
|
15
|
+
twake_lifecycle_reason_attribute: import("../../config/options.js").StringOption;
|
|
16
|
+
twake_lifecycle_rules: import("../../config/options.js").StringOption;
|
|
17
|
+
twake_lifecycle_member_attribute: import("../../config/options.js").StringOption;
|
|
18
18
|
};
|
|
19
19
|
export type TwakeLifecycleOptions = OptionsOf<typeof twakeLifecycleOptions>;
|
|
20
20
|
/** The checked values for a caller that holds a Config instead of the plugin */
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Twake spaces options, see `docs/plugin-development/options.md`.
|
|
3
3
|
*/
|
|
4
|
-
import type { Config } from '../../config/args';
|
|
5
|
-
import { type OptionsOf } from '../../config/options';
|
|
4
|
+
import type { Config } from '../../config/args.js';
|
|
5
|
+
import { type OptionsOf } from '../../config/options.js';
|
|
6
6
|
export declare const twakeSpacesOptions: {
|
|
7
|
-
twake_space_base: import("../../config/options").StringOption;
|
|
8
|
-
twake_space_class: import("../../config/options").ArrayOption;
|
|
9
|
-
twake_space_display_name_attribute: import("../../config/options").StringOption;
|
|
10
|
-
twake_space_admin_attribute: import("../../config/options").StringOption;
|
|
11
|
-
twake_space_editor_attribute: import("../../config/options").StringOption;
|
|
12
|
-
twake_space_viewer_attribute: import("../../config/options").StringOption;
|
|
13
|
-
twake_space_user_role_attribute: import("../../config/options").StringOption;
|
|
14
|
-
twake_space_exchange: import("../../config/options").StringOption;
|
|
15
|
-
twake_space_sync_queue: import("../../config/options").StringOption;
|
|
7
|
+
twake_space_base: import("../../config/options.js").StringOption;
|
|
8
|
+
twake_space_class: import("../../config/options.js").ArrayOption;
|
|
9
|
+
twake_space_display_name_attribute: import("../../config/options.js").StringOption;
|
|
10
|
+
twake_space_admin_attribute: import("../../config/options.js").StringOption;
|
|
11
|
+
twake_space_editor_attribute: import("../../config/options.js").StringOption;
|
|
12
|
+
twake_space_viewer_attribute: import("../../config/options.js").StringOption;
|
|
13
|
+
twake_space_user_role_attribute: import("../../config/options.js").StringOption;
|
|
14
|
+
twake_space_exchange: import("../../config/options.js").StringOption;
|
|
15
|
+
twake_space_sync_queue: import("../../config/options.js").StringOption;
|
|
16
16
|
};
|
|
17
17
|
export type TwakeSpacesOptions = OptionsOf<typeof twakeSpacesOptions>;
|
|
18
18
|
/** The checked values for a caller that holds a Config instead of the plugin */
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Twake tombstone options, see `docs/plugin-development/options.md`.
|
|
3
3
|
*/
|
|
4
|
-
import type { Config } from '../../config/args';
|
|
5
|
-
import { type OptionsOf } from '../../config/options';
|
|
4
|
+
import type { Config } from '../../config/args.js';
|
|
5
|
+
import { type OptionsOf } from '../../config/options.js';
|
|
6
6
|
export declare const twakeTombstoneOptions: {
|
|
7
|
-
twake_tombstone_dn: import("../../config/options").ArrayOption;
|
|
8
|
-
twake_tombstone_default_reason: import("../../config/options").StringOption;
|
|
9
|
-
twake_tombstone_reason_header: import("../../config/options").StringOption;
|
|
10
|
-
twake_tombstone_reasons: import("../../config/options").ArrayOption;
|
|
11
|
-
twake_tombstone_clear_attributes: import("../../config/options").ArrayOption;
|
|
12
|
-
twake_tombstone_erase_min_age: import("../../config/options").NumberOption;
|
|
13
|
-
twake_tombstone_group_bases: import("../../config/options").ArrayOption;
|
|
7
|
+
twake_tombstone_dn: import("../../config/options.js").ArrayOption;
|
|
8
|
+
twake_tombstone_default_reason: import("../../config/options.js").StringOption;
|
|
9
|
+
twake_tombstone_reason_header: import("../../config/options.js").StringOption;
|
|
10
|
+
twake_tombstone_reasons: import("../../config/options.js").ArrayOption;
|
|
11
|
+
twake_tombstone_clear_attributes: import("../../config/options.js").ArrayOption;
|
|
12
|
+
twake_tombstone_erase_min_age: import("../../config/options.js").NumberOption;
|
|
13
|
+
twake_tombstone_group_bases: import("../../config/options.js").ArrayOption;
|
|
14
14
|
};
|
|
15
15
|
export type TwakeTombstoneOptions = OptionsOf<typeof twakeTombstoneOptions>;
|
|
16
16
|
/** The checked values for a caller that holds a Config instead of the plugin */
|
|
@@ -772,7 +772,12 @@ Attribute values must have the shape of their declared type, see
|
|
|
772
772
|
|
|
773
773
|
### Fixed Attributes
|
|
774
774
|
|
|
775
|
-
Attributes with `"fixed": true` cannot be modified after creation.
|
|
775
|
+
Attributes with `"fixed": true` cannot be modified after creation. A creation
|
|
776
|
+
that sends one **with a default** under an option (`l;lang-fr`, or an alias
|
|
777
|
+
such as `localityName;lang-fr`) is refused with `400`: the default is written
|
|
778
|
+
under the attribute's own name, and the option would add a second value beside
|
|
779
|
+
it. A fixed attribute without a default is set at creation and keeps its
|
|
780
|
+
options.
|
|
776
781
|
|
|
777
782
|
```json
|
|
778
783
|
{
|
|
@@ -45,6 +45,28 @@ The snapshot records what the parser reads. A narrowed `choices` list, a
|
|
|
45
45
|
raised `min` or a lowered `max` is checked when a plugin reads its options,
|
|
46
46
|
not by the snapshot, and is reviewed by hand, as is a custom error `code`.
|
|
47
47
|
|
|
48
|
+
## Resolution guard
|
|
49
|
+
|
|
50
|
+
The published package is `"type": "module"`, so a plugin compiled with
|
|
51
|
+
`moduleResolution: nodenext` resolves the declarations as Node resolves
|
|
52
|
+
JavaScript: every relative specifier needs its `.js` extension. The build
|
|
53
|
+
keeps them in the sources, and the declarations inherit them. TypeScript says
|
|
54
|
+
nothing about a specifier it cannot resolve in `node_modules`: it reports the
|
|
55
|
+
imported type as `any`, so a plugin loses type checking on the plugin API
|
|
56
|
+
without a warning.
|
|
57
|
+
|
|
58
|
+
`npm run lint` refuses an extensionless relative specifier under `src/` (the
|
|
59
|
+
`import-x/extensions` rule), so the mistake shows up locally. `npm run
|
|
60
|
+
check:declarations` then reads the built declarations for one, and type-checks
|
|
61
|
+
a small `nodenext` consumer against the package entries installed with only the
|
|
62
|
+
runtime dependencies: a type the declarations take from a devDependency is
|
|
63
|
+
missing there too. The consumer checks the library declarations themselves, so
|
|
64
|
+
a bare import they make must resolve even when the consumer names no type from
|
|
65
|
+
it. The build drops the browser sources' side-effect CSS imports from the
|
|
66
|
+
emitted declarations: they say nothing about the JavaScript API, and the
|
|
67
|
+
consumer has no CSS module for them. The check needs a build: run `npm run
|
|
68
|
+
build` first. The `test` workflow runs it after the build.
|
|
69
|
+
|
|
48
70
|
## The pull request gate
|
|
49
71
|
|
|
50
72
|
The `contracts` job of `.github/workflows/contracts.yml` generates the
|
package/docs/presentations/en.md
CHANGED
|
@@ -432,7 +432,7 @@ docker run -p 8081:8081 ldap-rest
|
|
|
432
432
|
## Create a Custom Plugin
|
|
433
433
|
|
|
434
434
|
```typescript
|
|
435
|
-
import DmPlugin from 'ldap-rest/plugin
|
|
435
|
+
import DmPlugin from 'ldap-rest/plugin';
|
|
436
436
|
import { Hooks } from 'ldap-rest/hooks';
|
|
437
437
|
|
|
438
438
|
export default class CustomPlugin extends DmPlugin {
|
package/docs/presentations/fr.md
CHANGED
|
@@ -432,7 +432,7 @@ docker run -p 8081:8081 ldap-rest
|
|
|
432
432
|
## Créer un plugin personnalisé
|
|
433
433
|
|
|
434
434
|
```typescript
|
|
435
|
-
import DmPlugin from 'ldap-rest/plugin
|
|
435
|
+
import DmPlugin from 'ldap-rest/plugin';
|
|
436
436
|
import { Hooks } from 'ldap-rest/hooks';
|
|
437
437
|
|
|
438
438
|
export default class CustomPlugin extends DmPlugin {
|
|
@@ -122,7 +122,9 @@ description: {
|
|
|
122
122
|
target DNs are compared RDN by RDN, so case, spacing, escapes, `;`
|
|
123
123
|
separators and attribute-type spellings (`ou`, `2.5.4.11`, `OID.2.5.4.11`)
|
|
124
124
|
do not matter; an escaped comma is part of a value, never a separator.
|
|
125
|
-
-
|
|
125
|
+
- Only the JSON boolean `true` grants a permission. An absent flag, or one
|
|
126
|
+
written as anything else (a string such as `"false"` or `"true"`, a
|
|
127
|
+
number), is `false`; a non-boolean flag is logged as a warning.
|
|
126
128
|
- `tenant` is optional; if omitted, `req.user` falls back to the value of the
|
|
127
129
|
configured `tenantAttribute` (default `cn`).
|
|
128
130
|
|
|
@@ -39,7 +39,17 @@ DM_TRUSTED_PROXY_AUTH_HEADER="Auth-User"
|
|
|
39
39
|
- **IPv4 addresses:** `192.168.1.1`
|
|
40
40
|
- **IPv6 addresses:** `::1`, `fe80::1`
|
|
41
41
|
- **CIDR ranges:** `10.0.0.0/8`, `192.168.0.0/16`, `2001:db8::/32`
|
|
42
|
-
- **IPv4-mapped IPv6:**
|
|
42
|
+
- **IPv4-mapped IPv6:** accepted in any spelling, e.g. `::ffff:127.0.0.1` or
|
|
43
|
+
`::ffff:7f00:1` matches `127.0.0.1`. A network written in mapped form is
|
|
44
|
+
checked as the IPv4 network it is: `::ffff:10.0.0.0/104` is `10.0.0.0/8`.
|
|
45
|
+
- **Zone index:** a peer address carrying an interface, such as
|
|
46
|
+
`fe80::1%eth0`, is matched on the address alone. A trusted entry carrying
|
|
47
|
+
one is refused: the same link-local address names another host on another
|
|
48
|
+
link.
|
|
49
|
+
|
|
50
|
+
An entry that is neither an address nor an `address/prefix` network (`:::`,
|
|
51
|
+
`10.0.0.0/2.`, `10.0.0.0/24x`) makes the server refuse to start: it would
|
|
52
|
+
otherwise trust a network the administrator never wrote.
|
|
43
53
|
|
|
44
54
|
## Auth-User Header
|
|
45
55
|
|