@nymphjs/tilmeld-client 1.0.0-beta.96 → 1.0.0-beta.97

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,10 @@
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.97](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.96...v1.0.0-beta.97) (2025-10-04)
7
+
8
+ **Note:** Version bump only for package @nymphjs/tilmeld-client
9
+
6
10
  # [1.0.0-beta.96](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.95...v1.0.0-beta.96) (2025-09-01)
7
11
 
8
12
  **Note:** Version bump only for package @nymphjs/tilmeld-client
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nymphjs/tilmeld-client",
3
- "version": "1.0.0-beta.96",
3
+ "version": "1.0.0-beta.97",
4
4
  "description": "Nymph.js - Tilmeld Client",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -31,13 +31,13 @@
31
31
  },
32
32
  "license": "Apache-2.0",
33
33
  "dependencies": {
34
- "@nymphjs/client": "^1.0.0-beta.96"
34
+ "@nymphjs/client": "^1.0.0-beta.97"
35
35
  },
36
36
  "devDependencies": {
37
- "@nymphjs/driver-sqlite3": "^1.0.0-beta.96",
38
- "@nymphjs/nymph": "^1.0.0-beta.96",
39
- "@nymphjs/server": "^1.0.0-beta.96",
40
- "@nymphjs/tilmeld": "^1.0.0-beta.96",
37
+ "@nymphjs/driver-sqlite3": "^1.0.0-beta.97",
38
+ "@nymphjs/nymph": "^1.0.0-beta.97",
39
+ "@nymphjs/server": "^1.0.0-beta.97",
40
+ "@nymphjs/tilmeld": "^1.0.0-beta.97",
41
41
  "@tsconfig/recommended": "^1.0.8",
42
42
  "@types/jest": "^29.5.14",
43
43
  "jest": "^29.7.0",
@@ -45,5 +45,5 @@
45
45
  "ts-node": "^10.9.2",
46
46
  "typescript": "^5.7.2"
47
47
  },
48
- "gitHead": "bf1d0ded836084ae1cecae2efe0a45501f90f6d0"
48
+ "gitHead": "8a339687a53b05eba30efc965626bba932e073b8"
49
49
  }
package/lib/Group.d.ts DELETED
@@ -1,76 +0,0 @@
1
- import { Entity, Options, Selector } from '@nymphjs/client';
2
- import type User from './User';
3
- import type { CurrentUserData } from './User';
4
- export type GroupData = {
5
- /**
6
- * The group's groupname.
7
- */
8
- groupname?: string;
9
- /**
10
- * The group's name.
11
- */
12
- name?: string;
13
- /**
14
- * The group's avatar URL. (Use getAvatar() to support Gravatar.)
15
- */
16
- avatar?: string;
17
- /**
18
- * The group's parent.
19
- */
20
- parent?: Group & GroupData;
21
- /**
22
- * Whether the group can be used.
23
- */
24
- enabled?: boolean;
25
- /**
26
- * Whether this group is the default primary group for new users.
27
- */
28
- defaultPrimary?: boolean;
29
- /**
30
- * Whether this group is a default secondary group for new users.
31
- */
32
- defaultSecondary?: boolean;
33
- /**
34
- * Whether this group is a default secondary group for unverified users.
35
- */
36
- unverifiedSecondary?: boolean;
37
- };
38
- export type CurrentGroupData = GroupData & {
39
- /**
40
- * The abilities granted to the group.
41
- */
42
- abilities?: string[];
43
- /**
44
- * The group's email address.
45
- */
46
- email?: string;
47
- /**
48
- * The group's telephone number.
49
- */
50
- phone?: string;
51
- /**
52
- * If generatePrimary is on, this will be the user who generated this group.
53
- */
54
- user?: (User & CurrentUserData) | null;
55
- };
56
- export type AdminGroupData = CurrentGroupData;
57
- export default class Group extends Entity<GroupData> {
58
- static class: string;
59
- static factoryGroupname(groupname?: string): Promise<Group & GroupData>;
60
- constructor();
61
- $checkGroupname(): Promise<{
62
- result: boolean;
63
- message: string;
64
- }>;
65
- $checkEmail(): Promise<{
66
- result: boolean;
67
- message: string;
68
- }>;
69
- $getAvatar(): Promise<string>;
70
- $getChildren(): Promise<(Group & GroupData)[]>;
71
- $getDescendants(andSelf?: boolean): Promise<(Group & GroupData)[]>;
72
- $getLevel(): Promise<number>;
73
- $isDescendant(givenGroup: (Group & GroupData) | string): Promise<boolean>;
74
- static getPrimaryGroups(options?: Options, selectors?: Selector[]): Promise<(Group & GroupData)[]>;
75
- static getSecondaryGroups(options?: Options, selectors?: Selector[]): Promise<(Group & GroupData)[]>;
76
- }
package/lib/Group.js DELETED
@@ -1,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const client_1 = require("@nymphjs/client");
4
- class Group extends client_1.Entity {
5
- static async factoryGroupname(groupname) {
6
- const entity = new this();
7
- if (groupname != null) {
8
- const entity = await this.nymph.getEntity({
9
- class: this,
10
- }, {
11
- type: '&',
12
- ilike: ['groupname', groupname.replace(/([\\%_])/g, (s) => `\\${s}`)],
13
- });
14
- if (entity != null) {
15
- return entity;
16
- }
17
- }
18
- return entity;
19
- }
20
- constructor() {
21
- super();
22
- this.$data.enabled = true;
23
- this.$data.abilities = [];
24
- }
25
- async $checkGroupname() {
26
- return await this.$serverCall('$checkGroupname', [], true);
27
- }
28
- async $checkEmail() {
29
- return await this.$serverCall('$checkEmail', [], true);
30
- }
31
- async $getAvatar() {
32
- return await this.$serverCall('$getAvatar', [], true);
33
- }
34
- async $getChildren() {
35
- return await this.$serverCall('$getChildren', [], true);
36
- }
37
- async $getDescendants(andSelf = false) {
38
- return await this.$serverCall('$getDescendants', [andSelf], true);
39
- }
40
- async $getLevel() {
41
- return await this.$serverCall('$getLevel', [], true);
42
- }
43
- async $isDescendant(givenGroup) {
44
- return await this.$serverCall('$isDescendant', [givenGroup], true);
45
- }
46
- static async getPrimaryGroups(options, selectors) {
47
- return await this.serverCallStatic('getPrimaryGroups', [
48
- { options, class: this.class },
49
- selectors,
50
- ]);
51
- }
52
- static async getSecondaryGroups(options, selectors) {
53
- return await this.serverCallStatic('getSecondaryGroups', [
54
- { options, class: this.class },
55
- selectors,
56
- ]);
57
- }
58
- }
59
- // The name of the server class
60
- Group.class = 'Group';
61
- exports.default = Group;
62
- //# sourceMappingURL=Group.js.map
package/lib/Group.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Group.js","sourceRoot":"","sources":["../src/Group.ts"],"names":[],"mappings":";;AAAA,4CAA4D;AA8D5D,MAAqB,KAAM,SAAQ,eAAiB;IAIlD,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,SAAkB;QAElB,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CACvC;gBACE,KAAK,EAAE,IAAI;aACZ,EACD;gBACE,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACtE,CACF,CAAC;YACF,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;QACE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,KAA0B,CAAC,SAAS,GAAG,EAAE,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,eAAe;QAI1B,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,eAAe,CAC1B,OAAO,GAAG,KAAK;QAEf,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,UAAwC;QAExC,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAClC,OAAiB,EACjB,SAAsB;QAEtB,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;YACrD,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAC9B,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACpC,OAAiB,EACjB,SAAsB;QAEtB,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE;YACvD,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAC9B,SAAS;SACV,CAAC,CAAC;IACL,CAAC;;AApFD,+BAA+B;AACjB,WAAK,GAAG,OAAO,CAAC;kBAFX,KAAK"}
package/lib/User.d.ts DELETED
@@ -1,250 +0,0 @@
1
- import { Nymph, Entity } from '@nymphjs/client';
2
- import type Group from './Group';
3
- import type { AdminGroupData, CurrentGroupData } from './Group';
4
- export type EventType = 'register' | 'login' | 'logout';
5
- export type RegisterCallback = (user: User & CurrentUserData) => void;
6
- export type LoginCallback = (user: User & CurrentUserData) => void;
7
- export type LogoutCallback = (user: User & UserData) => void;
8
- export type ClientConfig = {
9
- regFields: string[];
10
- userFields: string[];
11
- emailUsernames: boolean;
12
- allowRegistration: boolean;
13
- allowUsernameChange: boolean;
14
- pwRecovery: boolean;
15
- verifyEmail: boolean;
16
- unverifiedAccess: boolean;
17
- };
18
- export type UserData = {
19
- /**
20
- * The user's username.
21
- */
22
- username?: string;
23
- /**
24
- * The user's first name.
25
- */
26
- nameFirst?: string;
27
- /**
28
- * The user's middle name.
29
- */
30
- nameMiddle?: string;
31
- /**
32
- * The user's last name.
33
- */
34
- nameLast?: string;
35
- /**
36
- * The user's full name.
37
- */
38
- name?: string;
39
- /**
40
- * The user's avatar URL. (Use $getAvatar() to support Gravatar.)
41
- */
42
- avatar?: string;
43
- /**
44
- * Whether the user can log in.
45
- */
46
- enabled?: boolean;
47
- };
48
- export type CurrentUserData = UserData & {
49
- /**
50
- * The abilities granted to the user.
51
- */
52
- abilities?: string[];
53
- /**
54
- * The user's email address.
55
- */
56
- email?: string;
57
- /**
58
- * The user's telephone number.
59
- */
60
- phone?: string;
61
- /**
62
- * The user's primary group.
63
- */
64
- group?: Group & CurrentGroupData;
65
- /**
66
- * The user's secondary groups.
67
- */
68
- groups?: (Group & CurrentGroupData)[];
69
- /**
70
- * Whether the user should inherit the abilities of his groups.
71
- */
72
- inheritAbilities?: boolean;
73
- /**
74
- * If the user has changed their email address, this is the new one, awaiting
75
- * verification.
76
- */
77
- newEmailAddress?: string;
78
- };
79
- export type AdminUserData = CurrentUserData & {
80
- /**
81
- * The user's primary group.
82
- */
83
- group?: Group & AdminGroupData;
84
- /**
85
- * The user's secondary groups.
86
- */
87
- groups?: (Group & AdminGroupData)[];
88
- /**
89
- * A verification secret.
90
- */
91
- secret?: string;
92
- /**
93
- * The timestamp of when the email address was last changed.
94
- */
95
- emailChangeDate?: number;
96
- /**
97
- * An email change proceed secret.
98
- */
99
- newEmailSecret?: string;
100
- /**
101
- * The new email address.
102
- */
103
- newEmailAddress?: string;
104
- /**
105
- * An email change cancellation secret.
106
- */
107
- cancelEmailSecret?: string;
108
- /**
109
- * The old email address.
110
- */
111
- cancelEmailAddress?: string;
112
- /**
113
- * A recovery secret.
114
- */
115
- recoverSecret?: string;
116
- /**
117
- * The timestamp of when the recovery secret was issued.
118
- */
119
- recoverSecretDate?: number;
120
- /**
121
- * Used by admins to change a user's password. Not saved to the database.
122
- */
123
- passwordTemp?: string;
124
- /**
125
- * If set, this timestamp is the cutoff point for JWT issue dates. Any token
126
- * issued before this date will not authenticate the user.
127
- */
128
- revokeTokenDate?: number;
129
- };
130
- type InstanceStore = {
131
- registerCallbacks: RegisterCallback[];
132
- loginCallbacks: LoginCallback[];
133
- logoutCallbacks: LogoutCallback[];
134
- clientConfig?: ClientConfig;
135
- clientConfigPromise?: Promise<ClientConfig>;
136
- removeNymphResponseListener?: () => void;
137
- };
138
- export default class User extends Entity<UserData> {
139
- protected static stores: WeakMap<Nymph, InstanceStore>;
140
- static class: string;
141
- static init(nymph: Nymph): void;
142
- static factoryUsername(username?: string): Promise<User & UserData>;
143
- constructor();
144
- $checkUsername(): Promise<{
145
- result: boolean;
146
- message: string;
147
- }>;
148
- $checkEmail(): Promise<{
149
- result: boolean;
150
- message: string;
151
- }>;
152
- $checkPhone(): Promise<{
153
- result: boolean;
154
- message: string;
155
- }>;
156
- $getAvatar(): Promise<string>;
157
- $register(data: {
158
- password: string;
159
- additionalData?: {
160
- [k: string]: any;
161
- };
162
- }): Promise<{
163
- result: boolean;
164
- loggedin: boolean;
165
- message: string;
166
- }>;
167
- $switchUser(data?: {
168
- additionalData?: {
169
- [k: string]: any;
170
- };
171
- }): Promise<{
172
- result: boolean;
173
- message: string;
174
- }>;
175
- $logout(): Promise<{
176
- result: boolean;
177
- message: string;
178
- }>;
179
- $gatekeeper(ability?: string): Promise<boolean>;
180
- $changePassword(data: {
181
- newPassword: string;
182
- currentPassword: string;
183
- revokeCurrentTokens?: boolean;
184
- }): Promise<{
185
- result: boolean;
186
- message: string;
187
- }>;
188
- $revokeCurrentTokens(data: {
189
- password: string;
190
- }): Promise<{
191
- result: boolean;
192
- message: string;
193
- }>;
194
- $hasTOTPSecret(): Promise<boolean>;
195
- $getNewTOTPSecret(): Promise<{
196
- uri: string;
197
- qrcode: string;
198
- secret: string;
199
- }>;
200
- $saveTOTPSecret(data: {
201
- password: string;
202
- secret: string;
203
- code: string;
204
- }): Promise<{
205
- result: boolean;
206
- message: string;
207
- }>;
208
- $removeTOTPSecret(data?: {
209
- password: string;
210
- code: string;
211
- }): Promise<{
212
- result: boolean;
213
- message: string;
214
- }>;
215
- static current(returnObjectIfNotExist: true): Promise<User & CurrentUserData>;
216
- static current(returnObjectIfNotExist?: false): Promise<(User & CurrentUserData) | null>;
217
- static loginUser(data: {
218
- username: string;
219
- password: string;
220
- code?: string;
221
- additionalData?: {
222
- [k: string]: any;
223
- };
224
- }): Promise<{
225
- result: boolean;
226
- message: string;
227
- needTOTP?: true;
228
- user?: User & CurrentUserData;
229
- }>;
230
- static sendRecovery(data: {
231
- recoveryType: 'username' | 'password';
232
- account: string;
233
- }): Promise<{
234
- result: boolean;
235
- message: string;
236
- }>;
237
- static recover(data: {
238
- username: string;
239
- secret: string;
240
- password: string;
241
- }): Promise<{
242
- result: boolean;
243
- message: string;
244
- }>;
245
- static getClientConfig(): Promise<ClientConfig>;
246
- private static handleToken;
247
- static on<T extends EventType>(event: T, callback: T extends 'register' ? RegisterCallback : T extends 'login' ? LoginCallback : T extends 'logout' ? LogoutCallback : never): () => boolean;
248
- static off<T extends EventType>(event: T, callback: T extends 'register' ? RegisterCallback : T extends 'login' ? LoginCallback : T extends 'logout' ? LogoutCallback : never): boolean;
249
- }
250
- export {};
package/lib/User.js DELETED
@@ -1,250 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const client_1 = require("@nymphjs/client");
4
- let currentToken = null;
5
- class User extends client_1.Entity {
6
- static init(nymph) {
7
- let store = {
8
- registerCallbacks: [],
9
- loginCallbacks: [],
10
- logoutCallbacks: [],
11
- };
12
- if (User.stores.has(nymph)) {
13
- const storeVal = User.stores.get(nymph);
14
- if (storeVal) {
15
- store = storeVal;
16
- }
17
- }
18
- User.stores.set(nymph, store);
19
- if (store.removeNymphResponseListener) {
20
- store.removeNymphResponseListener();
21
- }
22
- store.removeNymphResponseListener = nymph.on('response', (response) => this.handleToken(response));
23
- this.handleToken();
24
- }
25
- static async factoryUsername(username) {
26
- const entity = new this();
27
- if (username != null) {
28
- const entity = await this.nymph.getEntity({
29
- class: this,
30
- }, {
31
- type: '&',
32
- ilike: ['username', username.replace(/([\\%_])/g, (s) => `\\${s}`)],
33
- });
34
- if (entity != null) {
35
- return entity;
36
- }
37
- }
38
- return entity;
39
- }
40
- constructor() {
41
- super();
42
- this.$data.enabled = true;
43
- this.$data.abilities = [];
44
- this.$data.groups = [];
45
- this.$data.inheritAbilities = true;
46
- }
47
- async $checkUsername() {
48
- return await this.$serverCall('$checkUsername', [], true);
49
- }
50
- async $checkEmail() {
51
- return await this.$serverCall('$checkEmail', [], true);
52
- }
53
- async $checkPhone() {
54
- return await this.$serverCall('$checkPhone', [], true);
55
- }
56
- async $getAvatar() {
57
- return await this.$serverCall('$getAvatar', [], true);
58
- }
59
- async $register(data) {
60
- const store = User.stores.get(this.$nymph);
61
- if (store == null) {
62
- throw new Error('This user class was never initialized with an instance of Nymph');
63
- }
64
- const response = await this.$serverCall('$register', [data]);
65
- if (response.result) {
66
- for (let i = 0; i < store.registerCallbacks.length; i++) {
67
- store.registerCallbacks[i] && store.registerCallbacks[i](this);
68
- }
69
- }
70
- if (response.loggedin) {
71
- this.constructor.handleToken();
72
- for (let i = 0; i < store.loginCallbacks.length; i++) {
73
- store.loginCallbacks[i] && store.loginCallbacks[i](this);
74
- }
75
- }
76
- return response;
77
- }
78
- async $switchUser(data) {
79
- const store = User.stores.get(this.$nymph);
80
- if (store == null) {
81
- throw new Error('This user class was never initialized with an instance of Nymph');
82
- }
83
- const response = await this.$serverCall('$switchUser', [data]);
84
- if (response.result) {
85
- this.constructor.handleToken();
86
- for (let i = 0; i < store.loginCallbacks.length; i++) {
87
- store.loginCallbacks[i] && store.loginCallbacks[i](this);
88
- }
89
- }
90
- return response;
91
- }
92
- async $logout() {
93
- const store = User.stores.get(this.$nymph);
94
- if (store == null) {
95
- throw new Error('This user class was never initialized with an instance of Nymph');
96
- }
97
- const response = await this.$serverCall('$logout', []);
98
- if (response.result) {
99
- this.constructor.handleToken();
100
- for (let i = 0; i < store.logoutCallbacks.length; i++) {
101
- store.logoutCallbacks[i] && store.logoutCallbacks[i](this);
102
- }
103
- }
104
- return response;
105
- }
106
- async $gatekeeper(ability) {
107
- return await this.$serverCall('$gatekeeper', [ability], true);
108
- }
109
- async $changePassword(data) {
110
- return await this.$serverCall('$changePassword', [data]);
111
- }
112
- async $revokeCurrentTokens(data) {
113
- return await this.$serverCall('$revokeCurrentTokens', [data]);
114
- }
115
- async $hasTOTPSecret() {
116
- return await this.$serverCall('$hasTOTPSecret', [], true);
117
- }
118
- async $getNewTOTPSecret() {
119
- return await this.$serverCall('$getNewTOTPSecret', [], true);
120
- }
121
- async $saveTOTPSecret(data) {
122
- return await this.$serverCall('$saveTOTPSecret', [data]);
123
- }
124
- async $removeTOTPSecret(data) {
125
- return await this.$serverCall('$removeTOTPSecret', [
126
- ...(data ? [data] : []),
127
- ]);
128
- }
129
- static async current(returnObjectIfNotExist) {
130
- const currentUser = await this.serverCallStatic('current', [false]);
131
- if (currentUser == null) {
132
- return returnObjectIfNotExist ? this.factorySync() : null;
133
- }
134
- return currentUser;
135
- }
136
- static async loginUser(data) {
137
- const store = User.stores.get(this.nymph);
138
- if (store == null) {
139
- throw new Error('This user class was never initialized with an instance of Nymph');
140
- }
141
- const response = await this.serverCallStatic('loginUser', [data]);
142
- if (response.result) {
143
- this.handleToken();
144
- for (let i = 0; i < store.loginCallbacks.length; i++) {
145
- store.loginCallbacks[i] && store.loginCallbacks[i](response.user);
146
- }
147
- }
148
- return response;
149
- }
150
- static async sendRecovery(data) {
151
- return await this.serverCallStatic('sendRecovery', [data]);
152
- }
153
- static async recover(data) {
154
- return await this.serverCallStatic('recover', [data]);
155
- }
156
- static async getClientConfig() {
157
- const store = User.stores.get(this.nymph);
158
- if (store == null) {
159
- throw new Error('This user class was never initialized with an instance of Nymph');
160
- }
161
- if (store.clientConfig) {
162
- return store.clientConfig;
163
- }
164
- if (!store.clientConfigPromise) {
165
- store.clientConfigPromise = this.serverCallStatic('getClientConfig', []).then((config) => {
166
- store.clientConfig = config;
167
- store.clientConfigPromise = undefined;
168
- return config;
169
- });
170
- }
171
- return await store.clientConfigPromise;
172
- }
173
- static handleToken(response) {
174
- let token = null;
175
- let switchToken = null;
176
- const authCookiePattern = /(?:(?:^|.*;\s*)TILMELDAUTH\s*=\s*([^;]*).*$)|^.*$/;
177
- const switchCookiePattern = /(?:(?:^|.*;\s*)TILMELDSWITCH\s*=\s*([^;]*).*$)|^.*$/;
178
- if (response && response.headers.has('X-TILMELDAUTH')) {
179
- token = response.headers.get('X-TILMELDAUTH');
180
- switchToken = response.headers.get('X-TILMELDSWITCH');
181
- }
182
- else if (typeof document !== 'undefined' &&
183
- document.cookie.match(authCookiePattern)) {
184
- token = document.cookie.replace(authCookiePattern, '$1');
185
- switchToken = document.cookie.replace(switchCookiePattern, '$1');
186
- }
187
- else {
188
- return;
189
- }
190
- if (currentToken !== token) {
191
- if (token == null || token === '') {
192
- if (currentToken != null) {
193
- delete this.nymph.headers['X-Xsrf-Token'];
194
- if (this.nymph.pubsub) {
195
- this.nymph.pubsub.authenticate(null);
196
- }
197
- currentToken = null;
198
- }
199
- }
200
- else {
201
- const base64Url = token.split('.')[1];
202
- const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
203
- const json = typeof atob === 'undefined'
204
- ? Buffer.from(base64, 'base64').toString('binary') // node
205
- : atob(base64); // browser
206
- const jwt = JSON.parse(json);
207
- this.nymph.headers['X-Xsrf-Token'] = jwt.xsrfToken;
208
- if (this.nymph.pubsub) {
209
- this.nymph.pubsub.authenticate(token, switchToken);
210
- }
211
- currentToken = token;
212
- }
213
- }
214
- }
215
- static on(event, callback) {
216
- const store = User.stores.get(this.nymph);
217
- if (store == null) {
218
- throw new Error('This user class was never initialized with an instance of Nymph');
219
- }
220
- const prop = (event + 'Callbacks');
221
- if (!(prop in store)) {
222
- throw new Error('Invalid event type.');
223
- }
224
- // @ts-ignore: The callback should always be the right type here.
225
- store[prop].push(callback);
226
- return () => this.off(event, callback);
227
- }
228
- static off(event, callback) {
229
- const store = User.stores.get(this.nymph);
230
- if (store == null) {
231
- throw new Error('This user class was never initialized with an instance of Nymph');
232
- }
233
- const prop = (event + 'Callbacks');
234
- if (!(prop in store)) {
235
- return false;
236
- }
237
- // @ts-ignore: The callback should always be the right type here.
238
- const i = store[prop].indexOf(callback);
239
- if (i > -1) {
240
- // @ts-ignore: The callback should always be the right type here.
241
- store[prop].splice(i, 1);
242
- }
243
- return true;
244
- }
245
- }
246
- User.stores = new WeakMap();
247
- // The name of the server class
248
- User.class = 'User';
249
- exports.default = User;
250
- //# sourceMappingURL=User.js.map
package/lib/User.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"User.js","sourceRoot":"","sources":["../src/User.ts"],"names":[],"mappings":"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"}
package/lib/helpers.d.ts DELETED
@@ -1,76 +0,0 @@
1
- import type UserClass from './User';
2
- import type { ClientConfig, CurrentUserData } from './User';
3
- export type RegistrationDetails = {
4
- /**
5
- * New user's username.
6
- */
7
- username: string;
8
- /**
9
- * New user's password.
10
- */
11
- password: string;
12
- /**
13
- * Repeat the password.
14
- */
15
- password2: string;
16
- /**
17
- * Whether the username passed verification.
18
- */
19
- usernameVerified: boolean;
20
- /**
21
- * The new user's email address.
22
- */
23
- email?: string;
24
- /**
25
- * The new user's given name.
26
- */
27
- nameFirst?: string;
28
- /**
29
- * The new user's surname.
30
- */
31
- nameLast?: string;
32
- /**
33
- * The new user's phone number.
34
- */
35
- phone?: string;
36
- /**
37
- * Additional data to be included in the request.
38
- */
39
- additionalData?: {
40
- [k: string]: any;
41
- };
42
- };
43
- export declare class NeedTOTPError extends Error {
44
- }
45
- export declare function login(User: typeof UserClass, username: string, password: string, code?: string, additionalData?: {
46
- [k: string]: any;
47
- }): Promise<{
48
- message: string;
49
- user?: (UserClass & import("./User").UserData & {
50
- abilities?: string[] | undefined;
51
- email?: string | undefined;
52
- phone?: string | undefined;
53
- group?: (import("./Group").default & import("./Group").GroupData & {
54
- abilities?: string[] | undefined;
55
- email?: string | undefined;
56
- phone?: string | undefined;
57
- user?: (UserClass & import("./User").UserData & any) | null | undefined;
58
- }) | undefined;
59
- groups?: (import("./Group").default & import("./Group").GroupData & {
60
- abilities?: string[] | undefined;
61
- email?: string | undefined;
62
- phone?: string | undefined;
63
- user?: (UserClass & import("./User").UserData & any) | null | undefined;
64
- })[] | undefined;
65
- inheritAbilities?: boolean | undefined;
66
- newEmailAddress?: string | undefined;
67
- }) | undefined;
68
- }>;
69
- export declare function register(User: typeof UserClass, userDetails: RegistrationDetails, clientConfig?: ClientConfig): Promise<{
70
- loggedin: boolean;
71
- message: string;
72
- user?: UserClass & CurrentUserData;
73
- }>;
74
- export declare function checkUsername(User: typeof UserClass, username: string, clientConfig?: ClientConfig): Promise<{
75
- message: string;
76
- }>;
package/lib/helpers.js DELETED
@@ -1,105 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkUsername = exports.register = exports.login = exports.NeedTOTPError = void 0;
4
- class NeedTOTPError extends Error {
5
- }
6
- exports.NeedTOTPError = NeedTOTPError;
7
- async function login(User, username, password, code, additionalData) {
8
- if (username === '') {
9
- throw new Error('You need to enter a username.');
10
- }
11
- if (password === '') {
12
- throw new Error('You need to enter a password');
13
- }
14
- try {
15
- const { result, needTOTP, ...response } = await User.loginUser({
16
- username,
17
- password,
18
- code,
19
- ...(additionalData ? { additionalData } : {}),
20
- });
21
- if (!result) {
22
- if (needTOTP) {
23
- throw new NeedTOTPError(response.message);
24
- }
25
- throw new Error(response.message);
26
- }
27
- return response;
28
- }
29
- catch (e) {
30
- if (e instanceof NeedTOTPError) {
31
- throw e;
32
- }
33
- throw new Error(e?.message ?? 'An error occurred.');
34
- }
35
- }
36
- exports.login = login;
37
- async function register(User, userDetails, clientConfig) {
38
- if (userDetails.username === '') {
39
- throw new Error('You need to enter a username.');
40
- }
41
- if (!userDetails.usernameVerified) {
42
- throw new Error('The username you entered is not valid.');
43
- }
44
- if (userDetails.password !== userDetails.password2) {
45
- throw new Error('Your passwords do not match.');
46
- }
47
- if (userDetails.password === '') {
48
- throw new Error('You need to enter a password');
49
- }
50
- // Create a new user.
51
- let user = User.factorySync();
52
- user.username = userDetails.username;
53
- const config = clientConfig || (await User.getClientConfig());
54
- if (config.regFields.includes('email')) {
55
- if (config.emailUsernames) {
56
- user.email = userDetails.username;
57
- }
58
- else {
59
- user.email = userDetails.email;
60
- }
61
- }
62
- if (config.regFields.includes('name')) {
63
- user.nameFirst = userDetails.nameFirst;
64
- user.nameLast = userDetails.nameLast;
65
- }
66
- if (config.regFields.includes('phone')) {
67
- user.phone = userDetails.phone;
68
- }
69
- try {
70
- const { result, ...response } = await user.$register({
71
- password: userDetails.password,
72
- ...(userDetails.additionalData
73
- ? { additionalData: userDetails.additionalData }
74
- : {}),
75
- });
76
- if (!result) {
77
- throw new Error(response.message);
78
- }
79
- return { ...response, user };
80
- }
81
- catch (e) {
82
- throw new Error(e?.message ?? 'An error occurred.');
83
- }
84
- }
85
- exports.register = register;
86
- async function checkUsername(User, username, clientConfig) {
87
- let user = User.factorySync();
88
- user.username = username;
89
- const config = clientConfig || (await User.getClientConfig());
90
- if (config.emailUsernames) {
91
- user.email = username;
92
- }
93
- try {
94
- const { result, ...response } = await user.$checkUsername();
95
- if (!result) {
96
- throw new Error(response.message);
97
- }
98
- return response;
99
- }
100
- catch (e) {
101
- throw new Error(e?.message ?? 'An error occurred.');
102
- }
103
- }
104
- exports.checkUsername = checkUsername;
105
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts DELETED
@@ -1,7 +0,0 @@
1
- export * from './Group';
2
- import Group from './Group';
3
- export { Group };
4
- export * from './helpers';
5
- export * from './User';
6
- import User from './User';
7
- export { User };
package/lib/index.js DELETED
@@ -1,28 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.User = exports.Group = void 0;
21
- __exportStar(require("./Group"), exports);
22
- const Group_1 = __importDefault(require("./Group"));
23
- exports.Group = Group_1.default;
24
- __exportStar(require("./helpers"), exports);
25
- __exportStar(require("./User"), exports);
26
- const User_1 = __importDefault(require("./User"));
27
- exports.User = User_1.default;
28
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,oDAA4B;AACnB,gBADF,eAAK,CACE;AAEd,4CAA0B;AAE1B,yCAAuB;AACvB,kDAA0B;AACjB,eADF,cAAI,CACE"}
@@ -1 +0,0 @@
1
- export {};
package/lib/index.test.js DELETED
@@ -1,262 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const express_1 = __importDefault(require("express"));
7
- const driver_sqlite3_1 = __importDefault(require("@nymphjs/driver-sqlite3"));
8
- const nymph_1 = require("@nymphjs/nymph");
9
- const client_node_1 = require("@nymphjs/client-node");
10
- const tilmeld_1 = require("@nymphjs/tilmeld");
11
- const server_1 = __importDefault(require("@nymphjs/server"));
12
- const index_1 = require("./index");
13
- describe('Tilmeld Client', () => {
14
- let server = undefined;
15
- afterEach(async () => {
16
- await new Promise((resolve) => {
17
- if (server) {
18
- server.close(() => resolve()); // avoid jest open handle error
19
- }
20
- else {
21
- resolve();
22
- }
23
- });
24
- });
25
- async function createNymphTilmeldServer(config, clientConfig) {
26
- // Wait for next event loop.
27
- await new Promise((resolve) => setTimeout(resolve, 50));
28
- const sqliteConfig = {
29
- filename: ':memory:',
30
- };
31
- const tilmeld = new tilmeld_1.Tilmeld({
32
- jwtSecret: 'supersecrettestingsecret',
33
- allowRegistration: true,
34
- verifyEmail: false,
35
- emailUsernames: false,
36
- ...config,
37
- });
38
- const nymphServer = new nymph_1.Nymph({}, new driver_sqlite3_1.default(sqliteConfig), tilmeld);
39
- const UserModel = nymphServer.addEntityClass(tilmeld_1.User);
40
- const GroupModel = nymphServer.addEntityClass(tilmeld_1.Group);
41
- const app = (0, express_1.default)();
42
- app.use('/test', (0, server_1.default)(nymphServer));
43
- server = app.listen(5084);
44
- const nymph = new client_node_1.Nymph({
45
- restUrl: 'http://localhost:5084/test/',
46
- ...(clientConfig ?? {}),
47
- });
48
- const User = nymph.addEntityClass(index_1.User);
49
- User.init(nymph);
50
- const Group = nymph.addEntityClass(index_1.Group);
51
- return {
52
- tilmeld,
53
- nymphServer,
54
- UserModel,
55
- GroupModel,
56
- app,
57
- nymph,
58
- User,
59
- Group,
60
- };
61
- }
62
- async function createAdmin(User) {
63
- const admin = User.factorySync();
64
- admin.username = 'admin';
65
- admin.email = 'root@localhost';
66
- admin.nameFirst = 'Admin';
67
- admin.nameLast = 'User';
68
- try {
69
- const result = await admin.$register({
70
- password: 'supersecretadminpassword',
71
- });
72
- return { result, admin };
73
- }
74
- catch (e) {
75
- console.error('Error creating admin:', e);
76
- throw e;
77
- }
78
- }
79
- async function createUser(User) {
80
- const user = User.factorySync();
81
- user.username = 'user';
82
- user.email = 'user@localhost';
83
- user.nameFirst = 'Some';
84
- user.nameLast = 'User';
85
- try {
86
- const result = await user.$register({
87
- password: 'supersecretuserpassword',
88
- });
89
- return { result, user };
90
- }
91
- catch (e) {
92
- console.error('Error creating user:', e);
93
- throw e;
94
- }
95
- }
96
- it('get client config', async () => {
97
- const { User } = await createNymphTilmeldServer();
98
- const result = await User.getClientConfig();
99
- expect(result).not.toBeNull();
100
- expect(result.verifyEmail).toBeFalsy();
101
- });
102
- it('produce errors when register data is incorrect', async () => {
103
- const { User } = await createNymphTilmeldServer();
104
- try {
105
- const admin = User.factorySync();
106
- let result = await admin.$register({
107
- password: 'supersecretadminpassword',
108
- });
109
- expect(result.result).toBeFalsy();
110
- expect(result.loggedin).toBeFalsy();
111
- expect(result.message).toEqual('Please specify a username.');
112
- expect(admin.guid).toBeNull();
113
- admin.username = 'admin';
114
- try {
115
- expect((result = await admin.$register({
116
- password: 'supersecretadminpassword',
117
- }))).toThrow();
118
- }
119
- catch (e) {
120
- expect(e.status).toEqual(400);
121
- expect(e.message).toEqual('Please specify a valid email.');
122
- }
123
- admin.email = 'root@localhost';
124
- try {
125
- expect((result = await admin.$register({
126
- password: 'supersecretadminpassword',
127
- }))).toThrow();
128
- }
129
- catch (e) {
130
- expect(e.status).toEqual(400);
131
- expect(e.message).toEqual('Invalid Group: "name" is required');
132
- }
133
- expect(admin.guid).toBeNull();
134
- }
135
- catch (e) {
136
- console.error('Error running test: ', e);
137
- throw e;
138
- }
139
- });
140
- it('create admin user', async () => {
141
- const { User } = await createNymphTilmeldServer();
142
- try {
143
- const { result, admin } = await createAdmin(User);
144
- expect(result.result).toBeTruthy();
145
- expect(result.loggedin).toBeTruthy();
146
- expect(result.message).toEqual("You're now registered and logged in!");
147
- expect(admin.guid).not.toBeNull();
148
- expect(typeof admin.guid).toEqual('string');
149
- const permission = await admin.$gatekeeper('system/admin');
150
- expect(permission).toBeTruthy();
151
- }
152
- catch (e) {
153
- console.error('Error running test: ', e);
154
- throw e;
155
- }
156
- });
157
- it('logout', async () => {
158
- const { User } = await createNymphTilmeldServer();
159
- try {
160
- const { admin } = await createAdmin(User);
161
- const user1 = await User.current();
162
- expect(user1?.guid).toEqual(admin.guid);
163
- expect((await admin.$logout()).result).toBeTruthy();
164
- const user2 = await User.current();
165
- expect(user2).toBeNull();
166
- }
167
- catch (e) {
168
- console.error('Error running test: ', e);
169
- throw e;
170
- }
171
- });
172
- it('second user', async () => {
173
- const { User } = await createNymphTilmeldServer();
174
- try {
175
- const { admin } = await createAdmin(User);
176
- expect((await admin.$logout()).result).toBeTruthy();
177
- const { result, user } = await createUser(User);
178
- expect(result.result).toBeTruthy();
179
- expect(result.loggedin).toBeTruthy();
180
- expect(result.message).toEqual("You're now registered and logged in!");
181
- expect(user.guid).not.toBeNull();
182
- expect(typeof user.guid).toEqual('string');
183
- const permission = await user.$gatekeeper('system/admin');
184
- expect(permission).toBeFalsy();
185
- }
186
- catch (e) {
187
- console.error('Error running test: ', e);
188
- throw e;
189
- }
190
- });
191
- it("doesn't issue renewed token when not needed", async () => {
192
- const { User, nymph } = await createNymphTilmeldServer({
193
- jwtExpire: 5,
194
- jwtRenew: 0,
195
- });
196
- let responses = 0;
197
- nymph.on('response', (response) => {
198
- if (responses === 0) {
199
- expect(response.headers.get('set-cookie')).toMatch(/^TILMELDAUTH=[^;]+; Max-Age=5; Domain=localhost; Path=\/; Expires=[^;]+; SameSite=Strict$/);
200
- }
201
- else {
202
- expect(response.headers.has('set-cookie')).toBeFalsy();
203
- }
204
- responses++;
205
- });
206
- try {
207
- const { admin } = await createAdmin(User);
208
- expect(await admin.$gatekeeper()).toBeTruthy();
209
- expect(responses).toEqual(2);
210
- }
211
- catch (e) {
212
- console.error('Error running test: ', e);
213
- throw e;
214
- }
215
- });
216
- it('issues renewed token when needed', async () => {
217
- const { User, nymph } = await createNymphTilmeldServer({
218
- jwtExpire: 5,
219
- jwtRenew: 5,
220
- });
221
- let responses = 0;
222
- nymph.on('response', (response) => {
223
- expect(response.headers.get('set-cookie')).toMatch(/^TILMELDAUTH=[^;]+; Max-Age=5; Domain=localhost; Path=\/; Expires=[^;]+; SameSite=Strict$/);
224
- responses++;
225
- });
226
- try {
227
- const { admin } = await createAdmin(User);
228
- expect(await admin.$gatekeeper()).toBeTruthy();
229
- expect(responses).toEqual(2);
230
- }
231
- catch (e) {
232
- console.error('Error running test: ', e);
233
- throw e;
234
- }
235
- });
236
- it("doesn't issue renewed token when requested", async () => {
237
- const { User, nymph } = await createNymphTilmeldServer({
238
- jwtExpire: 5,
239
- jwtRenew: 5,
240
- }, { renewTokens: false });
241
- let responses = 0;
242
- nymph.on('response', (response) => {
243
- if (responses === 0) {
244
- expect(response.headers.get('set-cookie')).toMatch(/^TILMELDAUTH=[^;]+; Max-Age=5; Domain=localhost; Path=\/; Expires=[^;]+; SameSite=Strict$/);
245
- }
246
- else {
247
- expect(response.headers.has('set-cookie')).toBeFalsy();
248
- }
249
- responses++;
250
- });
251
- try {
252
- const { admin } = await createAdmin(User);
253
- expect(await admin.$gatekeeper()).toBeTruthy();
254
- expect(responses).toEqual(2);
255
- }
256
- catch (e) {
257
- console.error('Error running test: ', e);
258
- throw e;
259
- }
260
- });
261
- });
262
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}