ldap-rest 0.6.2 → 0.8.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.
Files changed (99) hide show
  1. package/dist/abstract/ldapFlat.js +1 -1
  2. package/dist/abstract/plugin.js +1 -1
  3. package/dist/bin/index.js +1 -1
  4. package/dist/config/args.js +1 -1
  5. package/dist/config/schema.js +1 -0
  6. package/dist/lib/expressFormatedResponses.js +1 -1
  7. package/dist/lib/ldapActions.js +1 -1
  8. package/dist/lib/utils.js +1 -1
  9. package/dist/plugins/auth/authzScope.js +1 -0
  10. package/dist/plugins/auth/llng.js +1 -1
  11. package/dist/plugins/ldap/accountLifecycle.js +1 -0
  12. package/dist/plugins/ldap/bulkImport.js +1 -1
  13. package/dist/plugins/ldap/departmentSync.js +1 -1
  14. package/dist/plugins/ldap/enterpriseRules.js +1 -0
  15. package/dist/plugins/ldap/externalUsersInGroups.js +1 -1
  16. package/dist/plugins/ldap/flatGeneric.js +1 -1
  17. package/dist/plugins/ldap/groups.js +1 -1
  18. package/dist/plugins/ldap/organizations.js +1 -1
  19. package/dist/plugins/scim/bulk.js +1 -1
  20. package/dist/plugins/scim/errors.js +1 -1
  21. package/dist/plugins/scim/filter.js +1 -1
  22. package/dist/plugins/scim/groups.js +1 -1
  23. package/dist/plugins/scim/list.js +1 -1
  24. package/dist/plugins/scim/mapping.js +1 -1
  25. package/dist/plugins/scim/patch.js +1 -1
  26. package/dist/plugins/scim/projection.js +1 -0
  27. package/dist/plugins/scim/scim.js +1 -1
  28. package/dist/plugins/scim/users.js +1 -1
  29. package/dist/plugins/twake/calendar.js +1 -0
  30. package/dist/plugins/twake/calendarResources.js +1 -1
  31. package/dist/plugins/twake/james.js +1 -1
  32. package/dist/src/abstract/ldapFlat.d.ts +159 -1
  33. package/dist/src/abstract/plugin.d.ts +13 -0
  34. package/dist/src/config/args.d.ts +5 -0
  35. package/dist/src/config/schema.d.ts +382 -12
  36. package/dist/src/lib/expressFormatedResponses.d.ts +14 -0
  37. package/dist/src/lib/ldapActions.d.ts +59 -6
  38. package/dist/src/lib/utils.d.ts +65 -0
  39. package/dist/src/plugins/auth/authzScope.d.ts +53 -0
  40. package/dist/src/plugins/auth/llng.d.ts +30 -1
  41. package/dist/src/plugins/ldap/accountLifecycle.d.ts +56 -0
  42. package/dist/src/plugins/ldap/departmentSync.d.ts +43 -0
  43. package/dist/src/plugins/ldap/enterpriseRules.d.ts +436 -0
  44. package/dist/src/plugins/ldap/flatGeneric.d.ts +29 -0
  45. package/dist/src/plugins/ldap/groups.d.ts +22 -0
  46. package/dist/src/plugins/ldap/organizations.d.ts +25 -4
  47. package/dist/src/plugins/scim/errors.d.ts +17 -4
  48. package/dist/src/plugins/scim/filter.d.ts +11 -1
  49. package/dist/src/plugins/scim/groups.d.ts +2 -0
  50. package/dist/src/plugins/scim/list.d.ts +3 -5
  51. package/dist/src/plugins/scim/mapping.d.ts +90 -9
  52. package/dist/src/plugins/scim/patch.d.ts +16 -1
  53. package/dist/src/plugins/scim/projection.d.ts +15 -0
  54. package/dist/src/plugins/scim/scim.d.ts +5 -0
  55. package/dist/src/plugins/scim/users.d.ts +21 -0
  56. package/dist/src/plugins/twake/calendar.d.ts +113 -0
  57. package/dist/src/plugins/twake/calendarResources.d.ts +9 -58
  58. package/docs/README.md +2 -0
  59. package/docs/client-development/api/openapi.md +1 -1
  60. package/docs/client-development/browser/libraries.md +1 -1
  61. package/docs/plugin-development/README.md +22 -0
  62. package/docs/plugin-development/dependencies.md +10 -7
  63. package/docs/presentations/en.md +1 -1
  64. package/docs/presentations/fr.md +1 -1
  65. package/docs/usage/README.md +2 -0
  66. package/docs/usage/configuration.md +35 -15
  67. package/docs/usage/directory-audit.md +105 -0
  68. package/docs/usage/plugins/README.md +6 -6
  69. package/docs/usage/plugins/auth/README.md +6 -5
  70. package/docs/usage/plugins/auth/authz-scope.md +103 -0
  71. package/docs/usage/plugins/auth/llng.md +17 -0
  72. package/docs/usage/plugins/integrations/README.md +5 -5
  73. package/docs/usage/plugins/integrations/{calendar-resources.md → calendar.md} +70 -13
  74. package/docs/usage/plugins/integrations/scim.md +147 -38
  75. package/docs/usage/plugins/ldap/README.md +13 -11
  76. package/docs/usage/plugins/ldap/account-lifecycle.md +129 -0
  77. package/docs/usage/plugins/ldap/bulk-import.md +8 -1
  78. package/docs/usage/plugins/ldap/enterprise-rules.md +167 -0
  79. package/docs/usage/plugins/ldap/flat-generic.md +172 -0
  80. package/docs/usage/plugins/ldap/groups.md +10 -4
  81. package/docs/usage/plugins/ldap/organizations.md +59 -33
  82. package/docs/usage/upgrading.md +444 -0
  83. package/package.json +54 -5
  84. package/static/schemas/example/README.md +36 -0
  85. package/static/schemas/example/groups.json +94 -0
  86. package/static/schemas/example/nomenclature/domains.json +49 -0
  87. package/static/schemas/example/organizations.json +106 -0
  88. package/static/schemas/example/positions.json +35 -0
  89. package/static/schemas/example/users.json +246 -0
  90. package/static/schemas/twake/groups.json +81 -15
  91. package/static/schemas/twake/nomenclature/twakeAccountStatus.json +26 -0
  92. package/static/schemas/twake/nomenclature/twakeDeliveryMode.json +22 -0
  93. package/static/schemas/twake/nomenclature/twakeDomain.json +60 -0
  94. package/static/schemas/twake/nomenclature/twakeListType.json +22 -0
  95. package/static/schemas/twake/nomenclature/twakeMailboxType.json +22 -0
  96. package/static/schemas/twake/nomenclature/twakeTitle.json +42 -0
  97. package/static/schemas/twake/organizations.json +92 -12
  98. package/static/schemas/twake/positions.json +22 -4
  99. package/static/schemas/twake/users.json +269 -32
@@ -5,6 +5,32 @@
5
5
  "objectClass": ["top", "applicationProcess"],
6
6
  "singularName": "accountStatus",
7
7
  "pluralName": "accountStatuses",
8
+ "label": {
9
+ "en": "Account states",
10
+ "fr": "États de compte"
11
+ },
12
+ "singularLabel": {
13
+ "en": "account state",
14
+ "fr": "état de compte"
15
+ },
16
+ "valueLabels": {
17
+ "active": {
18
+ "en": "Active",
19
+ "fr": "Actif"
20
+ },
21
+ "disabled": {
22
+ "en": "Disabled",
23
+ "fr": "Désactivé"
24
+ },
25
+ "noaccess": {
26
+ "en": "No access",
27
+ "fr": "Sans accès"
28
+ },
29
+ "todelete": {
30
+ "en": "To delete",
31
+ "fr": "À supprimer"
32
+ }
33
+ },
8
34
  "base": "ou=twakeAccountStatus,ou=nomenclature,{ldap_base}"
9
35
  },
10
36
  "strict": true,
@@ -5,6 +5,28 @@
5
5
  "objectClass": ["top", "applicationProcess"],
6
6
  "singularName": "deliveryMode",
7
7
  "pluralName": "deliveryModes",
8
+ "label": {
9
+ "en": "Delivery modes",
10
+ "fr": "Modes de distribution"
11
+ },
12
+ "singularLabel": {
13
+ "en": "delivery mode",
14
+ "fr": "mode de distribution"
15
+ },
16
+ "valueLabels": {
17
+ "normal": {
18
+ "en": "Normal",
19
+ "fr": "Normale"
20
+ },
21
+ "forward": {
22
+ "en": "Forwarded",
23
+ "fr": "Transférée"
24
+ },
25
+ "localDelivery": {
26
+ "en": "Forwarded, local copy kept",
27
+ "fr": "Transférée, copie locale conservée"
28
+ }
29
+ },
8
30
  "base": "ou=twakeDeliveryMode,ou=nomenclature,{ldap_base}"
9
31
  },
10
32
  "strict": true,
@@ -0,0 +1,60 @@
1
+ {
2
+ "entity": {
3
+ "name": "twakeDomain",
4
+ "mainAttribute": "dc",
5
+ "objectClass": ["top", "domain", "domainRelatedObject"],
6
+ "singularName": "domain",
7
+ "pluralName": "domains",
8
+ "base": "ou=domains,ou=nomenclature,{ldap_base}",
9
+ "label": {
10
+ "en": "Mail domains",
11
+ "fr": "Domaines de messagerie"
12
+ },
13
+ "singularLabel": {
14
+ "en": "domain",
15
+ "fr": "domaine"
16
+ }
17
+ },
18
+ "strict": true,
19
+ "attributes": {
20
+ "objectClass": {
21
+ "type": "array",
22
+ "items": {
23
+ "type": "string"
24
+ },
25
+ "default": ["top", "domain", "domainRelatedObject"],
26
+ "required": true,
27
+ "fixed": true
28
+ },
29
+ "dc": {
30
+ "type": "string",
31
+ "test": "^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
32
+ "hint": "A single domain label: letters, digits and hyphens, e.g. example",
33
+ "required": true,
34
+ "role": "identifier",
35
+ "label": {
36
+ "en": "Identifier",
37
+ "fr": "Identifiant"
38
+ }
39
+ },
40
+ "associatedDomain": {
41
+ "type": "string",
42
+ "test": "^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$|^\\*$",
43
+ "hint": "A fully qualified domain name (example.org), or * to allow every domain",
44
+ "required": true,
45
+ "role": "domainName",
46
+ "label": {
47
+ "en": "Mail domain",
48
+ "fr": "Domaine de messagerie"
49
+ }
50
+ },
51
+ "description": {
52
+ "type": "string",
53
+ "required": false,
54
+ "label": {
55
+ "en": "Description",
56
+ "fr": "Description"
57
+ }
58
+ }
59
+ }
60
+ }
@@ -5,6 +5,28 @@
5
5
  "objectClass": ["top", "applicationProcess"],
6
6
  "singularName": "listType",
7
7
  "pluralName": "listTypes",
8
+ "label": {
9
+ "en": "List types",
10
+ "fr": "Types de liste"
11
+ },
12
+ "singularLabel": {
13
+ "en": "list type",
14
+ "fr": "type de liste"
15
+ },
16
+ "valueLabels": {
17
+ "openList": {
18
+ "en": "Open to all",
19
+ "fr": "Ouverte à tous"
20
+ },
21
+ "memberRestrictedList": {
22
+ "en": "Members only",
23
+ "fr": "Réservée aux membres"
24
+ },
25
+ "ownerRestrictedList": {
26
+ "en": "Owners only",
27
+ "fr": "Réservée aux propriétaires"
28
+ }
29
+ },
8
30
  "base": "ou=twakeListType,ou=nomenclature,{ldap_base}"
9
31
  },
10
32
  "strict": true,
@@ -5,6 +5,28 @@
5
5
  "objectClass": ["top", "applicationProcess"],
6
6
  "singularName": "mailboxType",
7
7
  "pluralName": "mailboxTypes",
8
+ "label": {
9
+ "en": "Group types",
10
+ "fr": "Types de groupe"
11
+ },
12
+ "singularLabel": {
13
+ "en": "group type",
14
+ "fr": "type de groupe"
15
+ },
16
+ "valueLabels": {
17
+ "group": {
18
+ "en": "Group",
19
+ "fr": "Groupe"
20
+ },
21
+ "mailingList": {
22
+ "en": "Distribution list",
23
+ "fr": "Liste de diffusion"
24
+ },
25
+ "teamMailbox": {
26
+ "en": "Shared mailbox",
27
+ "fr": "Boîte partagée"
28
+ }
29
+ },
8
30
  "base": "ou=twakeMailboxType,ou=nomenclature,{ldap_base}"
9
31
  },
10
32
  "strict": true,
@@ -5,6 +5,48 @@
5
5
  "objectClass": ["top", "applicationProcess"],
6
6
  "singularName": "title",
7
7
  "pluralName": "titles",
8
+ "label": {
9
+ "en": "Titles",
10
+ "fr": "Civilités"
11
+ },
12
+ "singularLabel": {
13
+ "en": "title",
14
+ "fr": "civilité"
15
+ },
16
+ "valueLabels": {
17
+ "Dr": {
18
+ "en": "Dr",
19
+ "fr": "Dr"
20
+ },
21
+ "Mr": {
22
+ "en": "Mr",
23
+ "fr": "M."
24
+ },
25
+ "Mrs": {
26
+ "en": "Mrs",
27
+ "fr": "Mme"
28
+ },
29
+ "Miss": {
30
+ "en": "Miss",
31
+ "fr": "Mlle"
32
+ },
33
+ "Ms": {
34
+ "en": "Ms",
35
+ "fr": "Mme"
36
+ },
37
+ "Prof": {
38
+ "en": "Prof.",
39
+ "fr": "Pr"
40
+ },
41
+ "Hon": {
42
+ "en": "Hon.",
43
+ "fr": "Honorable"
44
+ },
45
+ "Excellence": {
46
+ "en": "Excellency",
47
+ "fr": "Excellence"
48
+ }
49
+ },
8
50
  "base": "ou=twakeTitle,ou=nomenclature,{ldap_base}"
9
51
  },
10
52
  "strict": true,
@@ -1,4 +1,14 @@
1
1
  {
2
+ "entity": {
3
+ "label": {
4
+ "en": "Organizations",
5
+ "fr": "Organisations"
6
+ },
7
+ "singularLabel": {
8
+ "en": "organization",
9
+ "fr": "organisation"
10
+ }
11
+ },
2
12
  "strict": true,
3
13
  "attributes": {
4
14
  "objectClass": {
@@ -13,40 +23,110 @@
13
23
  },
14
24
  "ou": {
15
25
  "type": "string",
16
- "test": "^[a-zA-Z0-9._-]{1,255}$",
17
- "required": true
26
+ "searchable": true,
27
+ "test": "^[A-Za-zÀ-ÖØ-öø-ÿ0-9][A-Za-zÀ-ÖØ-öø-ÿ0-9 ()&/,.'’_-]{0,254}$",
28
+ "hint": "Letters, digits, spaces and ( ) & / , . ' - _, starting with a letter or a digit",
29
+ "required": true,
30
+ "unique": true,
31
+ "role": "identifier",
32
+ "label": {
33
+ "en": "Name",
34
+ "fr": "Nom"
35
+ }
18
36
  },
19
37
  "description": {
20
38
  "type": "string",
21
- "required": false
39
+ "searchable": true,
40
+ "required": false,
41
+ "label": {
42
+ "en": "Description",
43
+ "fr": "Description"
44
+ }
22
45
  },
23
46
  "telephoneNumber": {
24
- "type": "string",
25
- "required": false
47
+ "type": "array",
48
+ "items": {
49
+ "type": "string"
50
+ },
51
+ "required": false,
52
+ "label": {
53
+ "en": "Phone",
54
+ "fr": "Téléphone"
55
+ }
26
56
  },
27
57
  "facsimileTelephoneNumber": {
28
58
  "type": "string",
29
- "required": false
59
+ "required": false,
60
+ "label": {
61
+ "en": "Fax",
62
+ "fr": "Fax"
63
+ }
30
64
  },
31
65
  "l": {
32
66
  "type": "string",
33
- "required": false
67
+ "required": false,
68
+ "label": {
69
+ "en": "Locality",
70
+ "fr": "Commune"
71
+ }
34
72
  },
35
73
  "postalAddress": {
36
74
  "type": "string",
37
- "required": false
75
+ "required": false,
76
+ "label": {
77
+ "en": "Address",
78
+ "fr": "Adresse"
79
+ }
38
80
  },
39
81
  "twakeDepartmentPath": {
40
82
  "type": "string",
41
- "test": "^[\\w\\s/,]+$",
42
- "required": true
83
+ "test": "^[^\\r\\n]{1,4096}$",
84
+ "required": true,
85
+ "generated": true,
86
+ "role": "organizationPath",
87
+ "label": {
88
+ "en": "Path",
89
+ "fr": "Chemin"
90
+ }
91
+ },
92
+ "twakeManagerLink": {
93
+ "type": "array",
94
+ "items": {
95
+ "type": "pointer",
96
+ "branch": ["ou=users,__LDAP_BASE__"]
97
+ },
98
+ "required": false,
99
+ "role": "managers",
100
+ "label": {
101
+ "en": "Managers",
102
+ "fr": "Responsables"
103
+ }
104
+ },
105
+ "twakeDomainLink": {
106
+ "type": "array",
107
+ "items": {
108
+ "type": "pointer",
109
+ "branch": ["ou=domains,ou=nomenclature,__LDAP_BASE__"]
110
+ },
111
+ "required": false,
112
+ "role": "domainLink",
113
+ "label": {
114
+ "en": "Mail domains",
115
+ "fr": "Domaines de messagerie"
116
+ }
43
117
  },
44
118
  "twakeLocalAdminLink": {
45
119
  "type": "array",
46
120
  "items": {
47
- "type": "string"
121
+ "type": "pointer",
122
+ "branch": ["ou=users,__LDAP_BASE__"]
48
123
  },
49
- "required": false
124
+ "required": false,
125
+ "role": "localAdmins",
126
+ "label": {
127
+ "en": "Local administrators",
128
+ "fr": "Administrateurs locaux"
129
+ }
50
130
  }
51
131
  }
52
132
  }
@@ -5,7 +5,15 @@
5
5
  "objectClass": ["top", "twakePosition"],
6
6
  "singularName": "position",
7
7
  "pluralName": "positions",
8
- "base": "ou=positions,{ldap_base}"
8
+ "base": "ou=positions,{ldap_base}",
9
+ "label": {
10
+ "en": "Positions",
11
+ "fr": "Postes"
12
+ },
13
+ "singularLabel": {
14
+ "en": "position",
15
+ "fr": "poste"
16
+ }
9
17
  },
10
18
  "strict": true,
11
19
  "attributes": {
@@ -21,12 +29,22 @@
21
29
  },
22
30
  "cn": {
23
31
  "type": "string",
24
- "test": "^[a-zA-Z0-9 &/,.-]+$",
25
- "required": true
32
+ "test": "^[A-Za-zÀ-ÖØ-öø-ÿ0-9][A-Za-zÀ-ÖØ-öø-ÿ0-9 &/,.'’-]*$",
33
+ "hint": "Letters, digits, spaces and & / , . ' -, starting with a letter or a digit",
34
+ "required": true,
35
+ "role": "identifier",
36
+ "label": {
37
+ "en": "Name",
38
+ "fr": "Nom"
39
+ }
26
40
  },
27
41
  "description": {
28
42
  "type": "string",
29
- "required": false
43
+ "required": false,
44
+ "label": {
45
+ "en": "Description",
46
+ "fr": "Description"
47
+ }
30
48
  }
31
49
  }
32
50
  }