ldap-rest 0.0.1
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/LICENSE +661 -0
- package/README.md +48 -0
- package/bin/cleanup-external-users.mjs +219 -0
- package/bin/index.mjs +54 -0
- package/bin/sync-james.mjs +190 -0
- package/dist/abstract/ldapFlat.js +1 -0
- package/dist/abstract/plugin.js +1 -0
- package/dist/abstract/twakePlugin.js +1 -0
- package/dist/bin/index.js +1 -0
- package/dist/config/args.js +1 -0
- package/dist/lib/auth/base.js +1 -0
- package/dist/lib/authz/base.js +1 -0
- package/dist/lib/expressFormatedResponses.js +1 -0
- package/dist/lib/ldapActions.js +1 -0
- package/dist/lib/parseConfig.js +1 -0
- package/dist/lib/utils.js +1 -0
- package/dist/logger/winston.js +1 -0
- package/dist/plugins/auth/authzLinid1.js +1 -0
- package/dist/plugins/auth/authzPerBranch.js +1 -0
- package/dist/plugins/auth/crowdsec.js +1 -0
- package/dist/plugins/auth/llng.js +1 -0
- package/dist/plugins/auth/openidconnect.js +1 -0
- package/dist/plugins/auth/rateLimit.js +1 -0
- package/dist/plugins/auth/token.js +1 -0
- package/dist/plugins/configApi.js +1 -0
- package/dist/plugins/demo/helloworld.js +1 -0
- package/dist/plugins/ldap/bulkImport.js +1 -0
- package/dist/plugins/ldap/departmentSync.js +1 -0
- package/dist/plugins/ldap/externalUsersInGroups.js +1 -0
- package/dist/plugins/ldap/flatGeneric.js +1 -0
- package/dist/plugins/ldap/groups.js +1 -0
- package/dist/plugins/ldap/onChange.js +1 -0
- package/dist/plugins/ldap/organization.js +1 -0
- package/dist/plugins/ldap/trash.js +1 -0
- package/dist/plugins/priority.json.js +1 -0
- package/dist/plugins/static.js +1 -0
- package/dist/plugins/twake/calendarResources.js +1 -0
- package/dist/plugins/twake/james.js +1 -0
- package/dist/plugins/weblogs.js +1 -0
- package/dist/src/abstract/ldapFlat.d.ts +94 -0
- package/dist/src/abstract/plugin.d.ts +43 -0
- package/dist/src/abstract/twakePlugin.d.ts +90 -0
- package/dist/src/bin/index.d.ts +43 -0
- package/dist/src/browser/ldap-group-editor/LdapGroupEditor.d.ts +31 -0
- package/dist/src/browser/ldap-group-editor/api/GroupApiClient.d.ts +23 -0
- package/dist/src/browser/ldap-group-editor/components/CreateGroupModal.d.ts +19 -0
- package/dist/src/browser/ldap-group-editor/components/GroupPropertyEditor.d.ts +30 -0
- package/dist/src/browser/ldap-group-editor/components/GroupTree.d.ts +17 -0
- package/dist/src/browser/ldap-group-editor/components/MoveGroupModal.d.ts +20 -0
- package/dist/src/browser/ldap-group-editor/index.d.ts +6 -0
- package/dist/src/browser/ldap-group-editor/types.d.ts +58 -0
- package/dist/src/browser/ldap-resource-editor/api/ResourceApiClient.d.ts +53 -0
- package/dist/src/browser/ldap-resource-editor/cache/CacheManager.d.ts +65 -0
- package/dist/src/browser/ldap-resource-editor/index.d.ts +6 -0
- package/dist/src/browser/ldap-resource-editor/types.d.ts +78 -0
- package/dist/src/browser/ldap-tree-viewer/LdapTreeViewer.d.ts +26 -0
- package/dist/src/browser/ldap-tree-viewer/api/LdapApiClient.d.ts +30 -0
- package/dist/src/browser/ldap-tree-viewer/components/TreeNode.d.ts +17 -0
- package/dist/src/browser/ldap-tree-viewer/components/TreeRoot.d.ts +14 -0
- package/dist/src/browser/ldap-tree-viewer/index.d.ts +7 -0
- package/dist/src/browser/ldap-tree-viewer/store/Store.d.ts +18 -0
- package/dist/src/browser/ldap-tree-viewer/store/actions.d.ts +28 -0
- package/dist/src/browser/ldap-tree-viewer/store/reducers.d.ts +7 -0
- package/dist/src/browser/ldap-tree-viewer/types.d.ts +34 -0
- package/dist/src/browser/ldap-unit-editor/LdapUnitEditor.d.ts +27 -0
- package/dist/src/browser/ldap-unit-editor/api/UnitApiClient.d.ts +24 -0
- package/dist/src/browser/ldap-unit-editor/components/MoveUnitModal.d.ts +28 -0
- package/dist/src/browser/ldap-unit-editor/components/UnitPropertyEditor.d.ts +28 -0
- package/dist/src/browser/ldap-unit-editor/components/UnitTree.d.ts +18 -0
- package/dist/src/browser/ldap-unit-editor/index.d.ts +6 -0
- package/dist/src/browser/ldap-unit-editor/types.d.ts +55 -0
- package/dist/src/browser/ldap-user-editor/LdapUserEditor.d.ts +32 -0
- package/dist/src/browser/ldap-user-editor/api/UserApiClient.d.ts +55 -0
- package/dist/src/browser/ldap-user-editor/cache/CacheManager.d.ts +65 -0
- package/dist/src/browser/ldap-user-editor/components/MoveUserModal.d.ts +28 -0
- package/dist/src/browser/ldap-user-editor/components/PointerField.d.ts +22 -0
- package/dist/src/browser/ldap-user-editor/components/UserEditor.d.ts +46 -0
- package/dist/src/browser/ldap-user-editor/components/UserList.d.ts +24 -0
- package/dist/src/browser/ldap-user-editor/components/UserTree.d.ts +24 -0
- package/dist/src/browser/ldap-user-editor/index.d.ts +7 -0
- package/dist/src/browser/ldap-user-editor/types.d.ts +67 -0
- package/dist/src/browser/shared/components/Modal.d.ts +38 -0
- package/dist/src/browser/shared/components/StatusMessage.d.ts +48 -0
- package/dist/src/browser/shared/index.d.ts +10 -0
- package/dist/src/browser/shared/types/index.d.ts +65 -0
- package/dist/src/browser/shared/utils/dom.d.ts +33 -0
- package/dist/src/browser/shared/utils/form.d.ts +28 -0
- package/dist/src/browser/shared/utils/schema.d.ts +29 -0
- package/dist/src/config/args.d.ts +128 -0
- package/dist/src/config/schema.d.ts +18 -0
- package/dist/src/hooks.d.ts +76 -0
- package/dist/src/lib/auth/base.d.ts +9 -0
- package/dist/src/lib/authz/base.d.ts +63 -0
- package/dist/src/lib/expressFormatedResponses.d.ts +26 -0
- package/dist/src/lib/ldapActions.d.ts +91 -0
- package/dist/src/lib/parseConfig.d.ts +23 -0
- package/dist/src/lib/utils.d.ts +73 -0
- package/dist/src/logger/winston.d.ts +3 -0
- package/dist/src/plugins/auth/authzLinid1.d.ts +46 -0
- package/dist/src/plugins/auth/authzPerBranch.d.ts +59 -0
- package/dist/src/plugins/auth/crowdsec.d.ts +29 -0
- package/dist/src/plugins/auth/llng.d.ts +8 -0
- package/dist/src/plugins/auth/openidconnect.d.ts +11 -0
- package/dist/src/plugins/auth/rateLimit.d.ts +24 -0
- package/dist/src/plugins/auth/token.d.ts +17 -0
- package/dist/src/plugins/configApi.d.ts +24 -0
- package/dist/src/plugins/demo/helloworld.d.ts +12 -0
- package/dist/src/plugins/ldap/bulkImport.d.ts +48 -0
- package/dist/src/plugins/ldap/departmentSync.d.ts +35 -0
- package/dist/src/plugins/ldap/externalUsersInGroups.d.ts +21 -0
- package/dist/src/plugins/ldap/flatGeneric.d.ts +31 -0
- package/dist/src/plugins/ldap/groups.d.ts +95 -0
- package/dist/src/plugins/ldap/onChange.d.ts +32 -0
- package/dist/src/plugins/ldap/organization.d.ts +65 -0
- package/dist/src/plugins/ldap/trash.d.ts +52 -0
- package/dist/src/plugins/static.d.ts +7 -0
- package/dist/src/plugins/twake/calendarResources.d.ts +31 -0
- package/dist/src/plugins/twake/james.d.ts +83 -0
- package/dist/src/plugins/weblogs.d.ts +8 -0
- package/docs/DEVELOPER_GUIDE.md +298 -0
- package/docs/OPENAPI.md +440 -0
- package/docs/PLUGIN_DEPENDENCIES.md +612 -0
- package/docs/README.md +466 -0
- package/docs/api/REFERENCE.md +983 -0
- package/docs/api/REST_API.md +1237 -0
- package/docs/authentication.md +469 -0
- package/docs/authzLinid1.md +521 -0
- package/docs/authzPerBranch.md +596 -0
- package/docs/browser/LIBRARIES.md +1196 -0
- package/docs/examples/EXAMPLES.md +1659 -0
- package/docs/examples/twake-mailbox-type-nomenclature.ldif +37 -0
- package/docs/examples/twake-mailbox-type-schema-amendment.ldif +30 -0
- package/docs/jamesTeamMailboxes.md +343 -0
- package/docs/ldapBulkImport.md +722 -0
- package/docs/ldapExternalUsersInGroups.md +325 -0
- package/docs/ldapFlatGeneric.md +444 -0
- package/docs/ldapGroups.md +589 -0
- package/docs/ldapOrganizations.md +659 -0
- package/docs/ldapTrash.md +260 -0
- package/docs/linagora.png +0 -0
- package/docs/onChange.md +318 -0
- package/docs/plugins/DEVELOPMENT.md +1219 -0
- package/docs/presenterm-fr.md +721 -0
- package/docs/presenterm.md +721 -0
- package/docs/schemas/SCHEMAS.md +1212 -0
- package/docs/static.md +410 -0
- package/docs/twakeCalendarResources.md +148 -0
- package/docs/twakeJames.md +661 -0
- package/docs/weblogs.md +399 -0
- package/examples/web/ldap-group-editor.html +113 -0
- package/examples/web/ldap-tree-viewer.html +368 -0
- package/examples/web/ldap-unit-editor.html +108 -0
- package/examples/web/ldap-user-editor.html +412 -0
- package/package.json +458 -0
- package/static/browser/common-demo.css +450 -0
- package/static/browser/ldap-group-editor/LdapGroupEditor.js +207 -0
- package/static/browser/ldap-group-editor/LdapGroupEditor.js.map +1 -0
- package/static/browser/ldap-group-editor/api/GroupApiClient.js +112 -0
- package/static/browser/ldap-group-editor/api/GroupApiClient.js.map +1 -0
- package/static/browser/ldap-group-editor/components/CreateGroupModal.js +212 -0
- package/static/browser/ldap-group-editor/components/CreateGroupModal.js.map +1 -0
- package/static/browser/ldap-group-editor/components/GroupPropertyEditor.js +497 -0
- package/static/browser/ldap-group-editor/components/GroupPropertyEditor.js.map +1 -0
- package/static/browser/ldap-group-editor/components/GroupTree.js +153 -0
- package/static/browser/ldap-group-editor/components/GroupTree.js.map +1 -0
- package/static/browser/ldap-group-editor/components/MoveGroupModal.js +235 -0
- package/static/browser/ldap-group-editor/components/MoveGroupModal.js.map +1 -0
- package/static/browser/ldap-group-editor/index.js +2 -0
- package/static/browser/ldap-group-editor/index.js.map +1 -0
- package/static/browser/ldap-group-editor/types.js +2 -0
- package/static/browser/ldap-group-editor/types.js.map +1 -0
- package/static/browser/ldap-group-editor.esm.js +1399 -0
- package/static/browser/ldap-group-editor.esm.js.map +1 -0
- package/static/browser/ldap-group-editor.js +1407 -0
- package/static/browser/ldap-group-editor.js.map +1 -0
- package/static/browser/ldap-group-editor.min.js +2 -0
- package/static/browser/ldap-group-editor.min.js.map +1 -0
- package/static/browser/ldap-resource-editor/api/ResourceApiClient.js +226 -0
- package/static/browser/ldap-resource-editor/api/ResourceApiClient.js.map +1 -0
- package/static/browser/ldap-resource-editor/cache/CacheManager.js +123 -0
- package/static/browser/ldap-resource-editor/cache/CacheManager.js.map +1 -0
- package/static/browser/ldap-resource-editor/index.js +2 -0
- package/static/browser/ldap-resource-editor/index.js.map +1 -0
- package/static/browser/ldap-resource-editor/types.js +2 -0
- package/static/browser/ldap-resource-editor/types.js.map +1 -0
- package/static/browser/ldap-tree-viewer/LdapTreeViewer.js +187 -0
- package/static/browser/ldap-tree-viewer/LdapTreeViewer.js.map +1 -0
- package/static/browser/ldap-tree-viewer/api/LdapApiClient.js +50 -0
- package/static/browser/ldap-tree-viewer/api/LdapApiClient.js.map +1 -0
- package/static/browser/ldap-tree-viewer/components/TreeNode.js +140 -0
- package/static/browser/ldap-tree-viewer/components/TreeNode.js.map +1 -0
- package/static/browser/ldap-tree-viewer/components/TreeRoot.js +98 -0
- package/static/browser/ldap-tree-viewer/components/TreeRoot.js.map +1 -0
- package/static/browser/ldap-tree-viewer/index.js +2 -0
- package/static/browser/ldap-tree-viewer/index.js.map +1 -0
- package/static/browser/ldap-tree-viewer/store/Store.js +29 -0
- package/static/browser/ldap-tree-viewer/store/Store.js.map +1 -0
- package/static/browser/ldap-tree-viewer/store/actions.js +53 -0
- package/static/browser/ldap-tree-viewer/store/actions.js.map +1 -0
- package/static/browser/ldap-tree-viewer/store/reducers.js +79 -0
- package/static/browser/ldap-tree-viewer/store/reducers.js.map +1 -0
- package/static/browser/ldap-tree-viewer/types.js +2 -0
- package/static/browser/ldap-tree-viewer/types.js.map +1 -0
- package/static/browser/ldap-tree-viewer.css +2 -0
- package/static/browser/ldap-tree-viewer.css.map +1 -0
- package/static/browser/ldap-tree-viewer.esm.js +606 -0
- package/static/browser/ldap-tree-viewer.esm.js.map +1 -0
- package/static/browser/ldap-tree-viewer.js +614 -0
- package/static/browser/ldap-tree-viewer.js.map +1 -0
- package/static/browser/ldap-tree-viewer.min.js +2 -0
- package/static/browser/ldap-tree-viewer.min.js.map +1 -0
- package/static/browser/ldap-unit-editor/LdapUnitEditor.js +119 -0
- package/static/browser/ldap-unit-editor/LdapUnitEditor.js.map +1 -0
- package/static/browser/ldap-unit-editor/api/UnitApiClient.js +95 -0
- package/static/browser/ldap-unit-editor/api/UnitApiClient.js.map +1 -0
- package/static/browser/ldap-unit-editor/components/MoveUnitModal.js +295 -0
- package/static/browser/ldap-unit-editor/components/MoveUnitModal.js.map +1 -0
- package/static/browser/ldap-unit-editor/components/UnitPropertyEditor.js +321 -0
- package/static/browser/ldap-unit-editor/components/UnitPropertyEditor.js.map +1 -0
- package/static/browser/ldap-unit-editor/components/UnitTree.js +197 -0
- package/static/browser/ldap-unit-editor/components/UnitTree.js.map +1 -0
- package/static/browser/ldap-unit-editor/index.js +2 -0
- package/static/browser/ldap-unit-editor/index.js.map +1 -0
- package/static/browser/ldap-unit-editor/types.js +2 -0
- package/static/browser/ldap-unit-editor/types.js.map +1 -0
- package/static/browser/ldap-unit-editor.esm.js +1013 -0
- package/static/browser/ldap-unit-editor.esm.js.map +1 -0
- package/static/browser/ldap-unit-editor.js +1021 -0
- package/static/browser/ldap-unit-editor.js.map +1 -0
- package/static/browser/ldap-unit-editor.min.js +2 -0
- package/static/browser/ldap-unit-editor.min.js.map +1 -0
- package/static/browser/ldap-user-editor/LdapUserEditor.js +184 -0
- package/static/browser/ldap-user-editor/LdapUserEditor.js.map +1 -0
- package/static/browser/ldap-user-editor/api/UserApiClient.js +209 -0
- package/static/browser/ldap-user-editor/api/UserApiClient.js.map +1 -0
- package/static/browser/ldap-user-editor/cache/CacheManager.js +123 -0
- package/static/browser/ldap-user-editor/cache/CacheManager.js.map +1 -0
- package/static/browser/ldap-user-editor/components/MoveUserModal.js +302 -0
- package/static/browser/ldap-user-editor/components/MoveUserModal.js.map +1 -0
- package/static/browser/ldap-user-editor/components/PointerField.js +152 -0
- package/static/browser/ldap-user-editor/components/PointerField.js.map +1 -0
- package/static/browser/ldap-user-editor/components/UserEditor.js +608 -0
- package/static/browser/ldap-user-editor/components/UserEditor.js.map +1 -0
- package/static/browser/ldap-user-editor/components/UserList.js +181 -0
- package/static/browser/ldap-user-editor/components/UserList.js.map +1 -0
- package/static/browser/ldap-user-editor/components/UserTree.js +164 -0
- package/static/browser/ldap-user-editor/components/UserTree.js.map +1 -0
- package/static/browser/ldap-user-editor/index.js +2 -0
- package/static/browser/ldap-user-editor/index.js.map +1 -0
- package/static/browser/ldap-user-editor/types.js +2 -0
- package/static/browser/ldap-user-editor/types.js.map +1 -0
- package/static/browser/ldap-user-editor.css +2 -0
- package/static/browser/ldap-user-editor.css.map +1 -0
- package/static/browser/ldap-user-editor.esm.js +1897 -0
- package/static/browser/ldap-user-editor.esm.js.map +1 -0
- package/static/browser/ldap-user-editor.js +1905 -0
- package/static/browser/ldap-user-editor.js.map +1 -0
- package/static/browser/ldap-user-editor.min.js +2 -0
- package/static/browser/ldap-user-editor.min.js.map +1 -0
- package/static/browser/shared/components/Modal.js +121 -0
- package/static/browser/shared/components/Modal.js.map +1 -0
- package/static/browser/shared/components/StatusMessage.js +119 -0
- package/static/browser/shared/components/StatusMessage.js.map +1 -0
- package/static/browser/shared/index.js +7 -0
- package/static/browser/shared/index.js.map +1 -0
- package/static/browser/shared/types/index.js +37 -0
- package/static/browser/shared/types/index.js.map +1 -0
- package/static/browser/shared/utils/dom.js +78 -0
- package/static/browser/shared/utils/dom.js.map +1 -0
- package/static/browser/shared/utils/form.js +234 -0
- package/static/browser/shared/utils/form.js.map +1 -0
- package/static/browser/shared/utils/schema.js +121 -0
- package/static/browser/shared/utils/schema.js.map +1 -0
- package/static/browser/shared.esm.js +694 -0
- package/static/browser/shared.esm.js.map +1 -0
- package/static/browser/shared.js +723 -0
- package/static/browser/shared.js.map +1 -0
- package/static/browser/shared.min.js +2 -0
- package/static/browser/shared.min.js.map +1 -0
- package/static/schemas/ad/computers.json +92 -0
- package/static/schemas/ad/groups.json +55 -0
- package/static/schemas/ad/organizations.json +66 -0
- package/static/schemas/ad/users.json +116 -0
- package/static/schemas/standard/devices.json +72 -0
- package/static/schemas/standard/groups.json +54 -0
- package/static/schemas/standard/organizations.json +49 -0
- package/static/schemas/standard/users.json +86 -0
- package/static/schemas/twake/groups.json +75 -0
- package/static/schemas/twake/nomenclature/twakeAccountStatus.json +31 -0
- package/static/schemas/twake/nomenclature/twakeDeliveryMode.json +31 -0
- package/static/schemas/twake/nomenclature/twakeListType.json +31 -0
- package/static/schemas/twake/nomenclature/twakeMailboxType.json +31 -0
- package/static/schemas/twake/nomenclature/twakeTitle.json +31 -0
- package/static/schemas/twake/organizations.json +52 -0
- package/static/schemas/twake/positions.json +32 -0
- package/static/schemas/twake/users.json +112 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
# Developer Guide - LDAP-Rest
|
|
2
|
+
|
|
3
|
+
Welcome to the LDAP-Rest Developer Guide! This guide helps you build web applications using LDAP-Rest's APIs and libraries.
|
|
4
|
+
|
|
5
|
+
## Quick Links
|
|
6
|
+
|
|
7
|
+
### 🚀 Getting Started
|
|
8
|
+
|
|
9
|
+
- [Introduction & Architecture](#introduction)
|
|
10
|
+
- [Quick Start Guide](#quick-start)
|
|
11
|
+
|
|
12
|
+
### 📚 Core Documentation
|
|
13
|
+
|
|
14
|
+
- **[REST API Documentation](./api/REST_API.md)** - Complete API reference (Config, Users, Groups, Organizations)
|
|
15
|
+
- **[Browser Libraries](./browser/LIBRARIES.md)** - LdapTreeViewer and LdapUserEditor
|
|
16
|
+
- **[JSON Schemas](./schemas/SCHEMAS.md)** - Schema structure and validation
|
|
17
|
+
- **[Integration Examples](./examples/EXAMPLES.md)** - React, Vue.js, Vanilla JavaScript examples
|
|
18
|
+
- **[Plugin Development](./plugins/DEVELOPMENT.md)** - Create your own plugins
|
|
19
|
+
|
|
20
|
+
### 🔧 Reference
|
|
21
|
+
|
|
22
|
+
- **[API Reference](./api/REFERENCE.md)** - Complete API reference with all endpoints
|
|
23
|
+
- [Authentication](./api/REST_API.md#authentication) - OpenID, Token, LemonLDAP::NG
|
|
24
|
+
- [Troubleshooting](./api/REFERENCE.md#troubleshooting) - Common issues and solutions
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Introduction
|
|
29
|
+
|
|
30
|
+
LDAP-Rest is a lightweight LDAP directory manager that provides:
|
|
31
|
+
|
|
32
|
+
- **Complete REST API** for managing LDAP users, groups, and organizations
|
|
33
|
+
- **Ready-to-use browser libraries** in JavaScript/TypeScript
|
|
34
|
+
- **Schema-driven architecture** to adapt to different directory types (Twake, Active Directory, standard LDAP)
|
|
35
|
+
- **Dynamic configuration** exposed via API
|
|
36
|
+
- **Plugin-based extensibility** for custom functionality
|
|
37
|
+
|
|
38
|
+
### Architecture Overview
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
┌─────────────────────────────────────┐
|
|
42
|
+
│ Your Web Application │
|
|
43
|
+
│ │
|
|
44
|
+
│ ┌───────────────────────────────┐ │
|
|
45
|
+
│ │ Browser Libraries │ │
|
|
46
|
+
│ │ - LdapTreeViewer │ │
|
|
47
|
+
│ │ - LdapUserEditor │ │
|
|
48
|
+
│ └───────────────────────────────┘ │
|
|
49
|
+
│ ↓ HTTP │
|
|
50
|
+
└─────────────────────────────────────┘
|
|
51
|
+
↓
|
|
52
|
+
┌─────────────────────────────────────┐
|
|
53
|
+
│ LDAP-Rest Server │
|
|
54
|
+
│ │
|
|
55
|
+
│ ┌───────────────────────────────┐ │
|
|
56
|
+
│ │ REST API │ │
|
|
57
|
+
│ │ - /api/v1/config │ │
|
|
58
|
+
│ │ - /api/v1/ldap/users │ │
|
|
59
|
+
│ │ - /api/v1/ldap/groups │ │
|
|
60
|
+
│ │ - /api/v1/ldap/organizations │ │
|
|
61
|
+
│ └───────────────────────────────┘ │
|
|
62
|
+
│ ↓ │
|
|
63
|
+
│ ┌───────────────────────────────┐ │
|
|
64
|
+
│ │ Plugins │ │
|
|
65
|
+
│ │ - configApi │ │
|
|
66
|
+
│ │ - ldapFlatGeneric │ │
|
|
67
|
+
│ │ - ldapGroups │ │
|
|
68
|
+
│ │ - ldapOrganizations │ │
|
|
69
|
+
│ └───────────────────────────────┘ │
|
|
70
|
+
│ ↓ │
|
|
71
|
+
└─────────────────────────────────────┘
|
|
72
|
+
↓
|
|
73
|
+
┌─────────────────────────────────────┐
|
|
74
|
+
│ LDAP Directory Server │
|
|
75
|
+
│ (OpenLDAP, AD, 389 Directory...) │
|
|
76
|
+
└─────────────────────────────────────┘
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Quick Start
|
|
82
|
+
|
|
83
|
+
### 1. Start LDAP-Rest Server
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
npx ldap-rest \
|
|
87
|
+
--ldap-base 'dc=example,dc=com' \
|
|
88
|
+
--ldap-url 'ldap://localhost:389' \
|
|
89
|
+
--ldap-dn 'cn=admin,dc=example,dc=com' \
|
|
90
|
+
--ldap-pwd 'admin' \
|
|
91
|
+
--plugin core/configApi \
|
|
92
|
+
--plugin core/ldap/flatGeneric \
|
|
93
|
+
--ldap-flat-schema ./static/schemas/standard/users.json \
|
|
94
|
+
--plugin core/static \
|
|
95
|
+
--static-path ./static
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 2. Access the Configuration API
|
|
99
|
+
|
|
100
|
+
```javascript
|
|
101
|
+
const config = await fetch('http://localhost:8081/api/v1/config').then(r =>
|
|
102
|
+
r.json()
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
console.log(config);
|
|
106
|
+
// {
|
|
107
|
+
// "apiPrefix": "/api",
|
|
108
|
+
// "ldapBase": "dc=example,dc=com",
|
|
109
|
+
// "features": { ... }
|
|
110
|
+
// }
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 3. Use the Browser Libraries
|
|
114
|
+
|
|
115
|
+
```html
|
|
116
|
+
<!DOCTYPE html>
|
|
117
|
+
<html>
|
|
118
|
+
<head>
|
|
119
|
+
<link rel="stylesheet" href="/static/browser/ldap-user-editor.css" />
|
|
120
|
+
<link
|
|
121
|
+
href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap"
|
|
122
|
+
rel="stylesheet"
|
|
123
|
+
/>
|
|
124
|
+
<link
|
|
125
|
+
href="https://fonts.googleapis.com/icon?family=Material+Icons"
|
|
126
|
+
rel="stylesheet"
|
|
127
|
+
/>
|
|
128
|
+
</head>
|
|
129
|
+
<body>
|
|
130
|
+
<div id="editor"></div>
|
|
131
|
+
|
|
132
|
+
<script src="/static/browser/ldap-user-editor.js"></script>
|
|
133
|
+
<script>
|
|
134
|
+
const { LdapUserEditor } = window.LdapUserEditor;
|
|
135
|
+
|
|
136
|
+
const editor = new LdapUserEditor({
|
|
137
|
+
containerId: 'editor',
|
|
138
|
+
apiBaseUrl: window.location.origin,
|
|
139
|
+
onUserSaved: dn => console.log('Saved:', dn),
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
editor.init();
|
|
143
|
+
</script>
|
|
144
|
+
</body>
|
|
145
|
+
</html>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Documentation Structure
|
|
151
|
+
|
|
152
|
+
### API Documentation
|
|
153
|
+
|
|
154
|
+
- **[REST API Guide](./api/REST_API.md)**
|
|
155
|
+
- Configuration API
|
|
156
|
+
- Organizations API
|
|
157
|
+
- Users API
|
|
158
|
+
- Groups API
|
|
159
|
+
- Authentication
|
|
160
|
+
|
|
161
|
+
- **[Complete API Reference](./api/REFERENCE.md)**
|
|
162
|
+
- All endpoints with examples
|
|
163
|
+
- Request/response formats
|
|
164
|
+
- Error codes
|
|
165
|
+
- LDAP modify format
|
|
166
|
+
|
|
167
|
+
### Browser Libraries
|
|
168
|
+
|
|
169
|
+
- **[Browser Libraries Guide](./browser/LIBRARIES.md)**
|
|
170
|
+
- LdapTreeViewer - Interactive LDAP tree
|
|
171
|
+
- LdapUserEditor - Complete user editor
|
|
172
|
+
- Configuration options
|
|
173
|
+
- API methods
|
|
174
|
+
- Customization
|
|
175
|
+
|
|
176
|
+
### Schemas
|
|
177
|
+
|
|
178
|
+
- **[JSON Schemas Guide](./schemas/SCHEMAS.md)**
|
|
179
|
+
- Schema structure
|
|
180
|
+
- Entity metadata
|
|
181
|
+
- Attribute types
|
|
182
|
+
- Semantic roles
|
|
183
|
+
- Validation rules
|
|
184
|
+
- Predefined schemas
|
|
185
|
+
|
|
186
|
+
### Integration
|
|
187
|
+
|
|
188
|
+
- **[Integration Examples](./examples/EXAMPLES.md)**
|
|
189
|
+
- React application
|
|
190
|
+
- Vue.js application
|
|
191
|
+
- Vanilla JavaScript
|
|
192
|
+
- Group management
|
|
193
|
+
- Custom components
|
|
194
|
+
|
|
195
|
+
### Plugin Development
|
|
196
|
+
|
|
197
|
+
- **[Plugin Development Guide](./plugins/DEVELOPMENT.md)**
|
|
198
|
+
- Creating plugins
|
|
199
|
+
- Custom configuration
|
|
200
|
+
- Hooks system
|
|
201
|
+
- LDAP operations
|
|
202
|
+
- API endpoints
|
|
203
|
+
- Testing
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Key Concepts
|
|
208
|
+
|
|
209
|
+
### Schema-Driven Architecture
|
|
210
|
+
|
|
211
|
+
LDAP-Rest uses JSON schemas to define LDAP entity structure:
|
|
212
|
+
|
|
213
|
+
```json
|
|
214
|
+
{
|
|
215
|
+
"entity": {
|
|
216
|
+
"name": "users",
|
|
217
|
+
"mainAttribute": "uid",
|
|
218
|
+
"objectClass": ["top", "person", "inetOrgPerson"],
|
|
219
|
+
"base": "ou=users,{ldap_base}"
|
|
220
|
+
},
|
|
221
|
+
"attributes": {
|
|
222
|
+
"uid": {
|
|
223
|
+
"type": "string",
|
|
224
|
+
"required": true,
|
|
225
|
+
"role": "identifier"
|
|
226
|
+
},
|
|
227
|
+
"cn": {
|
|
228
|
+
"type": "string",
|
|
229
|
+
"required": true,
|
|
230
|
+
"role": "displayName"
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
See [JSON Schemas Guide](./schemas/SCHEMAS.md) for details.
|
|
237
|
+
|
|
238
|
+
### Dynamic Configuration
|
|
239
|
+
|
|
240
|
+
The `/api/v1/config` endpoint exposes all available features, endpoints, and schemas. Your application discovers capabilities at runtime:
|
|
241
|
+
|
|
242
|
+
```javascript
|
|
243
|
+
const config = await fetch('/api/v1/config').then(r => r.json());
|
|
244
|
+
|
|
245
|
+
// Find users endpoint
|
|
246
|
+
const usersEndpoint = config.features.ldapFlatGeneric.flatResources.find(
|
|
247
|
+
r => r.pluralName === 'users'
|
|
248
|
+
)?.endpoints.list;
|
|
249
|
+
|
|
250
|
+
// Use it
|
|
251
|
+
const users = await fetch(usersEndpoint).then(r => r.json());
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
See [REST API Guide](./api/REST_API.md) for details.
|
|
255
|
+
|
|
256
|
+
### Plugin-Based Extensibility
|
|
257
|
+
|
|
258
|
+
Extend LDAP-Rest with custom plugins that:
|
|
259
|
+
|
|
260
|
+
- Add REST API endpoints
|
|
261
|
+
- Hook into LDAP operations
|
|
262
|
+
- Integrate external systems
|
|
263
|
+
- Implement custom logic
|
|
264
|
+
|
|
265
|
+
See [Plugin Development Guide](./plugins/DEVELOPMENT.md) for details.
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Next Steps
|
|
270
|
+
|
|
271
|
+
1. **Learn the API** - Read the [REST API Guide](./api/REST_API.md)
|
|
272
|
+
2. **Try the Libraries** - Check the [Browser Libraries Guide](./browser/LIBRARIES.md)
|
|
273
|
+
3. **See Examples** - Explore [Integration Examples](./examples/EXAMPLES.md)
|
|
274
|
+
4. **Build a Plugin** - Follow the [Plugin Development Guide](./plugins/DEVELOPMENT.md)
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Resources
|
|
279
|
+
|
|
280
|
+
- [GitHub Repository](https://github.com/linagora/ldap-rest)
|
|
281
|
+
- [Contributing Guide](../CONTRIBUTING.md)
|
|
282
|
+
- [Plugin Development](../src/plugins/README.md)
|
|
283
|
+
- [Hooks Reference](../HOOKS.md)
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Support
|
|
288
|
+
|
|
289
|
+
- **Issues**: https://github.com/linagora/ldap-rest/issues
|
|
290
|
+
- **Documentation**: https://github.com/linagora/ldap-rest/tree/master/docs
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## License
|
|
295
|
+
|
|
296
|
+
[](https://linagora.com)
|
|
297
|
+
|
|
298
|
+
[AGPL-3.0](../LICENSE) - Copyright 2025-present LINAGORA
|