ldap-rest 0.18.0 → 0.19.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.
@@ -33,10 +33,31 @@ This plugin intercepts group member validation and automatically creates missing
33
33
  ### Important Notes
34
34
 
35
35
  - **Dependencies**: This plugin requires the `core/ldap/groups` plugin
36
- - **DN Format**: External members are in the format `mail={email},{external_members_branch}`
37
- - **Domain Protection**: External users cannot be created if their mail are in managed domains (configured via `--mail-domain`)
36
+ - **DN Format**: External members are in the format `mail={email},{external_members_branch}`,
37
+ the address escaped as any DN value (RFC 4514): `mail=a\+b@partner.com,…`
38
+ creates an entry whose `mail` is `a+b@partner.com`. Only the direct children of the
39
+ branch are external members.
40
+ - **Domain Protection**: External users cannot be created if their mail are in managed domains (configured via `--mail-domain`, compared case-insensitively)
38
41
  - **Automatic Creation**: Users are created automatically when added to a group if they don't exist
39
42
 
43
+ ### Config API
44
+
45
+ `GET /api/v1/config` tells a client whether external members are accepted, and
46
+ where to send them:
47
+
48
+ ```json
49
+ "externalUsersInGroups": {
50
+ "enabled": true,
51
+ "branch": "ou=contacts,dc=example,dc=com",
52
+ "rdnAttribute": "mail",
53
+ "managedDomains": ["example.com"]
54
+ }
55
+ ```
56
+
57
+ A client turns an address into a member with
58
+ `rdnAttribute=<escaped address>,<branch>`, and can refuse a `managedDomains`
59
+ address before sending it.
60
+
40
61
  ## How It Works
41
62
 
42
63
  ### Member Validation Hook
@@ -4,6 +4,24 @@ What to check before deploying, newest first. Only releases that need a
4
4
  decision or a configuration change appear here; see the
5
5
  [CHANGELOG](../../CHANGELOG.md) for everything else.
6
6
 
7
+ ## To 0.19.0
8
+
9
+ ### Forwards are no longer copied to Twake Mail
10
+
11
+ **Who is affected:** a deployment that loads `twake/james` and stores
12
+ forwards in `--forward-attribute` (`mailForwardingAddress` by default).
13
+
14
+ `twake/james` no longer applies the changes of that attribute to Twake Mail's
15
+ forwards: users set them in Twake Mail. The forwards already in Twake Mail
16
+ stay as they are, except those left on an address an account takes, removed
17
+ as before,
18
+ [details](plugins/integrations/james-mail.md#forwards-left-on-an-address).
19
+
20
+ To keep the directory as the owner of the forwards, set
21
+ `--james-sync-forwards` (`DM_JAMES_SYNC_FORWARDS=true`); it then overwrites
22
+ what users set in Twake Mail,
23
+ [details](plugins/integrations/james-mail.md#forwards).
24
+
7
25
  ## To 0.18.0
8
26
 
9
27
  ### Mailing lists are no longer copied to James
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ldap-rest",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "Light directory manager",
5
5
  "keywords": [
6
6
  "Identity-Manager"
@@ -8,11 +8,13 @@
8
8
  "base": "ou=groups,__ldap_base__",
9
9
  "label": {
10
10
  "en": "Groups",
11
- "fr": "Groupes"
11
+ "fr": "Groupes",
12
+ "mn": "Бүлгүүд"
12
13
  },
13
14
  "singularLabel": {
14
15
  "en": "group",
15
- "fr": "groupe"
16
+ "fr": "groupe",
17
+ "mn": "бүлэг"
16
18
  }
17
19
  },
18
20
  "strict": true,
@@ -33,13 +35,15 @@
33
35
  "test": "^(?!.*\\.\\.)[a-zA-Z0-9!#$%&'*+/=?^_`{|}.-]{1,64}$",
34
36
  "hint": {
35
37
  "en": "Must match an email local part: letters, digits and ! # $ % & ' * + / = ? ^ _ ` { | } . -, no consecutive dots",
36
- "fr": "Partie locale d'une adresse électronique : lettres, chiffres et ! # $ % & ' * + / = ? ^ _ ` { | } . -, sans points consécutifs"
38
+ "fr": "Partie locale d'une adresse électronique : lettres, chiffres et ! # $ % & ' * + / = ? ^ _ ` { | } . -, sans points consécutifs",
39
+ "mn": "Имэйл хаягийн @-ээс өмнөх хэсэг: үсэг, тоо болон ! # $ % & ' * + / = ? ^ _ ` { | } . -, дараалсан цэггүй"
37
40
  },
38
41
  "required": true,
39
42
  "role": "identifier",
40
43
  "label": {
41
44
  "en": "Name",
42
- "fr": "Nom"
45
+ "fr": "Nom",
46
+ "mn": "Нэр"
43
47
  }
44
48
  },
45
49
  "description": {
@@ -48,7 +52,8 @@
48
52
  "required": false,
49
53
  "label": {
50
54
  "en": "Description",
51
- "fr": "Description"
55
+ "fr": "Description",
56
+ "mn": "Тайлбар"
52
57
  }
53
58
  },
54
59
  "mail": {
@@ -57,7 +62,8 @@
57
62
  "test": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$",
58
63
  "hint": {
59
64
  "en": "Expected an email address, e.g. all-staff@lists.example.org",
60
- "fr": "Une adresse électronique est attendue, par ex. all-staff@lists.example.org"
65
+ "fr": "Une adresse électronique est attendue, par ex. all-staff@lists.example.org",
66
+ "mn": "Имэйл хаяг оруулна уу, жишээ нь all-staff@lists.example.org"
61
67
  },
62
68
  "required": false,
63
69
  "unique": {
@@ -69,7 +75,8 @@
69
75
  "role": "primaryEmail",
70
76
  "label": {
71
77
  "en": "Email",
72
- "fr": "Adresse électronique"
78
+ "fr": "Adresse électronique",
79
+ "mn": "Имэйл хаяг"
73
80
  }
74
81
  },
75
82
  "businessCategory": {
@@ -79,11 +86,13 @@
79
86
  "role": "writePolicy",
80
87
  "label": {
81
88
  "en": "List type",
82
- "fr": "Type de liste"
89
+ "fr": "Type de liste",
90
+ "mn": "Жагсаалтын төрөл"
83
91
  },
84
92
  "group": {
85
93
  "en": "Mailbox Settings",
86
- "fr": "Paramètres de messagerie"
94
+ "fr": "Paramètres de messagerie",
95
+ "mn": "Шуудангийн хайрцгийн тохиргоо"
87
96
  }
88
97
  },
89
98
  "twakeMailboxType": {
@@ -91,13 +100,15 @@
91
100
  "branch": ["ou=twakeMailboxType,ou=nomenclature,__LDAP_BASE__"],
92
101
  "group": {
93
102
  "en": "Mailbox Settings",
94
- "fr": "Paramètres de messagerie"
103
+ "fr": "Paramètres de messagerie",
104
+ "mn": "Шуудангийн хайрцгийн тохиргоо"
95
105
  },
96
106
  "required": false,
97
107
  "role": "mailboxType",
98
108
  "label": {
99
109
  "en": "Group type",
100
- "fr": "Type de groupe"
110
+ "fr": "Type de groupe",
111
+ "mn": "Бүлгийн төрөл"
101
112
  }
102
113
  },
103
114
  "member": {
@@ -107,14 +118,16 @@
107
118
  "test": "^[a-zA-Z]+=.*,__LDAP_BASE__$",
108
119
  "hint": {
109
120
  "en": "Expected the DN of an entry of this directory",
110
- "fr": "Le DN d'une entrée de cet annuaire est attendu"
121
+ "fr": "Le DN d'une entrée de cet annuaire est attendu",
122
+ "mn": "Энэ лавлахын бичлэгийн DN оруулна уу"
111
123
  }
112
124
  },
113
125
  "required": false,
114
126
  "role": "members",
115
127
  "label": {
116
128
  "en": "Members",
117
- "fr": "Membres"
129
+ "fr": "Membres",
130
+ "mn": "Гишүүд"
118
131
  }
119
132
  },
120
133
  "owner": {
@@ -124,14 +137,16 @@
124
137
  "test": "^[a-zA-Z]+=.*,__LDAP_BASE__$",
125
138
  "hint": {
126
139
  "en": "Expected the DN of an entry of this directory",
127
- "fr": "Le DN d'une entrée de cet annuaire est attendu"
140
+ "fr": "Le DN d'une entrée de cet annuaire est attendu",
141
+ "mn": "Энэ лавлахын бичлэгийн DN оруулна уу"
128
142
  }
129
143
  },
130
144
  "required": false,
131
145
  "role": "owners",
132
146
  "label": {
133
147
  "en": "Owners",
134
- "fr": "Propriétaires"
148
+ "fr": "Propriétaires",
149
+ "mn": "Эзэмшигчид"
135
150
  }
136
151
  },
137
152
  "twakeDepartmentLink": {
@@ -141,7 +156,8 @@
141
156
  "role": "organizationLink",
142
157
  "label": {
143
158
  "en": "Department",
144
- "fr": "Organisation"
159
+ "fr": "Organisation",
160
+ "mn": "Байгууллага"
145
161
  }
146
162
  },
147
163
  "twakeDepartmentPath": {
@@ -152,7 +168,8 @@
152
168
  "role": "organizationPath",
153
169
  "label": {
154
170
  "en": "Department path",
155
- "fr": "Chemin"
171
+ "fr": "Chemin",
172
+ "mn": "Зам"
156
173
  }
157
174
  }
158
175
  }
@@ -7,28 +7,34 @@
7
7
  "pluralName": "accountStatuses",
8
8
  "label": {
9
9
  "en": "Account states",
10
- "fr": "États de compte"
10
+ "fr": "États de compte",
11
+ "mn": "Бүртгэлийн төлөвүүд"
11
12
  },
12
13
  "singularLabel": {
13
14
  "en": "account state",
14
- "fr": "état de compte"
15
+ "fr": "état de compte",
16
+ "mn": "бүртгэлийн төлөв"
15
17
  },
16
18
  "valueLabels": {
17
19
  "active": {
18
20
  "en": "Active",
19
- "fr": "Actif"
21
+ "fr": "Actif",
22
+ "mn": "Идэвхтэй"
20
23
  },
21
24
  "disabled": {
22
25
  "en": "Disabled",
23
- "fr": "Désactivé"
26
+ "fr": "Désactivé",
27
+ "mn": "Идэвхгүй"
24
28
  },
25
29
  "noaccess": {
26
30
  "en": "No access",
27
- "fr": "Sans accès"
31
+ "fr": "Sans accès",
32
+ "mn": "Хандах эрхгүй"
28
33
  },
29
34
  "todelete": {
30
35
  "en": "To delete",
31
- "fr": "À supprimer"
36
+ "fr": "À supprimer",
37
+ "mn": "Устгах"
32
38
  }
33
39
  },
34
40
  "base": "ou=twakeAccountStatus,ou=nomenclature,{ldap_base}"
@@ -50,7 +56,8 @@
50
56
  "required": true,
51
57
  "label": {
52
58
  "en": "Name",
53
- "fr": "Nom"
59
+ "fr": "Nom",
60
+ "mn": "Нэр"
54
61
  }
55
62
  },
56
63
  "description": {
@@ -58,7 +65,8 @@
58
65
  "required": false,
59
66
  "label": {
60
67
  "en": "Description",
61
- "fr": "Description"
68
+ "fr": "Description",
69
+ "mn": "Тайлбар"
62
70
  }
63
71
  }
64
72
  }
@@ -7,24 +7,29 @@
7
7
  "pluralName": "deliveryModes",
8
8
  "label": {
9
9
  "en": "Delivery modes",
10
- "fr": "Modes de distribution"
10
+ "fr": "Modes de distribution",
11
+ "mn": "Хүргэлтийн горимууд"
11
12
  },
12
13
  "singularLabel": {
13
14
  "en": "delivery mode",
14
- "fr": "mode de distribution"
15
+ "fr": "mode de distribution",
16
+ "mn": "хүргэлтийн горим"
15
17
  },
16
18
  "valueLabels": {
17
19
  "normal": {
18
20
  "en": "Normal",
19
- "fr": "Normale"
21
+ "fr": "Normale",
22
+ "mn": "Энгийн"
20
23
  },
21
24
  "forward": {
22
25
  "en": "Forwarded",
23
- "fr": "Transférée"
26
+ "fr": "Transférée",
27
+ "mn": "Дамжуулсан"
24
28
  },
25
29
  "localDelivery": {
26
30
  "en": "Forwarded, local copy kept",
27
- "fr": "Transférée, copie locale conservée"
31
+ "fr": "Transférée, copie locale conservée",
32
+ "mn": "Дамжуулсан, дотоод хуулбарыг хадгалсан"
28
33
  }
29
34
  },
30
35
  "base": "ou=twakeDeliveryMode,ou=nomenclature,{ldap_base}"
@@ -46,7 +51,8 @@
46
51
  "required": true,
47
52
  "label": {
48
53
  "en": "Name",
49
- "fr": "Nom"
54
+ "fr": "Nom",
55
+ "mn": "Нэр"
50
56
  }
51
57
  },
52
58
  "description": {
@@ -54,7 +60,8 @@
54
60
  "required": false,
55
61
  "label": {
56
62
  "en": "Description",
57
- "fr": "Description"
63
+ "fr": "Description",
64
+ "mn": "Тайлбар"
58
65
  }
59
66
  }
60
67
  }
@@ -8,11 +8,13 @@
8
8
  "base": "ou=domains,ou=nomenclature,{ldap_base}",
9
9
  "label": {
10
10
  "en": "Mail domains",
11
- "fr": "Domaines de messagerie"
11
+ "fr": "Domaines de messagerie",
12
+ "mn": "Имэйлийн домэйнууд"
12
13
  },
13
14
  "singularLabel": {
14
15
  "en": "domain",
15
- "fr": "domaine"
16
+ "fr": "domaine",
17
+ "mn": "домэйн"
16
18
  }
17
19
  },
18
20
  "strict": true,
@@ -31,13 +33,15 @@
31
33
  "test": "^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
32
34
  "hint": {
33
35
  "en": "A single domain label: letters, digits and hyphens, e.g. example",
34
- "fr": "Un seul élément de nom de domaine : lettres, chiffres et tirets, par ex. example"
36
+ "fr": "Un seul élément de nom de domaine : lettres, chiffres et tirets, par ex. example",
37
+ "mn": "Домэйн нэрийн нэг хэсэг: үсэг, тоо болон зураас, жишээ нь example"
35
38
  },
36
39
  "required": true,
37
40
  "role": "identifier",
38
41
  "label": {
39
42
  "en": "Identifier",
40
- "fr": "Identifiant"
43
+ "fr": "Identifiant",
44
+ "mn": "Тодорхойлогч"
41
45
  }
42
46
  },
43
47
  "associatedDomain": {
@@ -45,13 +49,15 @@
45
49
  "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])?)+$|^\\*$",
46
50
  "hint": {
47
51
  "en": "A fully qualified domain name (example.org), or * to allow every domain",
48
- "fr": "Un nom de domaine complet (example.org), ou * pour autoriser tous les domaines"
52
+ "fr": "Un nom de domaine complet (example.org), ou * pour autoriser tous les domaines",
53
+ "mn": "Бүтэн домэйн нэр (example.org), эсвэл бүх домэйныг зөвшөөрөх бол *"
49
54
  },
50
55
  "required": true,
51
56
  "role": ["domainName", "displayName"],
52
57
  "label": {
53
58
  "en": "Mail domain",
54
- "fr": "Domaine de messagerie"
59
+ "fr": "Domaine de messagerie",
60
+ "mn": "Имэйлийн домэйн"
55
61
  }
56
62
  },
57
63
  "description": {
@@ -59,7 +65,8 @@
59
65
  "required": false,
60
66
  "label": {
61
67
  "en": "Description",
62
- "fr": "Description"
68
+ "fr": "Description",
69
+ "mn": "Тайлбар"
63
70
  }
64
71
  }
65
72
  }
@@ -7,24 +7,29 @@
7
7
  "pluralName": "listTypes",
8
8
  "label": {
9
9
  "en": "List types",
10
- "fr": "Types de liste"
10
+ "fr": "Types de liste",
11
+ "mn": "Жагсаалтын төрлүүд"
11
12
  },
12
13
  "singularLabel": {
13
14
  "en": "list type",
14
- "fr": "type de liste"
15
+ "fr": "type de liste",
16
+ "mn": "жагсаалтын төрөл"
15
17
  },
16
18
  "valueLabels": {
17
19
  "openList": {
18
20
  "en": "Open to all",
19
- "fr": "Ouverte à tous"
21
+ "fr": "Ouverte à tous",
22
+ "mn": "Бүх хүнд нээлттэй"
20
23
  },
21
24
  "memberRestrictedList": {
22
25
  "en": "Members only",
23
- "fr": "Réservée aux membres"
26
+ "fr": "Réservée aux membres",
27
+ "mn": "Зөвхөн гишүүдэд"
24
28
  },
25
29
  "ownerRestrictedList": {
26
30
  "en": "Owners only",
27
- "fr": "Réservée aux propriétaires"
31
+ "fr": "Réservée aux propriétaires",
32
+ "mn": "Зөвхөн эзэмшигчдэд"
28
33
  }
29
34
  },
30
35
  "base": "ou=twakeListType,ou=nomenclature,{ldap_base}"
@@ -46,7 +51,8 @@
46
51
  "required": true,
47
52
  "label": {
48
53
  "en": "Name",
49
- "fr": "Nom"
54
+ "fr": "Nom",
55
+ "mn": "Нэр"
50
56
  }
51
57
  },
52
58
  "description": {
@@ -54,7 +60,8 @@
54
60
  "required": false,
55
61
  "label": {
56
62
  "en": "Description",
57
- "fr": "Description"
63
+ "fr": "Description",
64
+ "mn": "Тайлбар"
58
65
  }
59
66
  }
60
67
  }
@@ -7,24 +7,29 @@
7
7
  "pluralName": "mailboxTypes",
8
8
  "label": {
9
9
  "en": "Group types",
10
- "fr": "Types de groupe"
10
+ "fr": "Types de groupe",
11
+ "mn": "Бүлгийн төрлүүд"
11
12
  },
12
13
  "singularLabel": {
13
14
  "en": "group type",
14
- "fr": "type de groupe"
15
+ "fr": "type de groupe",
16
+ "mn": "бүлгийн төрөл"
15
17
  },
16
18
  "valueLabels": {
17
19
  "group": {
18
20
  "en": "Group",
19
- "fr": "Groupe"
21
+ "fr": "Groupe",
22
+ "mn": "Бүлэг"
20
23
  },
21
24
  "mailingList": {
22
25
  "en": "Distribution list",
23
- "fr": "Liste de diffusion"
26
+ "fr": "Liste de diffusion",
27
+ "mn": "Түгээх жагсаалт"
24
28
  },
25
29
  "teamMailbox": {
26
30
  "en": "Shared mailbox",
27
- "fr": "Boîte partagée"
31
+ "fr": "Boîte partagée",
32
+ "mn": "Хамтын шуудангийн хайрцаг"
28
33
  }
29
34
  },
30
35
  "base": "ou=twakeMailboxType,ou=nomenclature,{ldap_base}"
@@ -46,7 +51,8 @@
46
51
  "required": true,
47
52
  "label": {
48
53
  "en": "Name",
49
- "fr": "Nom"
54
+ "fr": "Nom",
55
+ "mn": "Нэр"
50
56
  }
51
57
  },
52
58
  "description": {
@@ -54,7 +60,8 @@
54
60
  "required": false,
55
61
  "label": {
56
62
  "en": "Description",
57
- "fr": "Description"
63
+ "fr": "Description",
64
+ "mn": "Тайлбар"
58
65
  }
59
66
  }
60
67
  }
@@ -7,44 +7,54 @@
7
7
  "pluralName": "titles",
8
8
  "label": {
9
9
  "en": "Titles",
10
- "fr": "Civilités"
10
+ "fr": "Civilités",
11
+ "mn": "Хандах хэлбэрүүд"
11
12
  },
12
13
  "singularLabel": {
13
14
  "en": "title",
14
- "fr": "civilité"
15
+ "fr": "civilité",
16
+ "mn": "хандах хэлбэр"
15
17
  },
16
18
  "valueLabels": {
17
19
  "Dr": {
18
20
  "en": "Dr",
19
- "fr": "Dr"
21
+ "fr": "Dr",
22
+ "mn": "Др."
20
23
  },
21
24
  "Mr": {
22
25
  "en": "Mr",
23
- "fr": "M."
26
+ "fr": "M.",
27
+ "mn": "Ноён"
24
28
  },
25
29
  "Mrs": {
26
30
  "en": "Mrs",
27
- "fr": "Mme"
31
+ "fr": "Mme",
32
+ "mn": "Хатагтай"
28
33
  },
29
34
  "Miss": {
30
35
  "en": "Miss",
31
- "fr": "Mlle"
36
+ "fr": "Mlle",
37
+ "mn": "Авхай"
32
38
  },
33
39
  "Ms": {
34
40
  "en": "Ms",
35
- "fr": "Mme"
41
+ "fr": "Mme",
42
+ "mn": "Хатагтай"
36
43
  },
37
44
  "Prof": {
38
45
  "en": "Prof.",
39
- "fr": "Pr"
46
+ "fr": "Pr",
47
+ "mn": "Проф."
40
48
  },
41
49
  "Hon": {
42
50
  "en": "Hon.",
43
- "fr": "Honorable"
51
+ "fr": "Honorable",
52
+ "mn": "Эрхэм"
44
53
  },
45
54
  "Excellence": {
46
55
  "en": "Excellency",
47
- "fr": "Excellence"
56
+ "fr": "Excellence",
57
+ "mn": "Эрхэмсэг"
48
58
  }
49
59
  },
50
60
  "base": "ou=twakeTitle,ou=nomenclature,{ldap_base}"
@@ -66,7 +76,8 @@
66
76
  "required": true,
67
77
  "label": {
68
78
  "en": "Name",
69
- "fr": "Nom"
79
+ "fr": "Nom",
80
+ "mn": "Нэр"
70
81
  }
71
82
  },
72
83
  "description": {
@@ -74,7 +85,8 @@
74
85
  "required": false,
75
86
  "label": {
76
87
  "en": "Description",
77
- "fr": "Description"
88
+ "fr": "Description",
89
+ "mn": "Тайлбар"
78
90
  }
79
91
  }
80
92
  }