@nymphjs/tilmeld 1.0.0-beta.17 → 1.0.0-beta.19

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,25 @@
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.19](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.18...v1.0.0-beta.19) (2023-04-29)
7
+
8
+ ### Bug Fixes
9
+
10
+ - some type issues ([ee69d5d](https://github.com/sciactive/nymphjs/commit/ee69d5d73361dacda5745d697df18fafd47810bc))
11
+
12
+ # [1.0.0-beta.18](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.17...v1.0.0-beta.18) (2023-04-27)
13
+
14
+ ### Bug Fixes
15
+
16
+ - small type issues ([b91579c](https://github.com/sciactive/nymphjs/commit/b91579c9c1e96500d903332648f5a93c9a7e7d9b))
17
+
18
+ ### Features
19
+
20
+ - add enforceTilmeld function ([130faf1](https://github.com/sciactive/nymphjs/commit/130faf151dcdfbfacd6814833868907dca037d24))
21
+ - add the ability to switch to a user without their password ([ca4466a](https://github.com/sciactive/nymphjs/commit/ca4466af1704d68905ac087350a8cf151c1072d9))
22
+ - forbid modifying ac props from client ([f9e896f](https://github.com/sciactive/nymphjs/commit/f9e896f6c57b08ae100bc50d33a0234b6a431333))
23
+ - remove access control bypass for sysadmins and ownerless entities, no longer needed ([345bbf4](https://github.com/sciactive/nymphjs/commit/345bbf4fd78a8f9d6d01fd0be8337854a1277ce6))
24
+
6
25
  # [1.0.0-beta.17](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.16...v1.0.0-beta.17) (2023-04-24)
7
26
 
8
27
  **Note:** Version bump only for package @nymphjs/tilmeld
package/README.md CHANGED
@@ -49,6 +49,19 @@ const { User, Group } = tilmeld;
49
49
 
50
50
  See the [config declaration file](src/conf/d.ts).
51
51
 
52
+ ## Abilities
53
+
54
+ There are a few abilities that Tilmeld uses internally:
55
+
56
+ - `system/admin` - A user with this ability has **all** abilities.
57
+ - `tilmeld/admin` - Allow the user to manage and edit other user's account and group information and grant/revoke abilities.
58
+ - `tilmeld/switch` - Allow the user to switch to other users (log in as them without their password).
59
+ - `uid/get/[name]` - Allow the user to read the named UID.
60
+ - `uid/new/[name]` - Allow the user to read, create, and increment the named UID.
61
+ - `uid/set/[name]` - Allow the user to read, create, increment, set, and delete the named UID.
62
+
63
+ The admin and switch abilities cannot be inherited from groups.
64
+
52
65
  # License
53
66
 
54
67
  Copyright 2021 SciActive Inc
package/dist/Group.js CHANGED
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const md5_1 = __importDefault(require("crypto-js/md5"));
7
7
  const lodash_1 = require("lodash");
8
+ const enforceTilmeld_1 = require("./enforceTilmeld");
8
9
  const AbleObject_1 = __importDefault(require("./AbleObject"));
9
10
  const errors_1 = require("./errors");
10
11
  class Group extends AbleObject_1.default {
@@ -95,24 +96,48 @@ class Group extends AbleObject_1.default {
95
96
  '?d=identicon&s=40');
96
97
  }
97
98
  $jsonAcceptData(input, allowConflict = false) {
98
- const tilmeld = this.$nymph.tilmeld;
99
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
99
100
  this.$referenceWake();
100
- if (input.data.abilities?.indexOf('system/admin') !== -1 &&
101
- this.$data.abilities?.indexOf('system/admin') === -1 &&
102
- tilmeld.gatekeeper('tilmeld/admin') &&
101
+ if ('abilities' in input.data &&
102
+ input.data.abilities?.includes('system/admin') !==
103
+ this.$data.abilities?.includes('system/admin') &&
103
104
  !tilmeld.gatekeeper('system/admin')) {
104
- throw new errors_1.BadDataError("You don't have the authority to make this group a system admin.");
105
+ throw new errors_1.BadDataError("You don't have the authority to grant or revoke system/admin.");
106
+ }
107
+ if ('abilities' in input.data &&
108
+ input.data.abilities?.includes('tilmeld/admin') !==
109
+ this.$data.abilities?.includes('tilmeld/admin') &&
110
+ !tilmeld.gatekeeper('system/admin')) {
111
+ throw new errors_1.BadDataError("You don't have the authority to grant or revoke tilmeld/admin.");
112
+ }
113
+ if ('abilities' in input.data &&
114
+ input.data.abilities?.includes('tilmeld/switch') !==
115
+ this.$data.abilities?.includes('tilmeld/switch') &&
116
+ !tilmeld.gatekeeper('system/admin')) {
117
+ throw new errors_1.BadDataError("You don't have the authority to grant or revoke tilmeld/switch.");
105
118
  }
106
119
  super.$jsonAcceptData(input, allowConflict);
107
120
  }
108
121
  $jsonAcceptPatch(patch, allowConflict = false) {
109
- const tilmeld = this.$nymph.tilmeld;
122
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
110
123
  this.$referenceWake();
111
- if (patch.set.abilities?.indexOf('system/admin') !== -1 &&
112
- this.$data.abilities?.indexOf('system/admin') === -1 &&
113
- tilmeld.gatekeeper('tilmeld/admin') &&
124
+ if ('abilities' in patch.set &&
125
+ patch.set.abilities?.includes('system/admin') !==
126
+ this.$data.abilities?.includes('system/admin') &&
127
+ !tilmeld.gatekeeper('system/admin')) {
128
+ throw new errors_1.BadDataError("You don't have the authority to grant or revoke system/admin.");
129
+ }
130
+ if ('abilities' in patch.set &&
131
+ patch.set.abilities?.includes('tilmeld/admin') !==
132
+ this.$data.abilities?.includes('tilmeld/admin') &&
133
+ !tilmeld.gatekeeper('system/admin')) {
134
+ throw new errors_1.BadDataError("You don't have the authority to grant or revoke tilmeld/admin.");
135
+ }
136
+ if ('abilities' in patch.set &&
137
+ patch.set.abilities?.includes('tilmeld/switch') !==
138
+ this.$data.abilities?.includes('tilmeld/switch') &&
114
139
  !tilmeld.gatekeeper('system/admin')) {
115
- throw new errors_1.BadDataError("You don't have the authority to make this group a system admin.");
140
+ throw new errors_1.BadDataError("You don't have the authority to grant or revoke tilmeld/switch.");
116
141
  }
117
142
  super.$jsonAcceptPatch(patch, allowConflict);
118
143
  }
@@ -121,7 +146,7 @@ class Group extends AbleObject_1.default {
121
146
  this.$updateDataProtection();
122
147
  }
123
148
  $updateDataProtection(givenUser) {
124
- const tilmeld = this.$nymph.tilmeld;
149
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
125
150
  let user = givenUser ?? tilmeld.User.current();
126
151
  this.$privateData = [...Group.DEFAULT_PRIVATE_DATA];
127
152
  this.$allowlistData = [...Group.DEFAULT_ALLOWLIST_DATA];
@@ -141,7 +166,7 @@ class Group extends AbleObject_1.default {
141
166
  }
142
167
  }
143
168
  $isDescendant(givenGroup) {
144
- const tilmeld = this.$nymph.tilmeld;
169
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
145
170
  let group;
146
171
  if (typeof givenGroup === 'string') {
147
172
  group = tilmeld.Group.factorySync(givenGroup);
@@ -164,7 +189,7 @@ class Group extends AbleObject_1.default {
164
189
  return false;
165
190
  }
166
191
  async $getChildren() {
167
- const tilmeld = this.$nymph.tilmeld;
192
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
168
193
  return await this.$nymph.getEntities({ class: tilmeld.Group }, {
169
194
  type: '&',
170
195
  equal: ['enabled', true],
@@ -172,7 +197,7 @@ class Group extends AbleObject_1.default {
172
197
  });
173
198
  }
174
199
  async $getDescendants(andSelf = false) {
175
- const tilmeld = this.$nymph.tilmeld;
200
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
176
201
  let groups = [];
177
202
  const entities = await this.$nymph.getEntities({ class: tilmeld.Group }, {
178
203
  type: '&',
@@ -188,7 +213,7 @@ class Group extends AbleObject_1.default {
188
213
  return groups;
189
214
  }
190
215
  $getDescendantsSync(andSelf = false) {
191
- const tilmeld = this.$nymph.tilmeld;
216
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
192
217
  let groups = [];
193
218
  let entity;
194
219
  let offset = 0;
@@ -209,7 +234,7 @@ class Group extends AbleObject_1.default {
209
234
  return groups;
210
235
  }
211
236
  $getLevel() {
212
- const tilmeld = this.$nymph.tilmeld;
237
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
213
238
  let group = tilmeld.Group.factorySync(this.guid ?? undefined);
214
239
  let level = 0;
215
240
  while (group.parent != null && group.parent.cdate != null && level < 1024) {
@@ -219,7 +244,7 @@ class Group extends AbleObject_1.default {
219
244
  return level;
220
245
  }
221
246
  async $getUsers(descendants = false, limit, offset) {
222
- const tilmeld = this.$nymph.tilmeld;
247
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
223
248
  let groups = [];
224
249
  if (descendants) {
225
250
  groups = await this.$getDescendants();
@@ -248,7 +273,7 @@ class Group extends AbleObject_1.default {
248
273
  });
249
274
  }
250
275
  async $checkGroupname() {
251
- const tilmeld = this.$nymph.tilmeld;
276
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
252
277
  if (!tilmeld.config.emailUsernames) {
253
278
  if (this.$data.groupname == null || !this.$data.groupname.length) {
254
279
  return { result: false, message: 'Please specify a groupname.' };
@@ -311,7 +336,7 @@ class Group extends AbleObject_1.default {
311
336
  }
312
337
  }
313
338
  async $checkEmail() {
314
- const tilmeld = this.$nymph.tilmeld;
339
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
315
340
  if (this.$data.email === '') {
316
341
  return { result: true, message: '' };
317
342
  }
@@ -344,7 +369,7 @@ class Group extends AbleObject_1.default {
344
369
  };
345
370
  }
346
371
  async $save() {
347
- const tilmeld = this.$nymph.tilmeld;
372
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
348
373
  if (this.$data.groupname == null || !this.$data.groupname.trim().length) {
349
374
  return false;
350
375
  }
@@ -386,6 +411,7 @@ class Group extends AbleObject_1.default {
386
411
  this.$data.abilities = (0, lodash_1.difference)(this.$data.abilities ?? [], [
387
412
  'system/admin',
388
413
  'tilmeld/admin',
414
+ 'tilmeld/switch',
389
415
  null,
390
416
  undefined,
391
417
  ]);
@@ -435,7 +461,7 @@ class Group extends AbleObject_1.default {
435
461
  return false;
436
462
  }
437
463
  async $delete() {
438
- let tilmeld = this.$nymph.tilmeld;
464
+ let tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
439
465
  if (!tilmeld.gatekeeper('tilmeld/admin')) {
440
466
  throw new errors_1.BadDataError("You don't have the authority to delete groups.");
441
467
  }
@@ -443,7 +469,7 @@ class Group extends AbleObject_1.default {
443
469
  const nymph = this.$nymph;
444
470
  const tnymph = await nymph.startTransaction(transaction);
445
471
  this.$nymph = tnymph;
446
- tilmeld = this.$nymph.tilmeld;
472
+ tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
447
473
  const descendants = await this.$getDescendants();
448
474
  if (descendants.length) {
449
475
  for (let curGroup of descendants) {
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.d.ts CHANGED
@@ -13,6 +13,7 @@ export default class Tilmeld implements TilmeldInterface {
13
13
  request: Request | null;
14
14
  response: Response | null;
15
15
  private skipAuthenticate;
16
+ private alreadyLoggedOutSwitch;
16
17
  constructor(config: Partial<Config> & {
17
18
  jwtSecret: string;
18
19
  });
@@ -28,5 +29,7 @@ export default class Tilmeld implements TilmeldInterface {
28
29
  extractToken(token: string): Promise<(User & UserData) | null>;
29
30
  authenticate(skipXsrfToken?: boolean): boolean;
30
31
  login(user: User & UserData, sendAuthHeader: boolean, sendCookie?: boolean): boolean;
32
+ loginSwitch(user: User & UserData, sendAuthHeader: boolean, sendCookie?: boolean): boolean;
31
33
  logout(clearCookie?: boolean): void;
34
+ logoutSwitch(clearCookie?: boolean): void;
32
35
  }
package/dist/Tilmeld.js CHANGED
@@ -10,6 +10,7 @@ const conf_1 = require("./conf");
10
10
  const errors_1 = require("./errors");
11
11
  const Group_1 = __importDefault(require("./Group"));
12
12
  const User_1 = __importDefault(require("./User"));
13
+ const enforceTilmeld_1 = require("./enforceTilmeld");
13
14
  class Tilmeld {
14
15
  constructor(config) {
15
16
  this.nymph = {};
@@ -19,6 +20,7 @@ class Tilmeld {
19
20
  this.request = null;
20
21
  this.response = null;
21
22
  this.skipAuthenticate = false;
23
+ this.alreadyLoggedOutSwitch = false;
22
24
  this.config = { ...conf_1.ConfigDefaults, ...config };
23
25
  }
24
26
  clone() {
@@ -61,7 +63,7 @@ class Tilmeld {
61
63
  }
62
64
  initAccessControl() {
63
65
  const handleQuery = function (nymph, options, selectors) {
64
- const tilmeld = nymph.tilmeld;
66
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(nymph);
65
67
  if (!options ||
66
68
  !('skipAc' in options) ||
67
69
  !options.skipAc ||
@@ -89,7 +91,7 @@ class Tilmeld {
89
91
  };
90
92
  handleQuery.skipOnClone = true;
91
93
  const checkPermissionsDelete = async function (nymph, entity) {
92
- const tilmeld = nymph.tilmeld;
94
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(nymph);
93
95
  if (typeof entity.$tilmeldDeleteSkipAC === 'function' &&
94
96
  entity.$tilmeldDeleteSkipAC()) {
95
97
  return;
@@ -107,7 +109,7 @@ class Tilmeld {
107
109
  };
108
110
  checkPermissionsDeleteByID.skipOnClone = true;
109
111
  const checkPermissionsSaveAndFilterAcChanges = async function (nymph, entity) {
110
- const tilmeld = nymph.tilmeld;
112
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(nymph);
111
113
  if (!entity) {
112
114
  return;
113
115
  }
@@ -188,18 +190,16 @@ class Tilmeld {
188
190
  if (!tilmeld.checkPermissions(entity, nymph_1.TilmeldAccessLevels.FULL_ACCESS)) {
189
191
  throw new errors_1.AccessControlError('No permission to change access control properties.');
190
192
  }
191
- if (((originalAc.user && !originalAc.user.$is(newAc.user)) ||
193
+ if ((originalAc.user && !originalAc.user.$is(newAc.user)) ||
192
194
  (!originalAc.user &&
193
195
  newAc.user &&
194
- !newAc.user.$is(tilmeld.currentUser))) &&
195
- !tilmeld.gatekeeper('tilmeld/admin')) {
196
+ !newAc.user.$is(tilmeld.currentUser))) {
196
197
  throw new errors_1.AccessControlError('No permission to assign to another user.');
197
198
  }
198
199
  if (newAc.group &&
199
200
  !newAc.group.$is(originalAc.group) &&
200
201
  !(newAc.group.$is(tilmeld.currentUser?.group) ||
201
- newAc.group.$inArray(tilmeld.currentUser?.groups ?? [])) &&
202
- !tilmeld.gatekeeper('tilmeld/admin')) {
202
+ newAc.group.$inArray(tilmeld.currentUser?.groups ?? []))) {
203
203
  throw new errors_1.AccessControlError('No permission to assign to another group.');
204
204
  }
205
205
  setAcProperties(newAc);
@@ -211,7 +211,7 @@ class Tilmeld {
211
211
  };
212
212
  checkPermissionsSaveAndFilterAcChanges.skipOnClone = true;
213
213
  const addAccess = async function (nymph, entity) {
214
- const tilmeld = nymph.tilmeld;
214
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(nymph);
215
215
  const user = tilmeld.currentUser;
216
216
  if (user != null &&
217
217
  entity.guid == null &&
@@ -305,10 +305,6 @@ class Tilmeld {
305
305
  }
306
306
  addAccessControlSelectors(options, selectors) {
307
307
  const user = this.currentUser;
308
- if (user != null &&
309
- (user.abilities?.indexOf('system/admin') ?? -1) !== -1) {
310
- return;
311
- }
312
308
  if (options == null) {
313
309
  throw new Error('No options in argument.');
314
310
  }
@@ -410,21 +406,16 @@ class Tilmeld {
410
406
  userOrNull = user;
411
407
  userOrEmpty = user;
412
408
  }
413
- if (userOrEmpty.$gatekeeper('system/admin')) {
414
- return true;
415
- }
416
409
  if ((entity instanceof User_1.default || entity instanceof Group_1.default) &&
417
410
  (type === nymph_1.TilmeldAccessLevels.READ_ACCESS ||
418
- userOrEmpty.$gatekeeper('tilmeld/admin'))) {
419
- return true;
420
- }
421
- if (entity.user == null && entity.group == null) {
411
+ userOrEmpty.abilities?.includes('tilmeld/admin') ||
412
+ userOrEmpty.abilities?.includes('system/admin'))) {
422
413
  return true;
423
414
  }
424
415
  const acUser = entity.acUser ?? nymph_1.TilmeldAccessLevels.FULL_ACCESS;
425
416
  const acGroup = entity.acGroup ?? nymph_1.TilmeldAccessLevels.READ_ACCESS;
426
417
  const acOther = entity.acOther ?? nymph_1.TilmeldAccessLevels.NO_ACCESS;
427
- if (userOrNull === null) {
418
+ if (userOrNull == null) {
428
419
  return acOther >= type;
429
420
  }
430
421
  if (userOrEmpty.$is(entity)) {
@@ -486,7 +477,7 @@ class Tilmeld {
486
477
  else if (user !== false) {
487
478
  userOrEmpty = user;
488
479
  }
489
- if (userOrEmpty.$gatekeeper('system/admin')) {
480
+ if (userOrEmpty.abilities?.includes('system/admin')) {
490
481
  return true;
491
482
  }
492
483
  if (type === nymph_1.TilmeldAccessLevels.FULL_ACCESS) {
@@ -544,7 +535,7 @@ class Tilmeld {
544
535
  type: '&',
545
536
  guid: guid,
546
537
  });
547
- if (!user || !user.guid || !user.enabled) {
538
+ if (!user || !user.guid) {
548
539
  return null;
549
540
  }
550
541
  return user;
@@ -563,39 +554,70 @@ class Tilmeld {
563
554
  const cookies = this.request.cookies ?? {};
564
555
  let fromAuthHeader = false;
565
556
  let authToken;
557
+ let switchToken;
566
558
  if (this.request.header('x-tilmeldauth') != null) {
567
559
  fromAuthHeader = true;
568
560
  authToken = this.request.header('x-tilmeldauth');
561
+ switchToken =
562
+ this.request.header('x-tilmeldswitch') ||
563
+ 'TILMELDSWITCH' in cookies
564
+ ? cookies.TILMELDSWITCH
565
+ : null;
569
566
  }
570
567
  else if ('TILMELDAUTH' in cookies) {
571
568
  fromAuthHeader = false;
572
569
  authToken = cookies.TILMELDAUTH;
570
+ switchToken = 'TILMELDSWITCH' in cookies ? cookies.TILMELDSWITCH : null;
573
571
  }
574
572
  else {
575
573
  return false;
576
574
  }
577
- let extract;
575
+ let authExtract;
576
+ let switchExtract;
578
577
  if (skipXsrfToken ||
579
578
  this.request.originalUrl.startsWith(this.config.setupPath)) {
580
- extract = this.config.jwtExtract(this.config, authToken);
579
+ authExtract = this.config.jwtExtract(this.config, authToken);
580
+ switchExtract = switchToken
581
+ ? this.config.jwtExtract(this.config, switchToken)
582
+ : null;
581
583
  }
582
584
  else {
583
585
  const xsrfToken = this.request.header('x-xsrf-token');
584
586
  if (xsrfToken == null && !fromAuthHeader) {
585
587
  return false;
586
588
  }
587
- extract = this.config.jwtExtract(this.config, authToken, xsrfToken);
589
+ authExtract = this.config.jwtExtract(this.config, authToken, xsrfToken);
590
+ switchExtract = switchToken
591
+ ? this.config.jwtExtract(this.config, switchToken)
592
+ : null;
588
593
  }
589
- if (extract == null) {
594
+ if (authExtract == null) {
590
595
  this.logout();
591
596
  return false;
592
597
  }
593
- const { guid, expire } = extract;
598
+ const { guid, expire } = authExtract;
599
+ const { guid: switchGuid, expire: switchExpire } = switchExtract || {
600
+ guid: null,
601
+ expire: null,
602
+ };
594
603
  const user = this.User.factorySync(guid);
595
- if (user.guid == null || !user.enabled) {
604
+ if (user.guid == null || !user.enabled || expire.valueOf() <= Date.now()) {
596
605
  this.logout();
597
606
  return false;
598
607
  }
608
+ if (switchGuid && switchExpire && switchExpire.valueOf() > Date.now()) {
609
+ const switchUser = this.User.factorySync(switchGuid);
610
+ if (switchUser.guid == null) {
611
+ this.logoutSwitch();
612
+ }
613
+ else {
614
+ this.fillSession(switchUser);
615
+ if (this.response) {
616
+ this.response.locals.user = switchUser;
617
+ }
618
+ return true;
619
+ }
620
+ }
599
621
  if (expire.valueOf() < Date.now() + this.config.jwtRenew * 1000) {
600
622
  this.login(user, fromAuthHeader);
601
623
  }
@@ -634,7 +656,41 @@ class Tilmeld {
634
656
  }
635
657
  return false;
636
658
  }
659
+ loginSwitch(user, sendAuthHeader, sendCookie = true) {
660
+ if (user.guid != null) {
661
+ if (this.response) {
662
+ if (!this.response.headersSent) {
663
+ const token = this.config.jwtBuilder(this.config, user, true);
664
+ if (sendCookie) {
665
+ const appUrl = new url_1.URL(this.config.appUrl);
666
+ this.response.cookie('TILMELDSWITCH', token, {
667
+ domain: this.config.cookieDomain,
668
+ path: this.config.cookiePath,
669
+ maxAge: this.config.jwtSwitchExpire * 1000,
670
+ secure: appUrl.protocol === 'https',
671
+ httpOnly: false,
672
+ sameSite: appUrl.protocol === 'https' ? 'lax' : 'strict',
673
+ });
674
+ }
675
+ if (sendAuthHeader) {
676
+ this.response.set('X-TILMELDSWITCH', token);
677
+ }
678
+ }
679
+ this.response.locals.user = user;
680
+ }
681
+ this.fillSession(user);
682
+ return true;
683
+ }
684
+ return false;
685
+ }
637
686
  logout(clearCookie = true) {
687
+ if (this.request && !this.alreadyLoggedOutSwitch) {
688
+ const cookies = this.request.cookies ?? {};
689
+ if ('TILMELDSWITCH' in cookies) {
690
+ this.alreadyLoggedOutSwitch = true;
691
+ return this.logoutSwitch(clearCookie);
692
+ }
693
+ }
638
694
  this.clearSession();
639
695
  if (this.response) {
640
696
  if (clearCookie && !this.response.headersSent) {
@@ -647,6 +703,20 @@ class Tilmeld {
647
703
  this.response.locals.user = null;
648
704
  }
649
705
  }
706
+ logoutSwitch(clearCookie = true) {
707
+ this.clearSession();
708
+ if (this.response) {
709
+ if (clearCookie && !this.response.headersSent) {
710
+ this.response.clearCookie('TILMELDSWITCH', {
711
+ domain: this.config.cookieDomain,
712
+ path: this.config.cookiePath,
713
+ });
714
+ this.response.set('X-TILMELDSWITCH', '');
715
+ }
716
+ this.response.locals.user = null;
717
+ this.authenticate();
718
+ }
719
+ }
650
720
  }
651
721
  exports.default = Tilmeld;
652
722
  //# sourceMappingURL=Tilmeld.js.map