@unchainedshop/core-users 3.0.0-alpha7 → 3.0.0-rc2
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/lib/db/UsersCollection.d.ts +54 -2
- package/lib/db/UsersCollection.d.ts.map +1 -1
- package/lib/db/UsersCollection.js.map +1 -1
- package/lib/db/WebAuthnCredentialsCreationRequestsCollection.d.ts +6 -1
- package/lib/db/WebAuthnCredentialsCreationRequestsCollection.d.ts.map +1 -1
- package/lib/db/WebAuthnCredentialsCreationRequestsCollection.js.map +1 -1
- package/lib/module/configureUsersModule.d.ts +22 -70
- package/lib/module/configureUsersModule.d.ts.map +1 -1
- package/lib/module/configureUsersModule.js +59 -54
- package/lib/module/configureUsersModule.js.map +1 -1
- package/lib/module/configureUsersModule_BACKUP_57123.d.ts +73 -0
- package/lib/module/configureUsersModule_BACKUP_57123.d.ts.map +1 -0
- package/lib/module/configureUsersModule_BACKUP_57123.js +567 -0
- package/lib/module/configureUsersModule_BACKUP_57123.js.map +1 -0
- package/lib/module/configureUsersModule_BASE_57123.d.ts +131 -0
- package/lib/module/configureUsersModule_BASE_57123.d.ts.map +1 -0
- package/lib/module/configureUsersModule_BASE_57123.js +563 -0
- package/lib/module/configureUsersModule_BASE_57123.js.map +1 -0
- package/lib/module/configureUsersModule_LOCAL_57123.d.ts +131 -0
- package/lib/module/configureUsersModule_LOCAL_57123.d.ts.map +1 -0
- package/lib/module/configureUsersModule_LOCAL_57123.js +564 -0
- package/lib/module/configureUsersModule_LOCAL_57123.js.map +1 -0
- package/lib/module/configureUsersModule_REMOTE_57123.d.ts +74 -0
- package/lib/module/configureUsersModule_REMOTE_57123.d.ts.map +1 -0
- package/lib/module/configureUsersModule_REMOTE_57123.js +567 -0
- package/lib/module/configureUsersModule_REMOTE_57123.js.map +1 -0
- package/lib/module/configureUsersWebAuthnModule.d.ts.map +1 -1
- package/lib/module/configureUsersWebAuthnModule.js.map +1 -1
- package/lib/types.d.ts +5 -2
- package/lib/types.d.ts.map +1 -1
- package/lib/users-index.d.ts +3 -2
- package/lib/users-index.d.ts.map +1 -1
- package/lib/users-index.js +3 -2
- package/lib/users-index.js.map +1 -1
- package/lib/users-settings.d.ts +1 -1
- package/lib/users-settings.d.ts.map +1 -1
- package/lib/users-settings.js.map +1 -1
- package/package.json +14 -17
- package/src/db/UsersCollection.ts +59 -2
- package/src/db/WebAuthnCredentialsCreationRequestsCollection.ts +7 -1
- package/src/module/configureUsersModule.ts +100 -75
- package/src/module/configureUsersWebAuthnModule.ts +0 -1
- package/src/module/removeConfidentialServiceHashes.test.ts +1 -1
- package/src/users-index.ts +3 -2
- package/src/users-settings.ts +1 -2
- package/tests/mock/user-mock.ts +2 -3
- package/tsconfig.json +5 -7
- package/lib/services/migrateUserDataService.d.ts +0 -4
- package/lib/services/migrateUserDataService.d.ts.map +0 -1
- package/lib/services/migrateUserDataService.js +0 -18
- package/lib/services/migrateUserDataService.js.map +0 -1
- package/lib/services/updateUserAvatarAfterUploadService.d.ts +0 -15
- package/lib/services/updateUserAvatarAfterUploadService.d.ts.map +0 -1
- package/lib/services/updateUserAvatarAfterUploadService.js +0 -24
- package/lib/services/updateUserAvatarAfterUploadService.js.map +0 -1
- package/lib/services/userServices.d.ts +0 -8
- package/lib/services/userServices.d.ts.map +0 -1
- package/lib/services/userServices.js +0 -7
- package/lib/services/userServices.js.map +0 -1
- package/src/module/sha256.ts +0 -5
- package/src/services/migrateUserDataService.ts +0 -37
- package/src/services/updateUserAvatarAfterUploadService.ts +0 -42
- package/src/services/userServices.ts +0 -15
- package/src/types.ts +0 -101
package/lib/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { TimestampFields, Address, Contact, mongodb } from '@unchainedshop/mongodb';
|
|
2
|
+
import { DateFilterInput } from '@unchainedshop/utils';
|
|
2
3
|
export interface PushSubscription {
|
|
3
4
|
_id: string;
|
|
4
5
|
userAgent: string;
|
|
@@ -47,7 +48,7 @@ export interface PushSubscriptionObject {
|
|
|
47
48
|
};
|
|
48
49
|
}
|
|
49
50
|
export type User = {
|
|
50
|
-
_id
|
|
51
|
+
_id: string;
|
|
51
52
|
deleted?: Date;
|
|
52
53
|
avatarId?: string;
|
|
53
54
|
emails: Array<Email>;
|
|
@@ -67,6 +68,8 @@ export type User = {
|
|
|
67
68
|
export type UserQuery = mongodb.Filter<User> & {
|
|
68
69
|
includeGuests?: boolean;
|
|
69
70
|
queryString?: string;
|
|
71
|
+
emailVerified?: boolean;
|
|
72
|
+
lastLogin?: DateFilterInput;
|
|
70
73
|
};
|
|
71
74
|
export interface WebAuthnCredentialsCreationRequest {
|
|
72
75
|
challenge: string;
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/lib/users-index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './db/UsersCollection.js';
|
|
2
|
+
export * from './db/WebAuthnCredentialsCreationRequestsCollection.js';
|
|
2
3
|
export * from './module/configureUsersModule.js';
|
|
3
|
-
export * from './
|
|
4
|
+
export * from './module/configureUsersWebAuthnModule.js';
|
|
4
5
|
export * from './users-settings.js';
|
|
5
6
|
//# sourceMappingURL=users-index.d.ts.map
|
package/lib/users-index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users-index.d.ts","sourceRoot":"","sources":["../src/users-index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"users-index.d.ts","sourceRoot":"","sources":["../src/users-index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,uDAAuD,CAAC;AACtE,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,qBAAqB,CAAC"}
|
package/lib/users-index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './db/UsersCollection.js';
|
|
2
|
+
export * from './db/WebAuthnCredentialsCreationRequestsCollection.js';
|
|
2
3
|
export * from './module/configureUsersModule.js';
|
|
3
|
-
export * from './
|
|
4
|
+
export * from './module/configureUsersWebAuthnModule.js';
|
|
4
5
|
export * from './users-settings.js';
|
|
5
6
|
//# sourceMappingURL=users-index.js.map
|
package/lib/users-index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users-index.js","sourceRoot":"","sources":["../src/users-index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"users-index.js","sourceRoot":"","sources":["../src/users-index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,uDAAuD,CAAC;AACtE,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,qBAAqB,CAAC"}
|
package/lib/users-settings.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users-settings.d.ts","sourceRoot":"","sources":["../src/users-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"users-settings.d.ts","sourceRoot":"","sources":["../src/users-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,MAAM,WAAW,mBAAmB;IAClC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AACD,MAAM,WAAW,YAAY;IAC3B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,8BAA8B,EAAE,OAAO,CAAC;IACxC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,iBAAiB,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC;CAC3E;AAED,eAAO,MAAM,YAAY,EAAE,YAwD1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users-settings.js","sourceRoot":"","sources":["../src/users-settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"users-settings.js","sourceRoot":"","sources":["../src/users-settings.ts"],"names":[],"mappings":"AAoBA,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,8BAA8B,EAAE,IAAI;IACpC,qBAAqB,EAAE,IAAI;IAC3B,aAAa,EAAE,IAAI;IACnB,gBAAgB,EAAE,IAAI;IACtB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,IAAI;IAEtB,iBAAiB,EAAE,CACjB,EACE,qBAAqB,EACrB,8BAA8B,EAC9B,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACI,EACtB,EAAc,EACd,EAAE;QACF,MAAM,qCAAqC,GAAG,IAAI,CAAC;QACnD,MAAM,4BAA4B,GAAG,IAAI,CAAC;QAE1C,MAAM,oBAAoB,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC1C,MAAM,kBAAkB,GAAG,MAAM,EAAE;iBAChC,UAAU,CAAC,OAAO,CAAC;iBACnB,cAAc,CAAC,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACxF,IAAI,kBAAkB;gBAAE,OAAO,KAAK,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,MAAM,uBAAuB,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE;YAC5D,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YAClD,IAAI,QAAQ,EAAE,MAAM,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YACvC,MAAM,qBAAqB,GAAG,MAAM,EAAE;iBACnC,UAAU,CAAC,OAAO,CAAC;iBACnB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACnF,IAAI,qBAAqB;gBAAE,OAAO,KAAK,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,MAAM,sBAAsB,GAAG,KAAK,EAAE,IAAU,EAAE,EAAE;YAClD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,uBAAuB,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;YACzD,OAAO,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,YAAY,CAAC,qBAAqB,GAAG,qBAAqB,IAAI,4BAA4B,CAAC;QAC3F,YAAY,CAAC,8BAA8B;YACzC,8BAA8B,IAAI,qCAAqC,CAAC;QAC1E,YAAY,CAAC,aAAa,GAAG,aAAa,IAAI,oBAAoB,CAAC;QACnE,YAAY,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,uBAAuB,CAAC;QAC5E,YAAY,CAAC,eAAe,GAAG,eAAe,IAAI,sBAAsB,CAAC;QACzE,YAAY,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,uBAAuB,CAAC;IAC9E,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-users",
|
|
3
|
-
"version": "3.0.0-
|
|
3
|
+
"version": "3.0.0-rc2",
|
|
4
4
|
"main": "lib/users-index.js",
|
|
5
|
-
"exports": {
|
|
6
|
-
".": "./lib/users-index.js",
|
|
7
|
-
"./*": "./lib/*"
|
|
8
|
-
},
|
|
9
5
|
"types": "lib/users-index.d.ts",
|
|
10
6
|
"type": "module",
|
|
11
7
|
"scripts": {
|
|
12
|
-
"clean": "
|
|
13
|
-
"
|
|
8
|
+
"clean": "tsc -b --clean",
|
|
9
|
+
"build": "tsc -b",
|
|
10
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
14
11
|
"watch": "tsc -w",
|
|
15
12
|
"test": "NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit",
|
|
16
13
|
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch --detectOpenHandles --forceExit"
|
|
@@ -31,19 +28,19 @@
|
|
|
31
28
|
},
|
|
32
29
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
30
|
"dependencies": {
|
|
34
|
-
"@
|
|
35
|
-
"@unchainedshop/
|
|
36
|
-
"@unchainedshop/
|
|
37
|
-
"@unchainedshop/
|
|
38
|
-
"@unchainedshop/
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
31
|
+
"@node-rs/bcrypt": "^1.10.7",
|
|
32
|
+
"@unchainedshop/events": "^3.0.0-rc2",
|
|
33
|
+
"@unchainedshop/file-upload": "^3.0.0-rc2",
|
|
34
|
+
"@unchainedshop/logger": "^3.0.0-rc2",
|
|
35
|
+
"@unchainedshop/mongodb": "^3.0.0-rc2",
|
|
36
|
+
"@unchainedshop/roles": "^3.0.0-rc2",
|
|
37
|
+
"@unchainedshop/utils": "^3.0.0-rc2",
|
|
38
|
+
"fido2-lib": "^3.5.3"
|
|
42
39
|
},
|
|
43
40
|
"devDependencies": {
|
|
44
|
-
"@types/node": "^22.
|
|
41
|
+
"@types/node": "^22.10.2",
|
|
45
42
|
"jest": "^29.7.0",
|
|
46
43
|
"ts-jest": "^29.2.5",
|
|
47
|
-
"typescript": "^5.
|
|
44
|
+
"typescript": "^5.7.2"
|
|
48
45
|
}
|
|
49
46
|
}
|
|
@@ -1,5 +1,62 @@
|
|
|
1
|
-
import { mongodb, buildDbIndexes } from '@unchainedshop/mongodb';
|
|
2
|
-
import {
|
|
1
|
+
import { TimestampFields, Address, Contact, mongodb, buildDbIndexes } from '@unchainedshop/mongodb';
|
|
2
|
+
import { DateFilterInput } from '@unchainedshop/utils';
|
|
3
|
+
|
|
4
|
+
export interface UserProfile {
|
|
5
|
+
displayName?: string;
|
|
6
|
+
birthday?: Date;
|
|
7
|
+
phoneMobile?: string;
|
|
8
|
+
gender?: string;
|
|
9
|
+
address?: Address;
|
|
10
|
+
}
|
|
11
|
+
export interface UserLastLogin {
|
|
12
|
+
timestamp?: Date;
|
|
13
|
+
locale?: string;
|
|
14
|
+
countryCode?: string;
|
|
15
|
+
remoteAddress?: string;
|
|
16
|
+
remotePort?: string;
|
|
17
|
+
userAgent?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface PushSubscriptionObject {
|
|
21
|
+
userAgent: string;
|
|
22
|
+
endpoint: string;
|
|
23
|
+
expirationTime?: number;
|
|
24
|
+
keys: {
|
|
25
|
+
auth: string;
|
|
26
|
+
p256dh: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface Email {
|
|
31
|
+
address: string;
|
|
32
|
+
verified: boolean;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export type User = {
|
|
36
|
+
_id: string;
|
|
37
|
+
deleted?: Date;
|
|
38
|
+
avatarId?: string;
|
|
39
|
+
emails: Array<Email>;
|
|
40
|
+
guest: boolean;
|
|
41
|
+
initialPassword: boolean;
|
|
42
|
+
lastBillingAddress?: Address;
|
|
43
|
+
lastContact?: Contact;
|
|
44
|
+
lastLogin?: UserLastLogin;
|
|
45
|
+
profile?: UserProfile;
|
|
46
|
+
roles: Array<string>;
|
|
47
|
+
services: any;
|
|
48
|
+
tags?: Array<string>;
|
|
49
|
+
pushSubscriptions: Array<PushSubscriptionObject>;
|
|
50
|
+
username?: string;
|
|
51
|
+
meta?: any;
|
|
52
|
+
} & TimestampFields;
|
|
53
|
+
|
|
54
|
+
export type UserQuery = mongodb.Filter<User> & {
|
|
55
|
+
includeGuests?: boolean;
|
|
56
|
+
queryString?: string;
|
|
57
|
+
emailVerified?: boolean;
|
|
58
|
+
lastLogin?: DateFilterInput;
|
|
59
|
+
};
|
|
3
60
|
|
|
4
61
|
export const UsersCollection = async (db: mongodb.Db) => {
|
|
5
62
|
const Users = db.collection<User>('users');
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import { WebAuthnCredentialsCreationRequest } from '../types.js';
|
|
2
1
|
import { mongodb, buildDbIndexes } from '@unchainedshop/mongodb';
|
|
3
2
|
|
|
3
|
+
export interface WebAuthnCredentialsCreationRequest {
|
|
4
|
+
challenge: string;
|
|
5
|
+
username: string;
|
|
6
|
+
origin: string;
|
|
7
|
+
factor: 'first' | 'second' | 'either';
|
|
8
|
+
}
|
|
9
|
+
|
|
4
10
|
type Collection = WebAuthnCredentialsCreationRequest & { _id: number };
|
|
5
11
|
|
|
6
12
|
export const WebAuthnCredentialsCreationRequestsCollection = async (db: mongodb.Db) => {
|
|
@@ -1,25 +1,39 @@
|
|
|
1
|
-
import bcrypt from '
|
|
2
|
-
import { ModuleInput } from '@unchainedshop/mongodb';
|
|
3
|
-
import { User, UserQuery, Email, UserLastLogin, UserProfile, UserData } from '../types.js';
|
|
4
|
-
import { emit, registerEvents } from '@unchainedshop/events';
|
|
1
|
+
import bcrypt from '@node-rs/bcrypt';
|
|
5
2
|
import {
|
|
3
|
+
ModuleInput,
|
|
4
|
+
Address,
|
|
5
|
+
Contact,
|
|
6
6
|
generateDbFilterById,
|
|
7
7
|
buildSortOptions,
|
|
8
8
|
mongodb,
|
|
9
9
|
generateDbObjectId,
|
|
10
10
|
} from '@unchainedshop/mongodb';
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
import {
|
|
12
|
+
User,
|
|
13
|
+
UserQuery,
|
|
14
|
+
Email,
|
|
15
|
+
UserLastLogin,
|
|
16
|
+
UserProfile,
|
|
17
|
+
UsersCollection,
|
|
18
|
+
} from '../db/UsersCollection.js';
|
|
19
|
+
import { emit, registerEvents } from '@unchainedshop/events';
|
|
20
|
+
import { systemLocale, SortDirection, SortOption, sha256 } from '@unchainedshop/utils';
|
|
15
21
|
import addMigrations from './addMigrations.js';
|
|
16
22
|
import { userSettings, UserSettingsOptions } from '../users-settings.js';
|
|
17
23
|
import { configureUsersWebAuthnModule, UsersWebAuthnModule } from './configureUsersWebAuthnModule.js';
|
|
18
24
|
import * as pbkdf2 from './pbkdf2.js';
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
|
|
26
|
+
export interface UserData {
|
|
27
|
+
email?: string;
|
|
28
|
+
guest?: boolean;
|
|
29
|
+
initialPassword?: boolean;
|
|
30
|
+
lastBillingAddress?: User['lastBillingAddress'];
|
|
31
|
+
password: string | null;
|
|
32
|
+
webAuthnPublicKeyCredentials?: any;
|
|
33
|
+
profile?: UserProfile;
|
|
34
|
+
roles?: Array<string>;
|
|
35
|
+
username?: string;
|
|
36
|
+
}
|
|
23
37
|
|
|
24
38
|
export type UsersModule = {
|
|
25
39
|
// Submodules
|
|
@@ -76,7 +90,8 @@ export type UsersModule = {
|
|
|
76
90
|
_id: string,
|
|
77
91
|
{ profile, meta }: { profile?: UserProfile; meta?: any },
|
|
78
92
|
) => Promise<User>;
|
|
79
|
-
|
|
93
|
+
markDeleted: (userId: string) => Promise<User>;
|
|
94
|
+
deletePermanently: (params: { userId: string }) => Promise<User>;
|
|
80
95
|
updateRoles: (_id: string, roles: Array<string>) => Promise<User>;
|
|
81
96
|
updateTags: (_id: string, tags: Array<string>) => Promise<User>;
|
|
82
97
|
updateUser: (
|
|
@@ -93,6 +108,9 @@ export type UsersModule = {
|
|
|
93
108
|
},
|
|
94
109
|
) => Promise<void>;
|
|
95
110
|
removePushSubscription: (userId: string, p256dh: string) => Promise<void>;
|
|
111
|
+
hashPassword(password: string): Promise<{
|
|
112
|
+
pbkdf2: string;
|
|
113
|
+
}>;
|
|
96
114
|
};
|
|
97
115
|
|
|
98
116
|
const USER_EVENTS = [
|
|
@@ -118,36 +136,44 @@ export const removeConfidentialServiceHashes = (rawUser: User): User => {
|
|
|
118
136
|
return user;
|
|
119
137
|
};
|
|
120
138
|
|
|
121
|
-
export const buildFindSelector = ({
|
|
139
|
+
export const buildFindSelector = ({
|
|
140
|
+
includeGuests,
|
|
141
|
+
queryString,
|
|
142
|
+
emailVerified,
|
|
143
|
+
lastLogin,
|
|
144
|
+
...rest
|
|
145
|
+
}: UserQuery) => {
|
|
122
146
|
const selector: mongodb.Filter<User> = { ...rest, deleted: null };
|
|
123
147
|
if (!includeGuests) selector.guest = { $in: [false, null] };
|
|
148
|
+
if (emailVerified === true) {
|
|
149
|
+
selector['emails.verified'] = true;
|
|
150
|
+
}
|
|
151
|
+
if (emailVerified === false) {
|
|
152
|
+
// We need to use $ne here else we'd also find users with many emails where one is
|
|
153
|
+
// unverified
|
|
154
|
+
selector['emails.verified'] = { $ne: true };
|
|
155
|
+
}
|
|
156
|
+
if (lastLogin?.start) {
|
|
157
|
+
selector['lastLogin.timestamp'] = { $exists: true };
|
|
158
|
+
}
|
|
159
|
+
if (lastLogin?.end) {
|
|
160
|
+
selector['lastLogin.timestamp'].$lte = new Date(lastLogin.end);
|
|
161
|
+
}
|
|
162
|
+
if (lastLogin?.start) {
|
|
163
|
+
selector['lastLogin.timestamp'].$gte = new Date(lastLogin.start);
|
|
164
|
+
}
|
|
124
165
|
if (queryString) {
|
|
125
166
|
(selector as any).$text = { $search: queryString };
|
|
126
167
|
}
|
|
127
168
|
return selector;
|
|
128
169
|
};
|
|
129
170
|
|
|
130
|
-
FileDirector.registerFileUploadCallback<{
|
|
131
|
-
services: {
|
|
132
|
-
users: UserServices;
|
|
133
|
-
files: FileServices;
|
|
134
|
-
};
|
|
135
|
-
modules: {
|
|
136
|
-
users: UsersModule;
|
|
137
|
-
files: FilesModule;
|
|
138
|
-
};
|
|
139
|
-
}>('user-avatars', async (file, context) => {
|
|
140
|
-
const { services } = context;
|
|
141
|
-
return services.users.updateUserAvatarAfterUpload({ file }, context);
|
|
142
|
-
});
|
|
143
|
-
|
|
144
171
|
export const configureUsersModule = async ({
|
|
145
172
|
db,
|
|
146
173
|
options,
|
|
147
174
|
migrationRepository,
|
|
148
|
-
}: ModuleInput<UserSettingsOptions>) => {
|
|
175
|
+
}: ModuleInput<UserSettingsOptions>): Promise<UsersModule> => {
|
|
149
176
|
userSettings.configureSettings(options || {}, db);
|
|
150
|
-
|
|
151
177
|
registerEvents(USER_EVENTS);
|
|
152
178
|
const Users = await UsersCollection(db);
|
|
153
179
|
|
|
@@ -185,13 +211,13 @@ export const configureUsersModule = async ({
|
|
|
185
211
|
when: Date;
|
|
186
212
|
}> {
|
|
187
213
|
if (!plainToken) return null;
|
|
188
|
-
const token = await sha256
|
|
214
|
+
const token = await sha256(plainToken);
|
|
189
215
|
const user = await Users.findOne(
|
|
190
216
|
{
|
|
191
217
|
'services.email.verificationTokens': {
|
|
192
218
|
$elemMatch: {
|
|
193
219
|
token,
|
|
194
|
-
when: { $gt: new Date().getTime() },
|
|
220
|
+
when: { $gt: new Date(new Date().getTime() - 1000 * 60 * 60) },
|
|
195
221
|
},
|
|
196
222
|
},
|
|
197
223
|
},
|
|
@@ -231,13 +257,13 @@ export const configureUsersModule = async ({
|
|
|
231
257
|
},
|
|
232
258
|
|
|
233
259
|
async findUserByResetToken(plainToken: string): Promise<User> {
|
|
234
|
-
const token = await sha256
|
|
260
|
+
const token = await sha256(plainToken);
|
|
235
261
|
const user = await Users.findOne(
|
|
236
262
|
{
|
|
237
263
|
'services.password.reset': {
|
|
238
264
|
$elemMatch: {
|
|
239
265
|
token,
|
|
240
|
-
when: { $gt: new Date().getTime() },
|
|
266
|
+
when: { $gt: new Date(new Date().getTime() - 1000 * 60 * 60) },
|
|
241
267
|
},
|
|
242
268
|
},
|
|
243
269
|
},
|
|
@@ -247,7 +273,7 @@ export const configureUsersModule = async ({
|
|
|
247
273
|
},
|
|
248
274
|
|
|
249
275
|
async findUserByToken(plainToken?: string): Promise<User> {
|
|
250
|
-
const token = await sha256
|
|
276
|
+
const token = await sha256(plainToken);
|
|
251
277
|
|
|
252
278
|
if (token) {
|
|
253
279
|
return Users.findOne({
|
|
@@ -276,7 +302,7 @@ export const configureUsersModule = async ({
|
|
|
276
302
|
offset?: number;
|
|
277
303
|
}): Promise<Array<User>> {
|
|
278
304
|
const defaultSort = [{ key: 'created', value: SortDirection.ASC }] as SortOption[];
|
|
279
|
-
const selector = buildFindSelector(query);
|
|
305
|
+
const selector = buildFindSelector({ ...query });
|
|
280
306
|
|
|
281
307
|
if (query.queryString) {
|
|
282
308
|
return Users.find(selector, {
|
|
@@ -295,9 +321,7 @@ export const configureUsersModule = async ({
|
|
|
295
321
|
},
|
|
296
322
|
|
|
297
323
|
async userExists({ userId }: { userId: string }): Promise<boolean> {
|
|
298
|
-
const
|
|
299
|
-
selector.deleted = null; // skip deleted users when checked for existance!
|
|
300
|
-
const userCount = await Users.countDocuments(selector, { limit: 1 });
|
|
324
|
+
const userCount = await Users.countDocuments({ _id: userId, deleted: null }, { limit: 1 });
|
|
301
325
|
return userCount === 1;
|
|
302
326
|
},
|
|
303
327
|
|
|
@@ -410,7 +434,7 @@ export const configureUsersModule = async ({
|
|
|
410
434
|
plainPassword: string,
|
|
411
435
|
): Promise<boolean> {
|
|
412
436
|
if (bcryptHash) {
|
|
413
|
-
const password = await sha256
|
|
437
|
+
const password = await sha256(plainPassword);
|
|
414
438
|
return bcrypt.compare(password, bcryptHash);
|
|
415
439
|
}
|
|
416
440
|
if (pbkdf2SaltAndHash) {
|
|
@@ -451,9 +475,9 @@ export const configureUsersModule = async ({
|
|
|
451
475
|
async sendResetPasswordEmail(userId: string, email: string, isEnrollment?: boolean): Promise<void> {
|
|
452
476
|
const plainToken = crypto.randomUUID();
|
|
453
477
|
const resetToken = {
|
|
454
|
-
token: await sha256
|
|
478
|
+
token: await sha256(plainToken),
|
|
455
479
|
address: email,
|
|
456
|
-
when: new Date()
|
|
480
|
+
when: new Date(),
|
|
457
481
|
};
|
|
458
482
|
|
|
459
483
|
await Users.updateOne(
|
|
@@ -476,9 +500,9 @@ export const configureUsersModule = async ({
|
|
|
476
500
|
async sendVerificationEmail(userId: string, email: string): Promise<void> {
|
|
477
501
|
const plainToken = crypto.randomUUID();
|
|
478
502
|
const verificationToken = {
|
|
479
|
-
token: await sha256
|
|
503
|
+
token: await sha256(plainToken),
|
|
480
504
|
address: email,
|
|
481
|
-
when: new Date()
|
|
505
|
+
when: new Date(),
|
|
482
506
|
};
|
|
483
507
|
|
|
484
508
|
await Users.updateOne(
|
|
@@ -602,42 +626,38 @@ export const configureUsersModule = async ({
|
|
|
602
626
|
return user;
|
|
603
627
|
},
|
|
604
628
|
|
|
605
|
-
|
|
606
|
-
const
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
629
|
+
markDeleted: async (userId: string): Promise<User> => {
|
|
630
|
+
const user = await Users.findOneAndUpdate(
|
|
631
|
+
{ _id: userId },
|
|
632
|
+
{
|
|
633
|
+
$set: {
|
|
634
|
+
username: `deleted-${Date.now()}`,
|
|
635
|
+
deleted: new Date(),
|
|
636
|
+
emails: [],
|
|
637
|
+
roles: [],
|
|
638
|
+
profile: null,
|
|
639
|
+
lastBillingAddress: null,
|
|
640
|
+
services: {},
|
|
641
|
+
pushSubscriptions: [],
|
|
642
|
+
avatarId: null,
|
|
643
|
+
initialPassword: false,
|
|
644
|
+
lastContact: null,
|
|
645
|
+
lastLogin: null,
|
|
620
646
|
},
|
|
621
|
-
];
|
|
622
|
-
});
|
|
623
|
-
|
|
624
|
-
const obfuscatedUsername = existingUser.username ? `${existingUser.username}-${uuid}` : null;
|
|
625
|
-
|
|
626
|
-
Users.updateOne(userFilter, {
|
|
627
|
-
$set: {
|
|
628
|
-
emails: obfuscatedEmails,
|
|
629
|
-
username: obfuscatedUsername,
|
|
630
|
-
services: {},
|
|
631
647
|
},
|
|
632
|
-
|
|
648
|
+
{ returnDocument: 'after' },
|
|
649
|
+
);
|
|
633
650
|
|
|
634
|
-
const user = await Users.findOneAndDelete(userFilter);
|
|
635
651
|
await emit('USER_REMOVE', {
|
|
636
|
-
user
|
|
652
|
+
user,
|
|
637
653
|
});
|
|
638
654
|
return user;
|
|
639
655
|
},
|
|
640
656
|
|
|
657
|
+
deletePermanently: async ({ userId }: { userId: string }): Promise<User> => {
|
|
658
|
+
return Users.findOneAndDelete({ _id: userId });
|
|
659
|
+
},
|
|
660
|
+
|
|
641
661
|
updateProfile: async (
|
|
642
662
|
userId: string,
|
|
643
663
|
updatedData: { profile?: UserProfile; meta?: any },
|
|
@@ -680,6 +700,8 @@ export const configureUsersModule = async ({
|
|
|
680
700
|
const userFilter = generateDbFilterById(_id);
|
|
681
701
|
const user = await Users.findOne(userFilter, {});
|
|
682
702
|
|
|
703
|
+
if (!lastBillingAddress) return user;
|
|
704
|
+
|
|
683
705
|
const modifier = {
|
|
684
706
|
$set: {
|
|
685
707
|
lastBillingAddress,
|
|
@@ -702,9 +724,12 @@ export const configureUsersModule = async ({
|
|
|
702
724
|
returnDocument: 'after',
|
|
703
725
|
});
|
|
704
726
|
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
727
|
+
if (updatedUser) {
|
|
728
|
+
await emit('USER_UPDATE_BILLING_ADDRESS', {
|
|
729
|
+
user: removeConfidentialServiceHashes(updatedUser),
|
|
730
|
+
});
|
|
731
|
+
}
|
|
732
|
+
|
|
708
733
|
return updatedUser;
|
|
709
734
|
},
|
|
710
735
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { User } from '../types.js';
|
|
2
1
|
import { removeConfidentialServiceHashes } from './configureUsersModule.js';
|
|
3
2
|
import user from '../../tests/mock/user-mock.js';
|
|
3
|
+
import { User } from '../db/UsersCollection.js';
|
|
4
4
|
|
|
5
5
|
describe('removeConfidentialServiceHashes', () => {
|
|
6
6
|
it('Should remove sensitive user credentials ', () => {
|
package/src/users-index.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './db/UsersCollection.js';
|
|
2
|
+
export * from './db/WebAuthnCredentialsCreationRequestsCollection.js';
|
|
2
3
|
export * from './module/configureUsersModule.js';
|
|
3
|
-
export * from './
|
|
4
|
+
export * from './module/configureUsersWebAuthnModule.js';
|
|
4
5
|
export * from './users-settings.js';
|
package/src/users-settings.ts
CHANGED
package/tests/mock/user-mock.ts
CHANGED
|
@@ -2,7 +2,7 @@ export default {
|
|
|
2
2
|
_id: 'PKve0k9fLCUzn2EUi',
|
|
3
3
|
guest: false,
|
|
4
4
|
initialPassword: false,
|
|
5
|
-
lastBillingAddress:
|
|
5
|
+
lastBillingAddress: null,
|
|
6
6
|
profile: {
|
|
7
7
|
address: {
|
|
8
8
|
firstName: null,
|
|
@@ -65,9 +65,8 @@ export default {
|
|
|
65
65
|
remotePort: '42978',
|
|
66
66
|
userAgent:
|
|
67
67
|
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
|
|
68
|
-
locale: '
|
|
68
|
+
locale: 'de-CH',
|
|
69
69
|
countryCode: 'CH',
|
|
70
70
|
},
|
|
71
71
|
updated: new Date('2022-11-30T11:02:19.624Z'),
|
|
72
|
-
updatedBy: 'PKve0k9fLCUzn2EUi',
|
|
73
72
|
};
|
package/tsconfig.json
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"extends": "../shared/base.tsconfig.json",
|
|
3
3
|
"compilerOptions": {
|
|
4
|
-
"
|
|
5
|
-
"
|
|
4
|
+
"declarationDir": "./lib",
|
|
5
|
+
"rootDir": "./src",
|
|
6
|
+
"outDir": "./lib"
|
|
6
7
|
},
|
|
7
|
-
"exclude": ["**/*.test.ts", "**/*.test.js", "tests"]
|
|
8
|
-
|
|
9
|
-
"./src"
|
|
10
|
-
]
|
|
11
|
-
}
|
|
8
|
+
"exclude": ["**/*.test.ts", "**/*.test.js", "tests", "lib"]
|
|
9
|
+
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { UnchainedCore } from '@unchainedshop/core';
|
|
2
|
-
export type MigrateUserDataService = (userIdBeforeLogin: any, userId: any, unchainedAPI: UnchainedCore) => Promise<void>;
|
|
3
|
-
export declare const migrateUserDataService: MigrateUserDataService;
|
|
4
|
-
//# sourceMappingURL=migrateUserDataService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrateUserDataService.d.ts","sourceRoot":"","sources":["../../src/services/migrateUserDataService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,MAAM,sBAAsB,GAAG,CACnC,iBAAiB,KAAA,EACjB,MAAM,KAAA,EACN,YAAY,EAAE,aAAa,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,eAAO,MAAM,sBAAsB,EAAE,sBA2BpC,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { userSettings } from '../users-settings.js';
|
|
2
|
-
export const migrateUserDataService = async (userIdBeforeLogin, userId, unchainedAPI) => {
|
|
3
|
-
const user = await unchainedAPI.modules.users.findUserById(userId);
|
|
4
|
-
const userBeforeLogin = await unchainedAPI.modules.users.findUserById(userIdBeforeLogin);
|
|
5
|
-
await unchainedAPI.services.orders.migrateOrderCarts({
|
|
6
|
-
fromUserId: userIdBeforeLogin,
|
|
7
|
-
toUserId: userId,
|
|
8
|
-
shouldMerge: userSettings.mergeUserCartsOnLogin,
|
|
9
|
-
countryContext: userBeforeLogin.lastLogin?.countryCode || user.lastLogin?.countryCode,
|
|
10
|
-
}, unchainedAPI);
|
|
11
|
-
await unchainedAPI.services.bookmarks.migrateBookmarks({
|
|
12
|
-
fromUserId: userIdBeforeLogin,
|
|
13
|
-
toUserId: userId,
|
|
14
|
-
shouldMerge: userSettings.mergeUserCartsOnLogin,
|
|
15
|
-
countryContext: userBeforeLogin.lastLogin?.countryCode || user.lastLogin?.countryCode,
|
|
16
|
-
}, unchainedAPI);
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=migrateUserDataService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrateUserDataService.js","sourceRoot":"","sources":["../../src/services/migrateUserDataService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQpD,MAAM,CAAC,MAAM,sBAAsB,GAA2B,KAAK,EACjE,iBAAiB,EACjB,MAAM,EACN,YAAY,EACZ,EAAE;IACF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAEzF,MAAM,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAClD;QACE,UAAU,EAAE,iBAAiB;QAC7B,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,YAAY,CAAC,qBAAqB;QAC/C,cAAc,EAAE,eAAe,CAAC,SAAS,EAAE,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW;KACtF,EACD,YAAY,CACb,CAAC;IAEF,MAAM,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CACpD;QACE,UAAU,EAAE,iBAAiB;QAC7B,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,YAAY,CAAC,qBAAqB;QAC/C,cAAc,EAAE,eAAe,CAAC,SAAS,EAAE,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW;KACtF,EACD,YAAY,CACb,CAAC;AACJ,CAAC,CAAC"}
|