@nymphjs/tilmeld 1.0.0-beta.85 → 1.0.0-beta.87

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/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.0.0-beta.87](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.86...v1.0.0-beta.87) (2025-01-20)
7
+
8
+ ### Features
9
+
10
+ - deprecate node client and allow multiple client instances to each log in own users ([17b42f4](https://github.com/sciactive/nymphjs/commit/17b42f449f2355a3ce896b8e86a47edd660e9277))
11
+
12
+ # [1.0.0-beta.86](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.85...v1.0.0-beta.86) (2024-12-28)
13
+
14
+ ### Features
15
+
16
+ - add domain support ([c965008](https://github.com/sciactive/nymphjs/commit/c96500811a4d64ab4e80eca6acdfbfdfae1de076))
17
+
6
18
  # [1.0.0-beta.85](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.84...v1.0.0-beta.85) (2024-12-27)
7
19
 
8
20
  **Note:** Version bump only for package @nymphjs/tilmeld
package/README.md CHANGED
@@ -64,7 +64,7 @@ The admin and switch abilities cannot be inherited from groups.
64
64
 
65
65
  # License
66
66
 
67
- Copyright 2021-2024 SciActive Inc
67
+ Copyright 2021-2025 SciActive Inc
68
68
 
69
69
  Licensed under the Apache License, Version 2.0 (the "License");
70
70
  you may not use this file except in compliance with the License.
package/dist/Group.d.ts CHANGED
@@ -84,6 +84,10 @@ export default class Group extends AbleObject<GroupData> {
84
84
  * This should only be used by the backend.
85
85
  */
86
86
  private $skipAcWhenDeleting;
87
+ /**
88
+ * Used to save the current groupname for domain admin permissions.
89
+ */
90
+ $originalGroupname?: string;
87
91
  static factoryGroupname(groupname?: string): Promise<Group & GroupData>;
88
92
  /**
89
93
  * Get all the groups that can be assigned as primary groups.
@@ -108,7 +112,8 @@ export default class Group extends AbleObject<GroupData> {
108
112
  $getAvatar(): string;
109
113
  $jsonAcceptData(input: EntityJson, allowConflict?: boolean): void;
110
114
  $jsonAcceptPatch(patch: EntityPatch, allowConflict?: boolean): void;
111
- $putData(data: EntityData, sdata?: SerializedEntityData): void;
115
+ private $checkIncomingAbilities;
116
+ $putData(data: EntityData, sdata?: SerializedEntityData, source?: 'server'): void;
112
117
  /**
113
118
  * Update the data protection arrays for a user.
114
119
  *
package/dist/Group.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import crypto from 'node:crypto';
2
- import { difference } from 'lodash-es';
2
+ import { difference, xor } from 'lodash-es';
3
+ import { splitn } from '@sciactive/splitn';
3
4
  import { enforceTilmeld } from './enforceTilmeld.js';
4
5
  import AbleObject from './AbleObject.js';
5
- import { BadDataError, BadEmailError, BadUsernameError, CouldNotChangeDefaultPrimaryGroupError, } from './errors/index.js';
6
+ import { AccessControlError, BadDataError, BadEmailError, BadUsernameError, CouldNotChangeDefaultPrimaryGroupError, } from './errors/index.js';
6
7
  /**
7
8
  * A user group data model.
8
9
  *
@@ -46,6 +47,10 @@ export default class Group extends AbleObject {
46
47
  * This should only be used by the backend.
47
48
  */
48
49
  $skipAcWhenDeleting = false;
50
+ /**
51
+ * Used to save the current groupname for domain admin permissions.
52
+ */
53
+ $originalGroupname;
49
54
  static async factoryGroupname(groupname) {
50
55
  const entity = new this();
51
56
  if (groupname != null) {
@@ -160,59 +165,55 @@ export default class Group extends AbleObject {
160
165
  '?d=identicon&s=40');
161
166
  }
162
167
  $jsonAcceptData(input, allowConflict = false) {
163
- const tilmeld = enforceTilmeld(this);
164
168
  this.$check();
165
- if ('abilities' in input.data &&
166
- input.data.abilities?.includes('system/admin') !==
167
- this.$data.abilities?.includes('system/admin') &&
168
- (!tilmeld.currentUser ||
169
- !tilmeld.currentUser.abilities?.includes('system/admin'))) {
170
- throw new BadDataError("You don't have the authority to grant or revoke system/admin.");
171
- }
172
- if ('abilities' in input.data &&
173
- input.data.abilities?.includes('tilmeld/admin') !==
174
- this.$data.abilities?.includes('tilmeld/admin') &&
175
- (!tilmeld.currentUser ||
176
- !tilmeld.currentUser.abilities?.includes('system/admin'))) {
177
- throw new BadDataError("You don't have the authority to grant or revoke tilmeld/admin.");
178
- }
179
- if ('abilities' in input.data &&
180
- input.data.abilities?.includes('tilmeld/switch') !==
181
- this.$data.abilities?.includes('tilmeld/switch') &&
182
- (!tilmeld.currentUser ||
183
- !tilmeld.currentUser.abilities?.includes('system/admin'))) {
184
- throw new BadDataError("You don't have the authority to grant or revoke tilmeld/switch.");
169
+ if ('abilities' in input.data) {
170
+ this.$checkIncomingAbilities(input.data.abilities);
185
171
  }
186
172
  super.$jsonAcceptData(input, allowConflict);
187
173
  }
188
174
  $jsonAcceptPatch(patch, allowConflict = false) {
189
- const tilmeld = enforceTilmeld(this);
190
175
  this.$check();
191
- if ('abilities' in patch.set &&
192
- patch.set.abilities?.includes('system/admin') !==
193
- this.$data.abilities?.includes('system/admin') &&
176
+ if ('abilities' in patch.set) {
177
+ this.$checkIncomingAbilities(patch.set.abilities);
178
+ }
179
+ super.$jsonAcceptPatch(patch, allowConflict);
180
+ }
181
+ $checkIncomingAbilities(incoming) {
182
+ const tilmeld = enforceTilmeld(this);
183
+ if (!Array.isArray(incoming) ||
184
+ incoming.find((ability) => typeof ability !== 'string')) {
185
+ throw new BadDataError('Abilities must be an array of strings.');
186
+ }
187
+ if (incoming.includes('system/admin') !==
188
+ this.$data.abilities?.includes('system/admin') &&
194
189
  (!tilmeld.currentUser ||
195
190
  !tilmeld.currentUser.abilities?.includes('system/admin'))) {
196
191
  throw new BadDataError("You don't have the authority to grant or revoke system/admin.");
197
192
  }
198
- if ('abilities' in patch.set &&
199
- patch.set.abilities?.includes('tilmeld/admin') !==
200
- this.$data.abilities?.includes('tilmeld/admin') &&
193
+ if (incoming.includes('tilmeld/admin') !==
194
+ this.$data.abilities?.includes('tilmeld/admin') &&
201
195
  (!tilmeld.currentUser ||
202
196
  !tilmeld.currentUser.abilities?.includes('system/admin'))) {
203
197
  throw new BadDataError("You don't have the authority to grant or revoke tilmeld/admin.");
204
198
  }
205
- if ('abilities' in patch.set &&
206
- patch.set.abilities?.includes('tilmeld/switch') !==
207
- this.$data.abilities?.includes('tilmeld/switch') &&
199
+ if (incoming.includes('tilmeld/switch') !==
200
+ this.$data.abilities?.includes('tilmeld/switch') &&
208
201
  (!tilmeld.currentUser ||
209
202
  !tilmeld.currentUser.abilities?.includes('system/admin'))) {
210
203
  throw new BadDataError("You don't have the authority to grant or revoke tilmeld/switch.");
211
204
  }
212
- super.$jsonAcceptPatch(patch, allowConflict);
205
+ if (xor(incoming.filter((ability) => ability.startsWith('tilmeld/')), this.$data.abilities?.filter((ability) => ability.startsWith('tilmeld/')) ?? []).length &&
206
+ (!tilmeld.currentUser ||
207
+ (!tilmeld.currentUser.abilities?.includes('system/admin') &&
208
+ !tilmeld.currentUser.abilities?.includes('tilmeld/admin')))) {
209
+ throw new BadDataError("You don't have the authority to grant or revoke Tilmeld abilities.");
210
+ }
213
211
  }
214
- $putData(data, sdata) {
215
- super.$putData(data, sdata);
212
+ $putData(data, sdata, source) {
213
+ super.$putData(data, sdata, source);
214
+ if (source === 'server') {
215
+ this.$originalGroupname = this.$data.groupname;
216
+ }
216
217
  this.$updateDataProtection();
217
218
  }
218
219
  /**
@@ -223,6 +224,13 @@ export default class Group extends AbleObject {
223
224
  $updateDataProtection(givenUser) {
224
225
  const tilmeld = enforceTilmeld(this);
225
226
  let user = givenUser ?? tilmeld.User.current();
227
+ let [_groupname, domain] = tilmeld.config.domainSupport
228
+ ? splitn(this.$data.groupname ?? '', '@', 2)
229
+ : [this.$data.groupname, null];
230
+ // Lowercase the domain part.
231
+ if (domain) {
232
+ domain = domain.toLowerCase();
233
+ }
226
234
  this.$privateData = [...Group.DEFAULT_PRIVATE_DATA];
227
235
  this.$allowlistData = [...Group.DEFAULT_ALLOWLIST_DATA];
228
236
  if (tilmeld.config.emailUsernames) {
@@ -241,6 +249,13 @@ export default class Group extends AbleObject {
241
249
  // Users can see their group's data.
242
250
  this.$privateData = [];
243
251
  }
252
+ else if (user != null &&
253
+ tilmeld.config.domainSupport &&
254
+ domain &&
255
+ user.abilities?.includes(`tilmeld/domain/${domain}/admin`)) {
256
+ // Domain admins can see their groups' data.
257
+ this.$privateData = [];
258
+ }
244
259
  }
245
260
  /**
246
261
  * Check whether the group is a descendant of a group.
@@ -379,10 +394,21 @@ export default class Group extends AbleObject {
379
394
  async $checkGroupname() {
380
395
  const tilmeld = enforceTilmeld(this);
381
396
  if (!tilmeld.config.emailUsernames) {
382
- if (this.$data.groupname == null || !this.$data.groupname.length) {
397
+ let [groupname, domain] = tilmeld.config.domainSupport
398
+ ? splitn(this.$data.groupname ?? '', '@', 2)
399
+ : [this.$data.groupname, null];
400
+ // Lowercase the domain part.
401
+ if (domain) {
402
+ domain = domain.toLowerCase();
403
+ this.$data.groupname = `${groupname}@${domain}`;
404
+ }
405
+ if (this.$data.groupname == null ||
406
+ !this.$data.groupname.length ||
407
+ groupname == null ||
408
+ !groupname.length) {
383
409
  return { result: false, message: 'Please specify a groupname.' };
384
410
  }
385
- if (this.$data.groupname.length < tilmeld.config.minUsernameLength) {
411
+ if (groupname.length < tilmeld.config.minUsernameLength) {
386
412
  return {
387
413
  result: false,
388
414
  message: 'Groupnames must be at least ' +
@@ -390,7 +416,7 @@ export default class Group extends AbleObject {
390
416
  ' characters.',
391
417
  };
392
418
  }
393
- if (this.$data.groupname.length > tilmeld.config.maxUsernameLength) {
419
+ if (groupname.length > tilmeld.config.maxUsernameLength) {
394
420
  return {
395
421
  result: false,
396
422
  message: 'Groupnames must not exceed ' +
@@ -398,18 +424,34 @@ export default class Group extends AbleObject {
398
424
  ' characters.',
399
425
  };
400
426
  }
401
- if (difference(this.$data.groupname.split(''), tilmeld.config.validChars.split('')).length) {
427
+ if (difference(groupname.split(''), tilmeld.config.validChars.split(''))
428
+ .length) {
402
429
  return {
403
430
  result: false,
404
431
  message: tilmeld.config.validCharsNotice,
405
432
  };
406
433
  }
407
- if (!tilmeld.config.validRegex.test(this.$data.groupname)) {
434
+ if (!tilmeld.config.validRegex.test(groupname)) {
408
435
  return {
409
436
  result: false,
410
437
  message: tilmeld.config.validRegexNotice,
411
438
  };
412
439
  }
440
+ if (domain != null) {
441
+ if (!tilmeld.config.validDomainRegex.test(domain)) {
442
+ return {
443
+ result: false,
444
+ message: tilmeld.config.validDomainRegexNotice,
445
+ };
446
+ }
447
+ if (!this.$is(tilmeld.currentUser?.group) &&
448
+ !tilmeld.gatekeeper(`tilmeld/domain/${domain}/admin`)) {
449
+ return {
450
+ result: false,
451
+ message: "You don't have the authority to manage groups on this domain.",
452
+ };
453
+ }
454
+ }
413
455
  const selector = {
414
456
  type: '&',
415
457
  ilike: [
@@ -496,6 +538,37 @@ export default class Group extends AbleObject {
496
538
  if (this.$data.groupname == null || !this.$data.groupname.trim().length) {
497
539
  return false;
498
540
  }
541
+ // Lowercase the domain part.
542
+ if (tilmeld.config.domainSupport) {
543
+ const [groupname, domain] = splitn(this.$data.groupname ?? '', '@', 2);
544
+ if (domain) {
545
+ this.$data.groupname = `${groupname}@${domain.toLowerCase()}`;
546
+ }
547
+ }
548
+ if (tilmeld.config.domainSupport) {
549
+ const [_groupname, domain] = splitn(this.$data.groupname ?? '', '@', 2);
550
+ const [_originalGroupname, originalDomain] = splitn(this.$originalGroupname ?? '', '@', 2);
551
+ if (this.guid != null &&
552
+ ((originalDomain == null && domain != null) ||
553
+ (domain == null && originalDomain != null))) {
554
+ throw new AccessControlError("Groups can't switch to or from having a domain once created.");
555
+ }
556
+ if (!this.$skipAcWhenSaving &&
557
+ !tilmeld.gatekeeper('tilmeld/admin') &&
558
+ !tilmeld.gatekeeper('system/admin')) {
559
+ if (domain != null &&
560
+ !this.$is(tilmeld.currentUser) &&
561
+ !tilmeld.gatekeeper(`tilmeld/domain/${domain}/admin`)) {
562
+ throw new AccessControlError("You don't have the authority to modify groups on this domain.");
563
+ }
564
+ if (originalDomain != null &&
565
+ originalDomain !== domain &&
566
+ (!tilmeld.gatekeeper(`tilmeld/domain/${domain}/admin`) ||
567
+ !tilmeld.gatekeeper(`tilmeld/domain/${originalDomain}/admin`))) {
568
+ throw new AccessControlError("You don't have the authority to modify groups on this domain.");
569
+ }
570
+ }
571
+ }
499
572
  // Formatting.
500
573
  this.$data.groupname = this.$data.groupname.trim();
501
574
  if (tilmeld.config.emailUsernames) {
@@ -535,15 +608,21 @@ export default class Group extends AbleObject {
535
608
  if (!this.$data.unverifiedSecondary) {
536
609
  delete this.$data.unverifiedSecondary;
537
610
  }
538
- // Groups should never have 'system/admin', 'tilmeld/admin', or
539
- // 'tilmeld/switch' abilities.
540
- this.$data.abilities = difference(this.$data.abilities ?? [], [
541
- 'system/admin',
542
- 'tilmeld/admin',
543
- 'tilmeld/switch',
544
- null,
545
- undefined,
546
- ]);
611
+ // Groups should never have 'system/admin', 'tilmeld/admin',
612
+ // 'tilmeld/switch', or domain admin abilities.
613
+ this.$data.abilities = (this.$data.abilities ?? []).filter((ability) => {
614
+ if (['system/admin', 'tilmeld/admin', 'tilmeld/switch'].indexOf(ability) !==
615
+ -1) {
616
+ return false;
617
+ }
618
+ if (ability == null) {
619
+ return false;
620
+ }
621
+ if (ability.startsWith('tilmeld/domain/') && ability.endsWith('/admin')) {
622
+ return false;
623
+ }
624
+ return true;
625
+ });
547
626
  // Verification.
548
627
  const unCheck = await this.$checkGroupname();
549
628
  if (!unCheck.result) {
@@ -584,7 +663,11 @@ export default class Group extends AbleObject {
584
663
  }
585
664
  }
586
665
  }
587
- return await super.$save();
666
+ const ret = await super.$save();
667
+ if (ret) {
668
+ this.$originalGroupname = this.$data.groupname;
669
+ }
670
+ return ret;
588
671
  }
589
672
  /*
590
673
  * This should *never* be accessible on the client.
@@ -603,7 +686,10 @@ export default class Group extends AbleObject {
603
686
  async $delete() {
604
687
  let tilmeld = enforceTilmeld(this);
605
688
  if (!this.$skipAcWhenDeleting && !tilmeld.gatekeeper('tilmeld/admin')) {
606
- throw new BadDataError("You don't have the authority to delete groups.");
689
+ throw new AccessControlError("You don't have the authority to delete groups.");
690
+ }
691
+ if (this.$data.groupname !== this.$originalGroupname) {
692
+ throw new AccessControlError("You can't delete a group while switching its groupname.");
607
693
  }
608
694
  const transaction = 'tilmeld-delete-' + this.guid;
609
695
  const nymph = this.$nymph;
@@ -659,9 +745,9 @@ export default class Group extends AbleObject {
659
745
  }
660
746
  }
661
747
  // Delete the group.
662
- const success = await super.$delete();
748
+ let success = await super.$delete();
663
749
  if (success) {
664
- await tnymph.commit(transaction);
750
+ success = await tnymph.commit(transaction);
665
751
  }
666
752
  else {
667
753
  await tnymph.rollback(transaction);
package/dist/Group.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Group.js","sourceRoot":"","sources":["../src/Group.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Group.js","sourceRoot":"","sources":["../src/Group.ts"],"names":[],"mappings":"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"}
package/dist/Tilmeld.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { URL } from 'node:url';
2
2
  import { TilmeldAccessLevels, } from '@nymphjs/nymph';
3
3
  import { xor } from 'lodash-es';
4
+ import { splitn } from '@sciactive/splitn';
4
5
  import { ConfigDefaults as defaults } from './conf/index.js';
5
6
  import { AccessControlError } from './errors/index.js';
6
7
  import Group from './Group.js';
@@ -80,6 +81,9 @@ export default class Tilmeld {
80
81
  throw new Error(`All fields in regFields must also be in userFields: ${field}`);
81
82
  }
82
83
  }
84
+ if (this.config.emailUsernames && this.config.domainSupport) {
85
+ throw new Error('Email usernames and domain support cannot both be enabled.');
86
+ }
83
87
  }
84
88
  /**
85
89
  * This is used internally by Nymph. Don't call it yourself.
@@ -131,6 +135,8 @@ export default class Tilmeld {
131
135
  user.mdate = currentUserMDate;
132
136
  user.tags = currentUserTags;
133
137
  user.$putData(currentUserData, currentUserSData);
138
+ user.$originalEmail = this.currentUser.$originalEmail;
139
+ user.$originalUsername = this.currentUser.$originalUsername;
134
140
  this.currentUser = user;
135
141
  this.currentUser.$updateDataProtection();
136
142
  this.currentUser.$updateGroupDataProtection();
@@ -596,6 +602,18 @@ export default class Tilmeld {
596
602
  userOrEmpty.abilities?.includes('system/admin'))) {
597
603
  return true;
598
604
  }
605
+ // Users and groups that belong to a domain are readable and editable by
606
+ // that domain's admins.
607
+ if (this.config.domainSupport &&
608
+ (entity instanceof User || entity instanceof Group)) {
609
+ const [_local, domain] = splitn((entity instanceof User
610
+ ? entity.username
611
+ : entity.groupname) ?? '', '@', 2);
612
+ if (domain &&
613
+ userOrEmpty.abilities?.includes(`tilmeld/domain/${domain}/admin`)) {
614
+ return true;
615
+ }
616
+ }
599
617
  // Load access control, since we need it now...
600
618
  const acUser = acProperties.acUser ?? TilmeldAccessLevels.FULL_ACCESS;
601
619
  const acGroup = acProperties.acGroup ?? TilmeldAccessLevels.READ_ACCESS;