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.
- package/dist/abstract/ldapFlat.js +1 -1
- package/dist/abstract/plugin.js +1 -1
- package/dist/bin/index.js +1 -1
- package/dist/config/args.js +1 -1
- package/dist/config/schema.js +1 -0
- package/dist/lib/expressFormatedResponses.js +1 -1
- package/dist/lib/ldapActions.js +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/plugins/auth/authzScope.js +1 -0
- package/dist/plugins/auth/llng.js +1 -1
- package/dist/plugins/ldap/accountLifecycle.js +1 -0
- package/dist/plugins/ldap/bulkImport.js +1 -1
- package/dist/plugins/ldap/departmentSync.js +1 -1
- package/dist/plugins/ldap/enterpriseRules.js +1 -0
- package/dist/plugins/ldap/externalUsersInGroups.js +1 -1
- package/dist/plugins/ldap/flatGeneric.js +1 -1
- package/dist/plugins/ldap/groups.js +1 -1
- package/dist/plugins/ldap/organizations.js +1 -1
- package/dist/plugins/scim/bulk.js +1 -1
- package/dist/plugins/scim/errors.js +1 -1
- package/dist/plugins/scim/filter.js +1 -1
- package/dist/plugins/scim/groups.js +1 -1
- package/dist/plugins/scim/list.js +1 -1
- package/dist/plugins/scim/mapping.js +1 -1
- package/dist/plugins/scim/patch.js +1 -1
- package/dist/plugins/scim/projection.js +1 -0
- package/dist/plugins/scim/scim.js +1 -1
- package/dist/plugins/scim/users.js +1 -1
- package/dist/plugins/twake/calendar.js +1 -0
- package/dist/plugins/twake/calendarResources.js +1 -1
- package/dist/plugins/twake/james.js +1 -1
- package/dist/src/abstract/ldapFlat.d.ts +159 -1
- package/dist/src/abstract/plugin.d.ts +13 -0
- package/dist/src/config/args.d.ts +5 -0
- package/dist/src/config/schema.d.ts +382 -12
- package/dist/src/lib/expressFormatedResponses.d.ts +14 -0
- package/dist/src/lib/ldapActions.d.ts +59 -6
- package/dist/src/lib/utils.d.ts +65 -0
- package/dist/src/plugins/auth/authzScope.d.ts +53 -0
- package/dist/src/plugins/auth/llng.d.ts +30 -1
- package/dist/src/plugins/ldap/accountLifecycle.d.ts +56 -0
- package/dist/src/plugins/ldap/departmentSync.d.ts +43 -0
- package/dist/src/plugins/ldap/enterpriseRules.d.ts +436 -0
- package/dist/src/plugins/ldap/flatGeneric.d.ts +29 -0
- package/dist/src/plugins/ldap/groups.d.ts +22 -0
- package/dist/src/plugins/ldap/organizations.d.ts +25 -4
- package/dist/src/plugins/scim/errors.d.ts +17 -4
- package/dist/src/plugins/scim/filter.d.ts +11 -1
- package/dist/src/plugins/scim/groups.d.ts +2 -0
- package/dist/src/plugins/scim/list.d.ts +3 -5
- package/dist/src/plugins/scim/mapping.d.ts +90 -9
- package/dist/src/plugins/scim/patch.d.ts +16 -1
- package/dist/src/plugins/scim/projection.d.ts +15 -0
- package/dist/src/plugins/scim/scim.d.ts +5 -0
- package/dist/src/plugins/scim/users.d.ts +21 -0
- package/dist/src/plugins/twake/calendar.d.ts +113 -0
- package/dist/src/plugins/twake/calendarResources.d.ts +9 -58
- package/docs/README.md +2 -0
- package/docs/client-development/api/openapi.md +1 -1
- package/docs/client-development/browser/libraries.md +1 -1
- package/docs/plugin-development/README.md +22 -0
- package/docs/plugin-development/dependencies.md +10 -7
- package/docs/presentations/en.md +1 -1
- package/docs/presentations/fr.md +1 -1
- package/docs/usage/README.md +2 -0
- package/docs/usage/configuration.md +35 -15
- package/docs/usage/directory-audit.md +105 -0
- package/docs/usage/plugins/README.md +6 -6
- package/docs/usage/plugins/auth/README.md +6 -5
- package/docs/usage/plugins/auth/authz-scope.md +103 -0
- package/docs/usage/plugins/auth/llng.md +17 -0
- package/docs/usage/plugins/integrations/README.md +5 -5
- package/docs/usage/plugins/integrations/{calendar-resources.md → calendar.md} +70 -13
- package/docs/usage/plugins/integrations/scim.md +147 -38
- package/docs/usage/plugins/ldap/README.md +13 -11
- package/docs/usage/plugins/ldap/account-lifecycle.md +129 -0
- package/docs/usage/plugins/ldap/bulk-import.md +8 -1
- package/docs/usage/plugins/ldap/enterprise-rules.md +167 -0
- package/docs/usage/plugins/ldap/flat-generic.md +172 -0
- package/docs/usage/plugins/ldap/groups.md +10 -4
- package/docs/usage/plugins/ldap/organizations.md +59 -33
- package/docs/usage/upgrading.md +444 -0
- package/package.json +54 -5
- package/static/schemas/example/README.md +36 -0
- package/static/schemas/example/groups.json +94 -0
- package/static/schemas/example/nomenclature/domains.json +49 -0
- package/static/schemas/example/organizations.json +106 -0
- package/static/schemas/example/positions.json +35 -0
- package/static/schemas/example/users.json +246 -0
- package/static/schemas/twake/groups.json +81 -15
- package/static/schemas/twake/nomenclature/twakeAccountStatus.json +26 -0
- package/static/schemas/twake/nomenclature/twakeDeliveryMode.json +22 -0
- package/static/schemas/twake/nomenclature/twakeDomain.json +60 -0
- package/static/schemas/twake/nomenclature/twakeListType.json +22 -0
- package/static/schemas/twake/nomenclature/twakeMailboxType.json +22 -0
- package/static/schemas/twake/nomenclature/twakeTitle.json +42 -0
- package/static/schemas/twake/organizations.json +92 -12
- package/static/schemas/twake/positions.json +22 -4
- package/static/schemas/twake/users.json +269 -32
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"entity": {
|
|
3
|
+
"name": "mailingList",
|
|
4
|
+
"mainAttribute": "cn",
|
|
5
|
+
"objectClass": ["top", "groupOfNames", "twakeStaticGroup"],
|
|
6
|
+
"singularName": "mailingList",
|
|
7
|
+
"pluralName": "mailingLists",
|
|
8
|
+
"base": "ou=lists,ou=groups,__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", "groupOfNames", "twakeStaticGroup"],
|
|
19
|
+
"required": true,
|
|
20
|
+
"fixed": true
|
|
21
|
+
},
|
|
22
|
+
"cn": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"searchable": true,
|
|
25
|
+
"test": "^(?!.*\\.\\.)[a-zA-Z0-9!#$%&'*+/=?^_`{|}.-]{1,64}$",
|
|
26
|
+
"hint": "Must match an email local part, at most 64 characters, no consecutive dots",
|
|
27
|
+
"required": true,
|
|
28
|
+
"role": "identifier",
|
|
29
|
+
"label": "Mailing list name"
|
|
30
|
+
},
|
|
31
|
+
"description": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"searchable": true,
|
|
34
|
+
"required": false
|
|
35
|
+
},
|
|
36
|
+
"mail": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"searchable": true,
|
|
39
|
+
"test": "^[^@\\s]{1,64}@([^@\\s]{1,245}\\.)?example\\.org$",
|
|
40
|
+
"hint": "Expected an address in example.org or one of its subdomains",
|
|
41
|
+
"required": true,
|
|
42
|
+
"unique": {
|
|
43
|
+
"attributes": ["mailAlternateAddress"],
|
|
44
|
+
"branches": ["__LDAP_BASE__"]
|
|
45
|
+
},
|
|
46
|
+
"mailDomainScope": "organization",
|
|
47
|
+
"allowSubdomains": true,
|
|
48
|
+
"role": "primaryEmail"
|
|
49
|
+
},
|
|
50
|
+
"businessCategory": {
|
|
51
|
+
"type": "pointer",
|
|
52
|
+
"branch": ["ou=twakeListType,ou=nomenclature,__LDAP_BASE__"],
|
|
53
|
+
"required": false,
|
|
54
|
+
"role": "writePolicy",
|
|
55
|
+
"label": "List type"
|
|
56
|
+
},
|
|
57
|
+
"member": {
|
|
58
|
+
"type": "array",
|
|
59
|
+
"items": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"test": "^[a-zA-Z]+=.*,__LDAP_BASE__$",
|
|
62
|
+
"hint": "Expected the DN of an entry of this directory"
|
|
63
|
+
},
|
|
64
|
+
"required": false,
|
|
65
|
+
"deleteGuard": "nonEmpty",
|
|
66
|
+
"role": "members",
|
|
67
|
+
"label": "Members"
|
|
68
|
+
},
|
|
69
|
+
"owner": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"items": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"test": "^[a-zA-Z]+=.*,__LDAP_BASE__$",
|
|
74
|
+
"hint": "Expected the DN of an entry of this directory"
|
|
75
|
+
},
|
|
76
|
+
"required": false,
|
|
77
|
+
"role": "owners"
|
|
78
|
+
},
|
|
79
|
+
"twakeDepartmentLink": {
|
|
80
|
+
"type": "pointer",
|
|
81
|
+
"branch": ["ou=organization,__LDAP_BASE__"],
|
|
82
|
+
"required": true,
|
|
83
|
+
"role": "organizationLink",
|
|
84
|
+
"label": "Department"
|
|
85
|
+
},
|
|
86
|
+
"twakeDepartmentPath": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"test": "^[^\\r\\n]{1,4096}$",
|
|
89
|
+
"required": true,
|
|
90
|
+
"generated": true,
|
|
91
|
+
"role": "organizationPath"
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"entity": {
|
|
3
|
+
"name": "domain",
|
|
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
|
+
},
|
|
36
|
+
"associatedDomain": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"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])?)+$|^\\*$",
|
|
39
|
+
"hint": "A fully qualified domain name (example.org), or * to allow every domain",
|
|
40
|
+
"required": true,
|
|
41
|
+
"role": "domainName",
|
|
42
|
+
"label": "Mail domain"
|
|
43
|
+
},
|
|
44
|
+
"description": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"required": false
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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": "
|
|
64
|
-
"
|
|
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": "^[\\
|
|
131
|
+
"test": "^[^\\r\\n]{1,4096}$",
|
|
71
132
|
"required": true,
|
|
72
|
-
"
|
|
133
|
+
"generated": true,
|
|
134
|
+
"role": "organizationPath",
|
|
135
|
+
"label": {
|
|
136
|
+
"en": "Department path",
|
|
137
|
+
"fr": "Chemin"
|
|
138
|
+
}
|
|
73
139
|
}
|
|
74
140
|
}
|
|
75
141
|
}
|