ldap-rest 0.7.0 → 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 (79) 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/groups.js +1 -1
  20. package/dist/plugins/twake/calendar.js +1 -0
  21. package/dist/plugins/twake/calendarResources.js +1 -1
  22. package/dist/plugins/twake/james.js +1 -1
  23. package/dist/src/abstract/ldapFlat.d.ts +159 -1
  24. package/dist/src/abstract/plugin.d.ts +13 -0
  25. package/dist/src/config/args.d.ts +2 -0
  26. package/dist/src/config/schema.d.ts +382 -12
  27. package/dist/src/lib/expressFormatedResponses.d.ts +14 -0
  28. package/dist/src/lib/ldapActions.d.ts +33 -6
  29. package/dist/src/lib/utils.d.ts +65 -0
  30. package/dist/src/plugins/auth/authzScope.d.ts +53 -0
  31. package/dist/src/plugins/auth/llng.d.ts +30 -1
  32. package/dist/src/plugins/ldap/accountLifecycle.d.ts +56 -0
  33. package/dist/src/plugins/ldap/departmentSync.d.ts +43 -0
  34. package/dist/src/plugins/ldap/enterpriseRules.d.ts +436 -0
  35. package/dist/src/plugins/ldap/flatGeneric.d.ts +29 -0
  36. package/dist/src/plugins/ldap/groups.d.ts +22 -0
  37. package/dist/src/plugins/ldap/organizations.d.ts +25 -4
  38. package/dist/src/plugins/twake/calendar.d.ts +113 -0
  39. package/dist/src/plugins/twake/calendarResources.d.ts +9 -58
  40. package/docs/README.md +1 -0
  41. package/docs/client-development/api/openapi.md +1 -1
  42. package/docs/client-development/browser/libraries.md +1 -1
  43. package/docs/plugin-development/dependencies.md +10 -7
  44. package/docs/presentations/en.md +1 -1
  45. package/docs/presentations/fr.md +1 -1
  46. package/docs/usage/README.md +1 -0
  47. package/docs/usage/configuration.md +35 -15
  48. package/docs/usage/directory-audit.md +105 -0
  49. package/docs/usage/plugins/README.md +6 -6
  50. package/docs/usage/plugins/auth/README.md +6 -5
  51. package/docs/usage/plugins/auth/authz-scope.md +103 -0
  52. package/docs/usage/plugins/auth/llng.md +17 -0
  53. package/docs/usage/plugins/integrations/README.md +5 -5
  54. package/docs/usage/plugins/integrations/{calendar-resources.md → calendar.md} +70 -13
  55. package/docs/usage/plugins/ldap/README.md +13 -11
  56. package/docs/usage/plugins/ldap/account-lifecycle.md +129 -0
  57. package/docs/usage/plugins/ldap/bulk-import.md +8 -1
  58. package/docs/usage/plugins/ldap/enterprise-rules.md +167 -0
  59. package/docs/usage/plugins/ldap/flat-generic.md +172 -0
  60. package/docs/usage/plugins/ldap/groups.md +10 -4
  61. package/docs/usage/plugins/ldap/organizations.md +59 -33
  62. package/docs/usage/upgrading.md +322 -0
  63. package/package.json +50 -5
  64. package/static/schemas/example/README.md +36 -0
  65. package/static/schemas/example/groups.json +94 -0
  66. package/static/schemas/example/nomenclature/domains.json +49 -0
  67. package/static/schemas/example/organizations.json +106 -0
  68. package/static/schemas/example/positions.json +35 -0
  69. package/static/schemas/example/users.json +246 -0
  70. package/static/schemas/twake/groups.json +81 -15
  71. package/static/schemas/twake/nomenclature/twakeAccountStatus.json +26 -0
  72. package/static/schemas/twake/nomenclature/twakeDeliveryMode.json +22 -0
  73. package/static/schemas/twake/nomenclature/twakeDomain.json +60 -0
  74. package/static/schemas/twake/nomenclature/twakeListType.json +22 -0
  75. package/static/schemas/twake/nomenclature/twakeMailboxType.json +22 -0
  76. package/static/schemas/twake/nomenclature/twakeTitle.json +42 -0
  77. package/static/schemas/twake/organizations.json +92 -12
  78. package/static/schemas/twake/positions.json +22 -4
  79. package/static/schemas/twake/users.json +269 -32
@@ -0,0 +1,106 @@
1
+ {
2
+ "entity": {
3
+ "label": {
4
+ "en": "Organizations",
5
+ "fr": "Organisations"
6
+ },
7
+ "singularLabel": {
8
+ "en": "organization",
9
+ "fr": "organisation"
10
+ }
11
+ },
12
+ "strict": true,
13
+ "attributes": {
14
+ "objectClass": {
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string",
18
+ "test": "^[a-zA-Z][a-zA-Z0-9-]*$"
19
+ },
20
+ "default": ["top", "organizationalUnit", "twakeDepartment"],
21
+ "required": true,
22
+ "fixed": true
23
+ },
24
+ "ou": {
25
+ "type": "string",
26
+ "searchable": true,
27
+ "test": "^[A-ZÀ-ÖØ-Þ]((?!.*([-,’'()&]{2}|\\s{2}|\\s[-,’')]|[-’'(]\\s|\\)[^\\s]|[^\\s]\\())[a-zA-ZÀ-ÖØ-öø-ÿ0-9,\\s\\-’'()&])*[a-zà-öø-ÿ)]$",
28
+ "hint": "Starts with a capital and ends with a lowercase letter or ), no repeated punctuation",
29
+ "required": true,
30
+ "unique": true,
31
+ "role": "identifier",
32
+ "label": "Department name"
33
+ },
34
+ "description": {
35
+ "type": "string",
36
+ "searchable": true,
37
+ "required": false
38
+ },
39
+ "telephoneNumber": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string",
43
+ "test": "^\\(\\+99\\)\\s\\d{3}\\s\\d{4}$",
44
+ "hint": "Expected pattern (+99) 999 9999"
45
+ },
46
+ "required": false,
47
+ "label": "Phone"
48
+ },
49
+ "facsimileTelephoneNumber": {
50
+ "type": "string",
51
+ "test": "^\\(\\+99\\)\\s\\d{3}\\s\\d{4}$",
52
+ "hint": "Expected pattern (+99) 999 9999",
53
+ "required": false,
54
+ "label": "Fax"
55
+ },
56
+ "l": {
57
+ "type": "string",
58
+ "required": false,
59
+ "label": "Locality"
60
+ },
61
+ "postalAddress": {
62
+ "type": "string",
63
+ "test": "^[A-Z0-9À-ÖØ-öø-ÿ]((?!.*([-,'’()&/.]{2}|\\s{2}|\\s[,'’.)]|['’.(]\\s|\\)[^\\s]|[^\\s]\\())[a-zA-ZÀ-ÖØ-öø-ÿ0-9,\\s\\-'’()&/.])*[A-Za-zÀ-ÖØ-öø-ÿ0-9)]$",
64
+ "hint": "Starts with a capital or a digit, no repeated punctuation, ends with a letter, a digit or )",
65
+ "required": false,
66
+ "label": "Address"
67
+ },
68
+ "twakeDepartmentPath": {
69
+ "type": "string",
70
+ "test": "^[^\\r\\n]{1,4096}$",
71
+ "required": true,
72
+ "generated": true,
73
+ "role": "organizationPath"
74
+ },
75
+ "twakeManagerLink": {
76
+ "type": "array",
77
+ "items": {
78
+ "type": "pointer",
79
+ "branch": ["ou=users,__LDAP_BASE__"]
80
+ },
81
+ "required": false,
82
+ "role": "managers",
83
+ "label": "Managers"
84
+ },
85
+ "twakeDomainLink": {
86
+ "type": "array",
87
+ "items": {
88
+ "type": "pointer",
89
+ "branch": ["ou=domains,ou=nomenclature,__LDAP_BASE__"]
90
+ },
91
+ "required": false,
92
+ "role": "domainLink",
93
+ "label": "Mail domains"
94
+ },
95
+ "twakeLocalAdminLink": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "pointer",
99
+ "branch": ["ou=users,__LDAP_BASE__"]
100
+ },
101
+ "required": false,
102
+ "role": "localAdmins",
103
+ "label": "Local administrators"
104
+ }
105
+ }
106
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "entity": {
3
+ "name": "position",
4
+ "mainAttribute": "cn",
5
+ "objectClass": ["top", "twakePosition"],
6
+ "singularName": "position",
7
+ "pluralName": "positions",
8
+ "base": "ou=positions,{ldap_base}"
9
+ },
10
+ "strict": true,
11
+ "attributes": {
12
+ "objectClass": {
13
+ "type": "array",
14
+ "items": {
15
+ "type": "string",
16
+ "test": "^[a-zA-Z][a-zA-Z0-9-]*$"
17
+ },
18
+ "default": ["top", "twakePosition"],
19
+ "required": true,
20
+ "fixed": true
21
+ },
22
+ "cn": {
23
+ "type": "string",
24
+ "test": "^[a-zA-ZÀ-ÖØ-öø-ÿ](?!.*([-'’/,&()]{2}|\\s{2}|\\s[-,'’]|\\s[-'’]\\s|\\s\\)|\\(\\s|\\)[^\\s]|[^\\s]\\())[a-zA-ZÀ-ÖØ-öø-ÿ'’ \\-/,&()]+[a-zA-Z]$",
25
+ "hint": "Letters, spaces and ' - / , & ( ), starting and ending with a letter, no repeated punctuation",
26
+ "required": true,
27
+ "role": "identifier",
28
+ "label": "Position name"
29
+ },
30
+ "description": {
31
+ "type": "string",
32
+ "required": false
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,246 @@
1
+ {
2
+ "entity": {
3
+ "name": "user",
4
+ "mainAttribute": "uid",
5
+ "objectClass": ["top", "twakeAccount", "twakeWhitePages"],
6
+ "singularName": "user",
7
+ "pluralName": "users",
8
+ "base": "ou=users,__ldap_base__"
9
+ },
10
+ "strict": true,
11
+ "attributes": {
12
+ "objectClass": {
13
+ "type": "array",
14
+ "items": {
15
+ "type": "string",
16
+ "test": "^[a-zA-Z][a-zA-Z0-9-]*$"
17
+ },
18
+ "default": ["top", "twakeAccount", "twakeWhitePages"],
19
+ "required": true,
20
+ "fixed": true
21
+ },
22
+ "uid": {
23
+ "type": "string",
24
+ "searchable": true,
25
+ "test": "^[a-zA-Z0-9._-]{1,255}$",
26
+ "required": true,
27
+ "role": "identifier",
28
+ "generated": true,
29
+ "generatedFrom": {
30
+ "attribute": "mail",
31
+ "extract": "^([^@]+)@",
32
+ "lowercase": true,
33
+ "strip": "[^a-zA-Z0-9._-]",
34
+ "onCollision": "suffix"
35
+ }
36
+ },
37
+ "employeeNumber": {
38
+ "type": "string",
39
+ "searchable": true,
40
+ "test": "^([A-Z0-9]{6,9}|[A-Z][A-Z0-9]{13}|UNIT)$",
41
+ "hint": "Expected 6 to 9 characters, or a letter followed by 13 characters, or UNIT",
42
+ "required": true,
43
+ "unique": {
44
+ "sentinel": "UNIT"
45
+ },
46
+ "role": "employeeId",
47
+ "label": "Employee ID"
48
+ },
49
+ "cn": {
50
+ "type": "string",
51
+ "searchable": true,
52
+ "required": false
53
+ },
54
+ "sn": {
55
+ "type": "string",
56
+ "searchable": true,
57
+ "test": "^[A-ZÀ-ÖØ-Þ](?!.*([\\s’'-]{2}|[.’'-]{2}|\\s\\.|[\\s’'-]$))[A-Za-zÀ-ÖØ-öø-ÿ\\s’'.-]{1,50}$",
58
+ "hint": "Starts with a capital, up to 51 letters, no repeated space, apostrophe, hyphen or dot",
59
+ "required": true,
60
+ "label": "Last name"
61
+ },
62
+ "givenName": {
63
+ "type": "string",
64
+ "searchable": true,
65
+ "test": "^[A-ZÀ-ÖØ-Þ](?!.*([\\s’'-]{2}|[.’'-]{2}|\\s\\.|[\\s’'-]$))[A-Za-zÀ-ÖØ-öø-ÿ\\s’'.-]{1,50}$",
66
+ "hint": "Starts with a capital, up to 51 letters, no repeated space, apostrophe, hyphen or dot",
67
+ "required": true,
68
+ "label": "First name"
69
+ },
70
+ "displayName": {
71
+ "type": "string",
72
+ "role": "displayName",
73
+ "required": true
74
+ },
75
+ "personalTitle": {
76
+ "type": "pointer",
77
+ "branch": ["ou=twakeTitle,ou=nomenclature,__LDAP_BASE__"],
78
+ "required": false,
79
+ "label": "Title"
80
+ },
81
+ "title": {
82
+ "type": "pointer",
83
+ "branch": ["ou=positions,__LDAP_BASE__"],
84
+ "required": false,
85
+ "referentialIntegrity": "restrict",
86
+ "role": "position",
87
+ "label": "Position"
88
+ },
89
+ "description": {
90
+ "type": "string",
91
+ "required": false,
92
+ "label": "Comment"
93
+ },
94
+ "mail": {
95
+ "type": "string",
96
+ "searchable": true,
97
+ "test": "^[^@\\s]{1,64}@example\\.org$",
98
+ "hint": "Expected an address in the example.org domain, at most 64 characters before the @",
99
+ "required": true,
100
+ "unique": {
101
+ "attributes": ["mailAlternateAddress"],
102
+ "branches": ["__LDAP_BASE__"]
103
+ },
104
+ "mailDomainScope": "organization",
105
+ "role": "primaryEmail"
106
+ },
107
+ "mailAlternateAddress": {
108
+ "type": "array",
109
+ "items": {
110
+ "type": "string",
111
+ "test": "^[^@\\s]{1,64}@example\\.org$",
112
+ "hint": "Expected an address in the example.org domain, at most 64 characters before the @"
113
+ },
114
+ "required": false,
115
+ "unique": {
116
+ "attributes": ["mail"],
117
+ "branches": ["__LDAP_BASE__"]
118
+ },
119
+ "mailDomainScope": "organization",
120
+ "role": "emailAliases"
121
+ },
122
+ "twakeOtherMailbox": {
123
+ "type": "array",
124
+ "items": {
125
+ "type": "string",
126
+ "test": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$",
127
+ "hint": "Expected an external email address"
128
+ },
129
+ "required": false,
130
+ "group": "Mailbox Settings"
131
+ },
132
+ "mailQuotaSize": {
133
+ "type": "number",
134
+ "required": false,
135
+ "role": "emailQuotaSize",
136
+ "normalize": "byteSize",
137
+ "default": 1000000000,
138
+ "hint": "Expected pattern xGB, xMB, xKB or a number of bytes",
139
+ "group": "Mailbox Settings"
140
+ },
141
+ "telephoneNumber": {
142
+ "type": "string",
143
+ "test": "^\\(\\+99\\)\\s\\d{3}\\s\\d{4}$",
144
+ "hint": "Expected pattern (+99) 999 9999",
145
+ "required": false,
146
+ "label": "Phone"
147
+ },
148
+ "mobile": {
149
+ "type": "string",
150
+ "test": "^\\(\\+99\\)\\s5\\d{3}\\s\\d{4}$",
151
+ "hint": "Expected pattern (+99) 5999 9999",
152
+ "required": false
153
+ },
154
+ "postalAddress": {
155
+ "type": "string",
156
+ "test": "^[A-Z0-9À-ÖØ-öø-ÿ]((?!.*([-,'’()&/.]{2}|\\s{2}|\\s[,'’.)]|['’.(]\\s|\\)[^\\s]|[^\\s]\\())[a-zA-ZÀ-ÖØ-öø-ÿ0-9,\\s\\-'’()&/.])*[A-Za-zÀ-ÖØ-öø-ÿ0-9)]$",
157
+ "hint": "Starts with a capital or a digit, no repeated punctuation, ends with a letter, a digit or )",
158
+ "required": false,
159
+ "label": "Address"
160
+ },
161
+ "postalCode": {
162
+ "type": "string",
163
+ "test": "^[AR1-9][0-9]{4}$",
164
+ "hint": "Expected pattern 9999, A9999 or R9999",
165
+ "required": false,
166
+ "label": "Zip code"
167
+ },
168
+ "l": {
169
+ "type": "string",
170
+ "test": "^[A-Za-zÀ-ÖØ-Þ](?!.*(['’\\s-]{2}))[A-Za-zÀ-ÖØ-öø-ÿ'’\\s-]*$",
171
+ "hint": "Letters, spaces, apostrophes and hyphens, none of them repeated",
172
+ "required": false,
173
+ "label": "Locality"
174
+ },
175
+ "userPassword": {
176
+ "type": "string",
177
+ "required": false,
178
+ "role": "password",
179
+ "neverReturn": true
180
+ },
181
+ "pwdReset": {
182
+ "type": "boolean",
183
+ "required": false,
184
+ "role": "passwordReset",
185
+ "neverReturn": true
186
+ },
187
+ "twakeDepartmentLink": {
188
+ "type": "pointer",
189
+ "branch": ["ou=organization,__LDAP_BASE__"],
190
+ "required": true,
191
+ "role": "organizationLink",
192
+ "label": "Department"
193
+ },
194
+ "twakeDepartmentPath": {
195
+ "type": "string",
196
+ "test": "^[^\\r\\n]{1,4096}$",
197
+ "required": true,
198
+ "generated": true,
199
+ "role": "organizationPath"
200
+ },
201
+ "twakeAccountStatus": {
202
+ "type": "pointer",
203
+ "branch": ["ou=twakeAccountStatus,ou=nomenclature,__LDAP_BASE__"],
204
+ "required": true,
205
+ "generated": true,
206
+ "role": "accountStatus",
207
+ "default": "cn=active,ou=twakeAccountStatus,ou=nomenclature,__LDAP_BASE__",
208
+ "states": {
209
+ "enabled": "cn=active,ou=twakeAccountStatus,ou=nomenclature,__LDAP_BASE__",
210
+ "disabled": "cn=disabled,ou=twakeAccountStatus,ou=nomenclature,__LDAP_BASE__",
211
+ "noAccess": "cn=noaccess,ou=twakeAccountStatus,ou=nomenclature,__LDAP_BASE__",
212
+ "toDelete": "cn=todelete,ou=twakeAccountStatus,ou=nomenclature,__LDAP_BASE__"
213
+ }
214
+ },
215
+ "twakeDeliveryMode": {
216
+ "type": "array",
217
+ "items": {
218
+ "type": "pointer",
219
+ "branch": ["ou=twakeDeliveryMode,ou=nomenclature,__LDAP_BASE__"]
220
+ },
221
+ "required": true,
222
+ "generated": true,
223
+ "default": [
224
+ "cn=normal,ou=twakeDeliveryMode,ou=nomenclature,__LDAP_BASE__"
225
+ ],
226
+ "group": "Mailbox Settings"
227
+ },
228
+ "twakeDeletionDate": {
229
+ "type": "date",
230
+ "required": false,
231
+ "role": "accountExpiry",
232
+ "hint": "Expected pattern MM/DD/YYYY, not earlier than today",
233
+ "label": "Deletion date"
234
+ },
235
+ "memberOf": {
236
+ "type": "array",
237
+ "items": {
238
+ "type": "string"
239
+ },
240
+ "required": false,
241
+ "readOnly": true,
242
+ "role": "groupMemberships",
243
+ "label": "Mailing lists"
244
+ }
245
+ }
246
+ }
@@ -5,7 +5,15 @@
5
5
  "objectClass": ["top", "groupOfNames", "twakeStaticGroup"],
6
6
  "singularName": "group",
7
7
  "pluralName": "groups",
8
- "base": "ou=groups,__ldap_base__"
8
+ "base": "ou=groups,__ldap_base__",
9
+ "label": {
10
+ "en": "Groups",
11
+ "fr": "Groupes"
12
+ },
13
+ "singularLabel": {
14
+ "en": "group",
15
+ "fr": "groupe"
16
+ }
9
17
  },
10
18
  "strict": true,
11
19
  "attributes": {
@@ -21,55 +29,113 @@
21
29
  },
22
30
  "cn": {
23
31
  "type": "string",
24
- "test": "^[a-zA-Z][a-zA-Z0-9-]{0,254}$",
32
+ "searchable": true,
33
+ "test": "^(?!.*\\.\\.)[a-zA-Z0-9!#$%&'*+/=?^_`{|}.-]{1,64}$",
34
+ "hint": "Must match an email local part: letters, digits and ! # $ % & ' * + / = ? ^ _ ` { | } . -, no consecutive dots",
25
35
  "required": true,
26
- "role": "identifier"
36
+ "role": "identifier",
37
+ "label": {
38
+ "en": "Name",
39
+ "fr": "Nom"
40
+ }
27
41
  },
28
42
  "description": {
29
43
  "type": "string",
30
- "required": false
44
+ "searchable": true,
45
+ "required": false,
46
+ "label": {
47
+ "en": "Description",
48
+ "fr": "Description"
49
+ }
31
50
  },
32
51
  "mail": {
33
52
  "type": "string",
53
+ "searchable": true,
34
54
  "test": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$",
55
+ "hint": "Expected an email address, e.g. all-staff@lists.example.org",
35
56
  "required": false,
36
- "role": "primaryEmail"
57
+ "unique": {
58
+ "attributes": ["mailAlternateAddress"],
59
+ "branches": ["__LDAP_BASE__"]
60
+ },
61
+ "mailDomainScope": "organization",
62
+ "allowSubdomains": true,
63
+ "role": "primaryEmail",
64
+ "label": {
65
+ "en": "Email",
66
+ "fr": "Adresse électronique"
67
+ }
68
+ },
69
+ "businessCategory": {
70
+ "type": "pointer",
71
+ "branch": ["ou=twakeListType,ou=nomenclature,__LDAP_BASE__"],
72
+ "required": false,
73
+ "role": "writePolicy",
74
+ "label": {
75
+ "en": "List type",
76
+ "fr": "Type de liste"
77
+ },
78
+ "group": "Mailbox Settings"
37
79
  },
38
80
  "twakeMailboxType": {
39
81
  "type": "pointer",
40
82
  "branch": ["ou=twakeMailboxType,ou=nomenclature,__LDAP_BASE__"],
41
83
  "group": "Mailbox Settings",
42
- "required": false
84
+ "required": false,
85
+ "role": "mailboxType",
86
+ "label": {
87
+ "en": "Group type",
88
+ "fr": "Type de groupe"
89
+ }
43
90
  },
44
91
  "member": {
45
92
  "type": "array",
46
93
  "items": {
47
94
  "type": "string",
48
- "test": "^[a-zA-Z]+=.*,__LDAP_BASE__$"
95
+ "test": "^[a-zA-Z]+=.*,__LDAP_BASE__$",
96
+ "hint": "Expected the DN of an entry of this directory"
49
97
  },
50
98
  "required": false,
51
- "role": "members"
99
+ "role": "members",
100
+ "label": {
101
+ "en": "Members",
102
+ "fr": "Membres"
103
+ }
52
104
  },
53
105
  "owner": {
54
106
  "type": "array",
55
107
  "items": {
56
108
  "type": "string",
57
- "test": "^[a-zA-Z]+=[a-zA-Z][a-zA-Z0-9-]*,__LDAP_BASE__$"
109
+ "test": "^[a-zA-Z]+=[a-zA-Z][a-zA-Z0-9-]*,__LDAP_BASE__$",
110
+ "hint": "Expected the DN of an entry of this directory"
58
111
  },
59
112
  "required": false,
60
- "role": "owners"
113
+ "role": "owners",
114
+ "label": {
115
+ "en": "Owners",
116
+ "fr": "Propriétaires"
117
+ }
61
118
  },
62
119
  "twakeDepartmentLink": {
63
- "type": "string",
64
- "test": "^.*,__LDAP_BASE__",
120
+ "type": "pointer",
121
+ "branch": ["__LDAP_BASE__"],
65
122
  "required": true,
66
- "role": "organizationLink"
123
+ "role": "organizationLink",
124
+ "label": {
125
+ "en": "Department",
126
+ "fr": "Organisation"
127
+ }
67
128
  },
68
129
  "twakeDepartmentPath": {
69
130
  "type": "string",
70
- "test": "^[\\w\\s/,]+$",
131
+ "test": "^[^\\r\\n]{1,4096}$",
71
132
  "required": true,
72
- "role": "organizationPath"
133
+ "generated": true,
134
+ "role": "organizationPath",
135
+ "label": {
136
+ "en": "Department path",
137
+ "fr": "Chemin"
138
+ }
73
139
  }
74
140
  }
75
141
  }
@@ -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,