@nymphjs/tilmeld 1.0.0-alpha.24 → 1.0.0-alpha.28

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,26 @@
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-alpha.28](https://github.com/sciactive/nymphjs/compare/v1.0.0-alpha.27...v1.0.0-alpha.28) (2022-01-07)
7
+
8
+ ### Features
9
+
10
+ - add callbacks for user registration, login, and logout ([0dd621e](https://github.com/sciactive/nymphjs/commit/0dd621e85d082b9a753cafae16a120620b41164e))
11
+
12
+ # [1.0.0-alpha.27](https://github.com/sciactive/nymphjs/compare/v1.0.0-alpha.26...v1.0.0-alpha.27) (2022-01-05)
13
+
14
+ ### Features
15
+
16
+ - update smui to latest versions ([7ed7bd3](https://github.com/sciactive/nymphjs/commit/7ed7bd34d01a155c7001a2671de25ef2f3363682))
17
+
18
+ # [1.0.0-alpha.26](https://github.com/sciactive/nymphjs/compare/v1.0.0-alpha.25...v1.0.0-alpha.26) (2021-12-30)
19
+
20
+ **Note:** Version bump only for package @nymphjs/tilmeld
21
+
22
+ # [1.0.0-alpha.25](https://github.com/sciactive/nymphjs/compare/v1.0.0-alpha.24...v1.0.0-alpha.25) (2021-12-30)
23
+
24
+ **Note:** Version bump only for package @nymphjs/tilmeld
25
+
6
26
  # [1.0.0-alpha.24](https://github.com/sciactive/nymphjs/compare/v1.0.0-alpha.23...v1.0.0-alpha.24) (2021-12-30)
7
27
 
8
28
  **Note:** Version bump only for package @nymphjs/tilmeld
package/dist/User.d.ts CHANGED
@@ -2,6 +2,21 @@ import { EntityData, EntityJson, EntityPatch, SerializedEntityData } from '@nymp
2
2
  import type Tilmeld from './Tilmeld';
3
3
  import AbleObject from './AbleObject';
4
4
  import Group, { GroupData } from './Group';
5
+ export declare type EventType = 'beforeRegister' | 'afterRegister' | 'beforeLogin' | 'afterLogin' | 'beforeLogout' | 'afterLogout';
6
+ export declare type TilmeldBeforeRegisterCallback = (user: User & UserData, data: {
7
+ password: string;
8
+ }) => void;
9
+ export declare type TilmeldAfterRegisterCallback = (user: User & UserData, result: {
10
+ loggedin: boolean;
11
+ message: string;
12
+ }) => void;
13
+ export declare type TilmeldBeforeLoginCallback = (user: User & UserData, data: {
14
+ username: string;
15
+ password: string;
16
+ }) => void;
17
+ export declare type TilmeldAfterLoginCallback = (user: User & UserData) => void;
18
+ export declare type TilmeldBeforeLogoutCallback = (user: User & UserData) => void;
19
+ export declare type TilmeldAfterLogoutCallback = (user: User & UserData) => void;
5
20
  export declare type UserData = {
6
21
  abilities?: string[];
7
22
  username?: string;
@@ -32,6 +47,12 @@ export default class User extends AbleObject<UserData> {
32
47
  static tilmeld: Tilmeld;
33
48
  static ETYPE: string;
34
49
  static class: string;
50
+ private static beforeRegisterCallbacks;
51
+ private static afterRegisterCallbacks;
52
+ private static beforeLoginCallbacks;
53
+ private static afterLoginCallbacks;
54
+ private static beforeLogoutCallbacks;
55
+ private static afterLogoutCallbacks;
35
56
  private static DEFAULT_CLIENT_ENABLED_METHODS;
36
57
  private static DEFAULT_PRIVATE_DATA;
37
58
  private static DEFAULT_ALLOWLIST_DATA;
@@ -89,11 +110,11 @@ export default class User extends AbleObject<UserData> {
89
110
  password: string;
90
111
  }): {
91
112
  result: boolean;
92
- message: string;
113
+ message: any;
93
114
  };
94
115
  $logout(): {
95
116
  result: boolean;
96
- message: string;
117
+ message: any;
97
118
  };
98
119
  $getAvatar(): string;
99
120
  $getDescendantGroups(): Promise<(Group & GroupData)[]>;
@@ -141,4 +162,6 @@ export default class User extends AbleObject<UserData> {
141
162
  $saveSkipAC(): Promise<boolean>;
142
163
  $tilmeldSaveSkipAC(): boolean;
143
164
  $delete(): Promise<boolean>;
165
+ static on<T extends EventType>(event: T, callback: T extends 'beforeRegister' ? TilmeldBeforeRegisterCallback : T extends 'afterRegister' ? TilmeldAfterRegisterCallback : T extends 'beforeLogin' ? TilmeldBeforeLoginCallback : T extends 'afterLogin' ? TilmeldAfterLoginCallback : T extends 'beforeLogout' ? TilmeldBeforeLogoutCallback : T extends 'afterLogout' ? TilmeldAfterLogoutCallback : never): () => boolean;
166
+ static off<T extends EventType>(event: T, callback: T extends 'beforeRegister' ? TilmeldBeforeRegisterCallback : T extends 'afterRegister' ? TilmeldAfterRegisterCallback : T extends 'beforeLogin' ? TilmeldBeforeLoginCallback : T extends 'afterLogin' ? TilmeldAfterLoginCallback : T extends 'beforeLogout' ? TilmeldBeforeLogoutCallback : T extends 'afterLogout' ? TilmeldAfterLogoutCallback : never): boolean;
144
167
  }
package/dist/User.js CHANGED
@@ -223,14 +223,54 @@ class User extends AbleObject_1.default {
223
223
  if (!this.$checkPassword(data.password)) {
224
224
  return { result: false, message: 'Incorrect login/password.' };
225
225
  }
226
+ try {
227
+ for (let callback of this.constructor
228
+ .beforeLoginCallbacks) {
229
+ if (callback) {
230
+ callback(this, data);
231
+ }
232
+ }
233
+ }
234
+ catch (e) {
235
+ return {
236
+ result: false,
237
+ message: e.message,
238
+ };
239
+ }
226
240
  if (!tilmeld.login(this, true)) {
227
241
  return { result: false, message: 'Incorrect login/password.' };
228
242
  }
243
+ for (let callback of this.constructor
244
+ .afterLoginCallbacks) {
245
+ if (callback) {
246
+ callback(this);
247
+ }
248
+ }
229
249
  return { result: true, message: 'You are logged in.' };
230
250
  }
231
251
  $logout() {
232
252
  const tilmeld = this.$nymph.tilmeld;
253
+ try {
254
+ for (let callback of this.constructor
255
+ .beforeLogoutCallbacks) {
256
+ if (callback) {
257
+ callback(this);
258
+ }
259
+ }
260
+ }
261
+ catch (e) {
262
+ return {
263
+ result: false,
264
+ message: e.message,
265
+ };
266
+ }
233
267
  tilmeld.logout();
268
+ for (let callback of this.constructor
269
+ .afterLogoutCallbacks) {
270
+ if (callback) {
271
+ callback(this);
272
+ }
273
+ }
234
274
  return { result: true, message: 'You have been logged out.' };
235
275
  }
236
276
  $getAvatar() {
@@ -707,6 +747,21 @@ class User extends AbleObject_1.default {
707
747
  message: 'This is already a registered user.',
708
748
  };
709
749
  }
750
+ try {
751
+ for (let callback of this.constructor
752
+ .beforeRegisterCallbacks) {
753
+ if (callback) {
754
+ callback(this, data);
755
+ }
756
+ }
757
+ }
758
+ catch (e) {
759
+ return {
760
+ result: false,
761
+ loggedin: false,
762
+ message: e.message,
763
+ };
764
+ }
710
765
  if (!('password' in data) || !data.password.length) {
711
766
  return {
712
767
  result: false,
@@ -859,6 +914,15 @@ class User extends AbleObject_1.default {
859
914
  }
860
915
  yield tnymph.commit(transaction);
861
916
  this.$nymph = nymph;
917
+ for (let callback of this.constructor
918
+ .afterRegisterCallbacks) {
919
+ if (callback) {
920
+ callback(this, {
921
+ loggedin,
922
+ message,
923
+ });
924
+ }
925
+ }
862
926
  return {
863
927
  result: true,
864
928
  loggedin,
@@ -1127,10 +1191,35 @@ class User extends AbleObject_1.default {
1127
1191
  return yield _super.$delete.call(this);
1128
1192
  });
1129
1193
  }
1194
+ static on(event, callback) {
1195
+ const prop = (event + 'Callbacks');
1196
+ if (!this.hasOwnProperty(prop)) {
1197
+ throw new Error('Invalid event type.');
1198
+ }
1199
+ this[prop].push(callback);
1200
+ return () => this.off(event, callback);
1201
+ }
1202
+ static off(event, callback) {
1203
+ const prop = (event + 'Callbacks');
1204
+ if (!this.hasOwnProperty(prop)) {
1205
+ return false;
1206
+ }
1207
+ const i = this[prop].indexOf(callback);
1208
+ if (i > -1) {
1209
+ this[prop].splice(i, 1);
1210
+ }
1211
+ return true;
1212
+ }
1130
1213
  }
1131
1214
  exports.default = User;
1132
1215
  User.ETYPE = 'tilmeld_user';
1133
1216
  User.class = 'User';
1217
+ User.beforeRegisterCallbacks = [];
1218
+ User.afterRegisterCallbacks = [];
1219
+ User.beforeLoginCallbacks = [];
1220
+ User.afterLoginCallbacks = [];
1221
+ User.beforeLogoutCallbacks = [];
1222
+ User.afterLogoutCallbacks = [];
1134
1223
  User.DEFAULT_CLIENT_ENABLED_METHODS = [
1135
1224
  '$checkUsername',
1136
1225
  '$checkEmail',
package/dist/User.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"User.js","sourceRoot":"","sources":["../src/User.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"User.js","sourceRoot":"","sources":["../src/User.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nymphjs/tilmeld",
3
- "version": "1.0.0-alpha.24",
3
+ "version": "1.0.0-alpha.28",
4
4
  "description": "NymphJS - Tilmeld User and Group System",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",
@@ -31,10 +31,10 @@
31
31
  },
32
32
  "license": "Apache-2.0",
33
33
  "dependencies": {
34
- "@nymphjs/nymph": "^1.0.0-alpha.24",
34
+ "@nymphjs/nymph": "^1.0.0-alpha.28",
35
35
  "crypto-js": "^4.1.1",
36
36
  "email-templates": "^8.0.8",
37
- "express": "^4.17.1",
37
+ "express": "^4.17.2",
38
38
  "joi": "^17.5.0",
39
39
  "jsonwebtoken": "^8.5.1",
40
40
  "locutus": "^2.0.15",
@@ -44,21 +44,21 @@
44
44
  "pug": "^3.0.2"
45
45
  },
46
46
  "devDependencies": {
47
- "@nymphjs/client": "^1.0.0-alpha.24",
48
- "@nymphjs/client-node": "^1.0.0-alpha.24",
49
- "@nymphjs/driver-sqlite3": "^1.0.0-alpha.24",
47
+ "@nymphjs/client": "^1.0.0-alpha.28",
48
+ "@nymphjs/client-node": "^1.0.0-alpha.28",
49
+ "@nymphjs/driver-sqlite3": "^1.0.0-alpha.28",
50
50
  "@tsconfig/recommended": "^1.0.1",
51
- "@types/crypto-js": "^4.0.2",
51
+ "@types/crypto-js": "^4.1.0",
52
52
  "@types/email-templates": "^8.0.4",
53
53
  "@types/express": "^4.17.13",
54
- "@types/jest": "^27.0.3",
54
+ "@types/jest": "^27.4.0",
55
55
  "@types/jsonwebtoken": "^8.5.6",
56
56
  "@types/locutus": "^0.0.6",
57
57
  "@types/lodash": "^4.14.178",
58
58
  "@types/nanoid-dictionary": "^4.2.0",
59
- "jest": "^27.4.5",
60
- "ts-jest": "^27.1.1",
59
+ "jest": "^27.4.7",
60
+ "ts-jest": "^27.1.2",
61
61
  "typescript": "^4.5.4"
62
62
  },
63
- "gitHead": "79f045b2b527152f65fd4b74b8e9b407ff12deeb"
63
+ "gitHead": "451ed15f36691af6215ea512218954ae2d5d1806"
64
64
  }
package/src/User.ts CHANGED
@@ -24,6 +24,36 @@ import {
24
24
  EmailChangeRateLimitExceededError,
25
25
  } from './errors';
26
26
 
27
+ export type EventType =
28
+ | 'beforeRegister'
29
+ | 'afterRegister'
30
+ | 'beforeLogin'
31
+ | 'afterLogin'
32
+ | 'beforeLogout'
33
+ | 'afterLogout';
34
+ /**
35
+ * Theses are run before the user data checks, so the only checks before are
36
+ * whether registration is allowed and whether the user is already registered.
37
+ */
38
+ export type TilmeldBeforeRegisterCallback = (
39
+ user: User & UserData,
40
+ data: { password: string }
41
+ ) => void;
42
+ export type TilmeldAfterRegisterCallback = (
43
+ user: User & UserData,
44
+ result: { loggedin: boolean; message: string }
45
+ ) => void;
46
+ /**
47
+ * These are run after the authentication checks, but before the login action.
48
+ */
49
+ export type TilmeldBeforeLoginCallback = (
50
+ user: User & UserData,
51
+ data: { username: string; password: string }
52
+ ) => void;
53
+ export type TilmeldAfterLoginCallback = (user: User & UserData) => void;
54
+ export type TilmeldBeforeLogoutCallback = (user: User & UserData) => void;
55
+ export type TilmeldAfterLogoutCallback = (user: User & UserData) => void;
56
+
27
57
  export type UserData = {
28
58
  /**
29
59
  * The abilities granted to the user.
@@ -142,6 +172,12 @@ export default class User extends AbleObject<UserData> {
142
172
  static tilmeld: Tilmeld;
143
173
  static ETYPE = 'tilmeld_user';
144
174
  static class = 'User';
175
+ private static beforeRegisterCallbacks: TilmeldBeforeRegisterCallback[] = [];
176
+ private static afterRegisterCallbacks: TilmeldAfterRegisterCallback[] = [];
177
+ private static beforeLoginCallbacks: TilmeldBeforeLoginCallback[] = [];
178
+ private static afterLoginCallbacks: TilmeldAfterLoginCallback[] = [];
179
+ private static beforeLogoutCallbacks: TilmeldBeforeLogoutCallback[] = [];
180
+ private static afterLogoutCallbacks: TilmeldAfterLogoutCallback[] = [];
145
181
 
146
182
  private static DEFAULT_CLIENT_ENABLED_METHODS = [
147
183
  '$checkUsername',
@@ -458,11 +494,32 @@ export default class User extends AbleObject<UserData> {
458
494
  return { result: false, message: 'Incorrect login/password.' };
459
495
  }
460
496
 
497
+ try {
498
+ for (let callback of (this.constructor as typeof User)
499
+ .beforeLoginCallbacks) {
500
+ if (callback) {
501
+ callback(this, data);
502
+ }
503
+ }
504
+ } catch (e: any) {
505
+ return {
506
+ result: false,
507
+ message: e.message,
508
+ };
509
+ }
510
+
461
511
  // Authentication was successful, attempt to login.
462
512
  if (!tilmeld.login(this, true)) {
463
513
  return { result: false, message: 'Incorrect login/password.' };
464
514
  }
465
515
 
516
+ for (let callback of (this.constructor as typeof User)
517
+ .afterLoginCallbacks) {
518
+ if (callback) {
519
+ callback(this);
520
+ }
521
+ }
522
+
466
523
  // Login was successful.
467
524
  return { result: true, message: 'You are logged in.' };
468
525
  }
@@ -473,7 +530,30 @@ export default class User extends AbleObject<UserData> {
473
530
  */
474
531
  public $logout() {
475
532
  const tilmeld = this.$nymph.tilmeld as Tilmeld;
533
+
534
+ try {
535
+ for (let callback of (this.constructor as typeof User)
536
+ .beforeLogoutCallbacks) {
537
+ if (callback) {
538
+ callback(this);
539
+ }
540
+ }
541
+ } catch (e: any) {
542
+ return {
543
+ result: false,
544
+ message: e.message,
545
+ };
546
+ }
547
+
476
548
  tilmeld.logout();
549
+
550
+ for (let callback of (this.constructor as typeof User)
551
+ .afterLogoutCallbacks) {
552
+ if (callback) {
553
+ callback(this);
554
+ }
555
+ }
556
+
477
557
  return { result: true, message: 'You have been logged out.' };
478
558
  }
479
559
 
@@ -1139,6 +1219,22 @@ export default class User extends AbleObject<UserData> {
1139
1219
  message: 'This is already a registered user.',
1140
1220
  };
1141
1221
  }
1222
+
1223
+ try {
1224
+ for (let callback of (this.constructor as typeof User)
1225
+ .beforeRegisterCallbacks) {
1226
+ if (callback) {
1227
+ callback(this, data);
1228
+ }
1229
+ }
1230
+ } catch (e: any) {
1231
+ return {
1232
+ result: false,
1233
+ loggedin: false,
1234
+ message: e.message,
1235
+ };
1236
+ }
1237
+
1142
1238
  if (!('password' in data) || !data.password.length) {
1143
1239
  return {
1144
1240
  result: false,
@@ -1331,6 +1427,17 @@ export default class User extends AbleObject<UserData> {
1331
1427
  }
1332
1428
  await tnymph.commit(transaction);
1333
1429
  this.$nymph = nymph;
1430
+
1431
+ for (let callback of (this.constructor as typeof User)
1432
+ .afterRegisterCallbacks) {
1433
+ if (callback) {
1434
+ callback(this, {
1435
+ loggedin,
1436
+ message,
1437
+ });
1438
+ }
1439
+ }
1440
+
1334
1441
  return {
1335
1442
  result: true,
1336
1443
  loggedin,
@@ -1646,4 +1753,82 @@ export default class User extends AbleObject<UserData> {
1646
1753
  }
1647
1754
  return await super.$delete();
1648
1755
  }
1756
+
1757
+ public static on<T extends EventType>(
1758
+ event: T,
1759
+ callback: T extends 'beforeRegister'
1760
+ ? TilmeldBeforeRegisterCallback
1761
+ : T extends 'afterRegister'
1762
+ ? TilmeldAfterRegisterCallback
1763
+ : T extends 'beforeLogin'
1764
+ ? TilmeldBeforeLoginCallback
1765
+ : T extends 'afterLogin'
1766
+ ? TilmeldAfterLoginCallback
1767
+ : T extends 'beforeLogout'
1768
+ ? TilmeldBeforeLogoutCallback
1769
+ : T extends 'afterLogout'
1770
+ ? TilmeldAfterLogoutCallback
1771
+ : never
1772
+ ) {
1773
+ const prop = (event + 'Callbacks') as T extends 'beforeRegister'
1774
+ ? 'beforeRegisterCallbacks'
1775
+ : T extends 'afterRegister'
1776
+ ? 'afterRegisterCallbacks'
1777
+ : T extends 'beforeLogin'
1778
+ ? 'beforeLoginCallbacks'
1779
+ : T extends 'afterLogin'
1780
+ ? 'afterLoginCallbacks'
1781
+ : T extends 'beforeLogout'
1782
+ ? 'beforeLogoutCallbacks'
1783
+ : T extends 'afterLogout'
1784
+ ? 'afterLogoutCallbacks'
1785
+ : never;
1786
+ if (!this.hasOwnProperty(prop)) {
1787
+ throw new Error('Invalid event type.');
1788
+ }
1789
+ // @ts-ignore: The callback should always be the right type here.
1790
+ this[prop].push(callback);
1791
+ return () => this.off(event, callback);
1792
+ }
1793
+
1794
+ public static off<T extends EventType>(
1795
+ event: T,
1796
+ callback: T extends 'beforeRegister'
1797
+ ? TilmeldBeforeRegisterCallback
1798
+ : T extends 'afterRegister'
1799
+ ? TilmeldAfterRegisterCallback
1800
+ : T extends 'beforeLogin'
1801
+ ? TilmeldBeforeLoginCallback
1802
+ : T extends 'afterLogin'
1803
+ ? TilmeldAfterLoginCallback
1804
+ : T extends 'beforeLogout'
1805
+ ? TilmeldBeforeLogoutCallback
1806
+ : T extends 'afterLogout'
1807
+ ? TilmeldAfterLogoutCallback
1808
+ : never
1809
+ ) {
1810
+ const prop = (event + 'Callbacks') as T extends 'beforeRegister'
1811
+ ? 'beforeRegisterCallbacks'
1812
+ : T extends 'afterRegister'
1813
+ ? 'afterRegisterCallbacks'
1814
+ : T extends 'beforeLogin'
1815
+ ? 'beforeLoginCallbacks'
1816
+ : T extends 'afterLogin'
1817
+ ? 'afterLoginCallbacks'
1818
+ : T extends 'beforeLogout'
1819
+ ? 'beforeLogoutCallbacks'
1820
+ : T extends 'afterLogout'
1821
+ ? 'afterLogoutCallbacks'
1822
+ : never;
1823
+ if (!this.hasOwnProperty(prop)) {
1824
+ return false;
1825
+ }
1826
+ // @ts-ignore: The callback should always be the right type here.
1827
+ const i = this[prop].indexOf(callback);
1828
+ if (i > -1) {
1829
+ // @ts-ignore: The callback should always be the right type here.
1830
+ this[prop].splice(i, 1);
1831
+ }
1832
+ return true;
1833
+ }
1649
1834
  }