@volcanicminds/typeorm 2.0.1 → 2.1.0
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/README.md +1 -0
- package/dist/index.d.ts +9 -8
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -147
- package/dist/index.js.map +1 -1
- package/dist/lib/entities/change.d.ts +1 -0
- package/dist/lib/entities/change.d.ts.map +1 -0
- package/dist/lib/entities/change.js +2 -6
- package/dist/lib/entities/change.js.map +1 -1
- package/dist/lib/entities/token.d.ts +1 -0
- package/dist/lib/entities/token.d.ts.map +1 -0
- package/dist/lib/entities/token.js +2 -6
- package/dist/lib/entities/token.js.map +1 -1
- package/dist/lib/entities/user.d.ts +1 -0
- package/dist/lib/entities/user.d.ts.map +1 -0
- package/dist/lib/entities/user.js +2 -6
- package/dist/lib/entities/user.js.map +1 -1
- package/dist/lib/loader/dataBaseManager.d.ts +1 -0
- package/dist/lib/loader/dataBaseManager.d.ts.map +1 -0
- package/dist/lib/loader/dataBaseManager.js +29 -83
- package/dist/lib/loader/dataBaseManager.js.map +1 -1
- package/dist/lib/loader/entities.d.ts +1 -0
- package/dist/lib/loader/entities.d.ts.map +1 -0
- package/dist/lib/loader/entities.js +10 -8
- package/dist/lib/loader/entities.js.map +1 -1
- package/dist/lib/loader/tokenManager.d.ts +1 -0
- package/dist/lib/loader/tokenManager.d.ts.map +1 -0
- package/dist/lib/loader/tokenManager.js +98 -136
- package/dist/lib/loader/tokenManager.js.map +1 -1
- package/dist/lib/loader/userManager.d.ts +1 -0
- package/dist/lib/loader/userManager.d.ts.map +1 -0
- package/dist/lib/loader/userManager.js +233 -321
- package/dist/lib/loader/userManager.js.map +1 -1
- package/dist/lib/query/builder.d.ts +1 -0
- package/dist/lib/query/builder.d.ts.map +1 -0
- package/dist/lib/query/builder.js +4 -8
- package/dist/lib/query/builder.js.map +1 -1
- package/dist/lib/query/parser.d.ts +1 -0
- package/dist/lib/query/parser.d.ts.map +1 -0
- package/dist/lib/query/parser.js +2 -7
- package/dist/lib/query/parser.js.map +1 -1
- package/dist/lib/query.d.ts +1 -0
- package/dist/lib/query.d.ts.map +1 -0
- package/dist/lib/query.js +78 -110
- package/dist/lib/query.js.map +1 -1
- package/dist/lib/util/logger.d.ts +1 -0
- package/dist/lib/util/logger.d.ts.map +1 -0
- package/dist/lib/util/logger.js +12 -26
- package/dist/lib/util/logger.js.map +1 -1
- package/dist/lib/util/yn.d.ts +1 -0
- package/dist/lib/util/yn.d.ts.map +1 -0
- package/dist/lib/util/yn.js +1 -3
- package/dist/lib/util/yn.js.map +1 -1
- package/lib/entities/change.ts +11 -0
- package/lib/entities/token.ts +17 -0
- package/lib/entities/user.ts +24 -0
- package/lib/loader/dataBaseManager.ts +37 -0
- package/lib/loader/entities.ts +35 -0
- package/lib/loader/tokenManager.ts +127 -0
- package/lib/loader/userManager.ts +303 -0
- package/lib/query/builder.ts +38 -0
- package/lib/query/parser.ts +29 -0
- package/lib/query.ts +244 -0
- package/lib/util/logger.ts +23 -0
- package/lib/util/yn.ts +19 -0
- package/package.json +18 -26
- package/esm/index.d.ts +0 -12
- package/esm/index.js +0 -140
- package/esm/index.js.map +0 -1
- package/esm/lib/entities/change.d.ts +0 -10
- package/esm/lib/entities/change.js +0 -8
- package/esm/lib/entities/change.js.map +0 -1
- package/esm/lib/entities/token.d.ts +0 -15
- package/esm/lib/entities/token.js +0 -8
- package/esm/lib/entities/token.js.map +0 -1
- package/esm/lib/entities/user.d.ts +0 -22
- package/esm/lib/entities/user.js +0 -8
- package/esm/lib/entities/user.js.map +0 -1
- package/esm/lib/loader/dataBaseManager.d.ts +0 -4
- package/esm/lib/loader/dataBaseManager.js +0 -76
- package/esm/lib/loader/dataBaseManager.js.map +0 -1
- package/esm/lib/loader/entities.d.ts +0 -5
- package/esm/lib/loader/entities.js +0 -28
- package/esm/lib/loader/entities.js.map +0 -1
- package/esm/lib/loader/tokenManager.d.ts +0 -21
- package/esm/lib/loader/tokenManager.js +0 -128
- package/esm/lib/loader/tokenManager.js.map +0 -1
- package/esm/lib/loader/userManager.d.ts +0 -32
- package/esm/lib/loader/userManager.js +0 -341
- package/esm/lib/loader/userManager.js.map +0 -1
- package/esm/lib/query/builder.d.ts +0 -1
- package/esm/lib/query/builder.js +0 -37
- package/esm/lib/query/builder.js.map +0 -1
- package/esm/lib/query/parser.d.ts +0 -1
- package/esm/lib/query/parser.js +0 -32
- package/esm/lib/query/parser.js.map +0 -1
- package/esm/lib/query.d.ts +0 -33
- package/esm/lib/query.js +0 -210
- package/esm/lib/query.js.map +0 -1
- package/esm/lib/util/logger.d.ts +0 -6
- package/esm/lib/util/logger.js +0 -33
- package/esm/lib/util/logger.js.map +0 -1
- package/esm/lib/util/yn.d.ts +0 -1
- package/esm/lib/util/yn.js +0 -17
- package/esm/lib/util/yn.js.map +0 -1
|
@@ -1,337 +1,255 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
exports.isImplemented = isImplemented;
|
|
46
|
-
exports.isValidUser = isValidUser;
|
|
47
|
-
exports.createUser = createUser;
|
|
48
|
-
exports.deleteUser = deleteUser;
|
|
49
|
-
exports.resetExternalId = resetExternalId;
|
|
50
|
-
exports.updateUserById = updateUserById;
|
|
51
|
-
exports.retrieveUserById = retrieveUserById;
|
|
52
|
-
exports.retrieveUserByEmail = retrieveUserByEmail;
|
|
53
|
-
exports.retrieveUserByUsername = retrieveUserByUsername;
|
|
54
|
-
exports.retrieveUserByConfirmationToken = retrieveUserByConfirmationToken;
|
|
55
|
-
exports.retrieveUserByResetPasswordToken = retrieveUserByResetPasswordToken;
|
|
56
|
-
exports.retrieveUserByExternalId = retrieveUserByExternalId;
|
|
57
|
-
exports.retrieveUserByPassword = retrieveUserByPassword;
|
|
58
|
-
exports.changePassword = changePassword;
|
|
59
|
-
exports.forgotPassword = forgotPassword;
|
|
60
|
-
exports.resetPassword = resetPassword;
|
|
61
|
-
exports.userConfirmation = userConfirmation;
|
|
62
|
-
exports.blockUserById = blockUserById;
|
|
63
|
-
exports.unblockUserById = unblockUserById;
|
|
64
|
-
exports.isPasswordToBeChanged = isPasswordToBeChanged;
|
|
65
|
-
exports.countQuery = countQuery;
|
|
66
|
-
exports.findQuery = findQuery;
|
|
67
|
-
exports.disableUserById = disableUserById;
|
|
68
|
-
const bcrypt = __importStar(require("bcrypt"));
|
|
69
|
-
const Crypto = require('crypto');
|
|
70
|
-
const query_1 = require("../query");
|
|
71
|
-
function isImplemented() {
|
|
1
|
+
import * as bcrypt from 'bcrypt';
|
|
2
|
+
import * as Crypto from 'crypto';
|
|
3
|
+
import { executeCountQuery, executeFindQuery } from '../query.js';
|
|
4
|
+
export function isImplemented() {
|
|
72
5
|
return true;
|
|
73
6
|
}
|
|
74
|
-
function isValidUser(data) {
|
|
75
|
-
return
|
|
76
|
-
return !!data && (!!data._id || !!data.id) && !!data.externalId && !!data.email && !!data.password;
|
|
77
|
-
});
|
|
7
|
+
export async function isValidUser(data) {
|
|
8
|
+
return !!data && (!!data._id || !!data.id) && !!data.externalId && !!data.email && !!data.password;
|
|
78
9
|
}
|
|
79
|
-
function createUser(data) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
10
|
+
export async function createUser(data) {
|
|
11
|
+
const { username, email, password } = data;
|
|
12
|
+
if (!email || !password) {
|
|
13
|
+
throw new Error('Email or password missing');
|
|
14
|
+
}
|
|
15
|
+
const salt = await bcrypt.genSalt(12);
|
|
16
|
+
const hashedPassword = await bcrypt.hash(password, salt);
|
|
17
|
+
try {
|
|
18
|
+
let externalId, user;
|
|
19
|
+
do {
|
|
20
|
+
externalId = Crypto.randomUUID({ disableEntropyCache: true });
|
|
21
|
+
user = await global.repository.users.findOneBy({ externalId: externalId });
|
|
22
|
+
} while (user != null);
|
|
23
|
+
user = await global.entity.User.create({
|
|
24
|
+
...data,
|
|
25
|
+
passwordChangedAt: new Date(),
|
|
26
|
+
confirmed: false,
|
|
27
|
+
confirmationToken: Crypto.randomBytes(64).toString('hex'),
|
|
28
|
+
blocked: false,
|
|
29
|
+
blockedReason: null,
|
|
30
|
+
externalId: externalId,
|
|
31
|
+
email: email,
|
|
32
|
+
username: username || email,
|
|
33
|
+
password: hashedPassword
|
|
34
|
+
});
|
|
35
|
+
return await global.entity.User.save(user);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
if (error?.code == 23505) {
|
|
39
|
+
throw new Error('Email or username already registered');
|
|
101
40
|
}
|
|
102
|
-
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
103
43
|
}
|
|
104
|
-
function deleteUser(id) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
throw new Error('User not found');
|
|
113
|
-
}
|
|
114
|
-
return global.entity.User.delete(id);
|
|
115
|
-
}
|
|
116
|
-
catch (error) {
|
|
117
|
-
throw error;
|
|
44
|
+
export async function deleteUser(id) {
|
|
45
|
+
if (!id) {
|
|
46
|
+
throw new Error('Invalid parameters');
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
const userEx = await retrieveUserById(id);
|
|
50
|
+
if (!userEx) {
|
|
51
|
+
throw new Error('User not found');
|
|
118
52
|
}
|
|
119
|
-
|
|
53
|
+
return global.entity.User.delete(id);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
120
58
|
}
|
|
121
|
-
function resetExternalId(id) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
throw new Error('External ID not changed');
|
|
137
|
-
}
|
|
138
|
-
throw error;
|
|
59
|
+
export async function resetExternalId(id) {
|
|
60
|
+
if (!id) {
|
|
61
|
+
throw new Error('Invalid parameters');
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
let externalId, user;
|
|
65
|
+
do {
|
|
66
|
+
externalId = Crypto.randomUUID({ disableEntropyCache: true });
|
|
67
|
+
user = await global.repository.users.findOneBy({ externalId: externalId });
|
|
68
|
+
} while (user != null);
|
|
69
|
+
return await updateUserById(id, { externalId: externalId });
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (error?.code == 23505) {
|
|
73
|
+
throw new Error('External ID not changed');
|
|
139
74
|
}
|
|
140
|
-
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
141
77
|
}
|
|
142
|
-
function updateUserById(id, user) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
throw new Error('User not found');
|
|
151
|
-
}
|
|
152
|
-
const merged = global.repository.users.merge(userEx, user);
|
|
153
|
-
return yield global.entity.User.save(merged);
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
throw error;
|
|
78
|
+
export async function updateUserById(id, user) {
|
|
79
|
+
if (!id || !user) {
|
|
80
|
+
throw new Error('Invalid parameters');
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
const userEx = await retrieveUserById(id);
|
|
84
|
+
if (!userEx) {
|
|
85
|
+
throw new Error('User not found');
|
|
157
86
|
}
|
|
158
|
-
|
|
87
|
+
const merged = global.repository.users.merge(userEx, user);
|
|
88
|
+
return await global.entity.User.save(merged);
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
159
93
|
}
|
|
160
|
-
function retrieveUserById(id) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
});
|
|
94
|
+
export async function retrieveUserById(id) {
|
|
95
|
+
if (!id) {
|
|
96
|
+
throw new Error('Invalid parameters');
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
return await global.repository.users.findOneById(id);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
172
104
|
}
|
|
173
|
-
function retrieveUserByEmail(email) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
}
|
|
184
|
-
});
|
|
105
|
+
export async function retrieveUserByEmail(email) {
|
|
106
|
+
if (!email) {
|
|
107
|
+
throw new Error('Invalid parameters');
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
return await global.repository.users.findOneBy({ email: email });
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
185
115
|
}
|
|
186
|
-
function retrieveUserByUsername(username) {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
});
|
|
116
|
+
export async function retrieveUserByUsername(username) {
|
|
117
|
+
if (!username) {
|
|
118
|
+
throw new Error('Invalid parameters');
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
return await global.repository.users.findOneBy({ username });
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
198
126
|
}
|
|
199
|
-
function retrieveUserByConfirmationToken(code) {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
210
|
-
});
|
|
127
|
+
export async function retrieveUserByConfirmationToken(code) {
|
|
128
|
+
if (!code) {
|
|
129
|
+
throw new Error('Invalid parameters');
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
return await global.repository.users.findOneBy({ confirmationToken: code });
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
211
137
|
}
|
|
212
|
-
function retrieveUserByResetPasswordToken(code) {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
});
|
|
138
|
+
export async function retrieveUserByResetPasswordToken(code) {
|
|
139
|
+
if (!code) {
|
|
140
|
+
throw new Error('Invalid parameters');
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
return await global.repository.users.findOneBy({ resetPasswordToken: code });
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
throw error;
|
|
147
|
+
}
|
|
224
148
|
}
|
|
225
|
-
function retrieveUserByExternalId(externalId) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
}
|
|
239
|
-
});
|
|
149
|
+
export async function retrieveUserByExternalId(externalId) {
|
|
150
|
+
if (!externalId) {
|
|
151
|
+
throw new Error('Invalid parameters');
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
return await global.repository.users.findOne({
|
|
155
|
+
where: { externalId: externalId },
|
|
156
|
+
cache: global.cacheTimeout
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
throw error;
|
|
161
|
+
}
|
|
240
162
|
}
|
|
241
|
-
function retrieveUserByPassword(email, password) {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
throw new Error('User not found');
|
|
250
|
-
}
|
|
251
|
-
const match = yield bcrypt.compare(password, user.password);
|
|
252
|
-
return match ? user : null;
|
|
253
|
-
}
|
|
254
|
-
catch (error) {
|
|
255
|
-
throw error;
|
|
163
|
+
export async function retrieveUserByPassword(email, password) {
|
|
164
|
+
if (!email || !password) {
|
|
165
|
+
throw new Error('Invalid parameters');
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
const user = await global.repository.users.findOneBy({ email: email });
|
|
169
|
+
if (!user) {
|
|
170
|
+
throw new Error('User not found');
|
|
256
171
|
}
|
|
257
|
-
|
|
172
|
+
const match = await bcrypt.compare(password, user.password);
|
|
173
|
+
return match ? user : null;
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
258
178
|
}
|
|
259
|
-
function changePassword(email, password, oldPassword) {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}
|
|
277
|
-
});
|
|
179
|
+
export async function changePassword(email, password, oldPassword) {
|
|
180
|
+
if (!email || !password || !oldPassword) {
|
|
181
|
+
throw new Error('Invalid parameters');
|
|
182
|
+
}
|
|
183
|
+
try {
|
|
184
|
+
const user = await global.repository.users.findOneBy({ email: email });
|
|
185
|
+
const match = await bcrypt.compare(oldPassword, user.password);
|
|
186
|
+
if (match) {
|
|
187
|
+
const salt = await bcrypt.genSalt(12);
|
|
188
|
+
const hashedPassword = await bcrypt.hash(password, salt);
|
|
189
|
+
return await global.entity.User.save({ ...user, passwordChangedAt: new Date(), password: hashedPassword });
|
|
190
|
+
}
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
throw error;
|
|
195
|
+
}
|
|
278
196
|
}
|
|
279
|
-
function forgotPassword(email) {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
}
|
|
291
|
-
catch (error) {
|
|
292
|
-
throw error;
|
|
197
|
+
export async function forgotPassword(email) {
|
|
198
|
+
if (!email) {
|
|
199
|
+
throw new Error('Invalid parameters');
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
const user = await global.repository.users.findOneBy({ email: email });
|
|
203
|
+
if (user) {
|
|
204
|
+
return await global.entity.User.save({
|
|
205
|
+
...user,
|
|
206
|
+
resetPasswordToken: Crypto.randomBytes(64).toString('hex')
|
|
207
|
+
});
|
|
293
208
|
}
|
|
294
|
-
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
throw error;
|
|
213
|
+
}
|
|
295
214
|
}
|
|
296
|
-
function resetPassword(user, password) {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
215
|
+
export async function resetPassword(user, password) {
|
|
216
|
+
if (!user || !password) {
|
|
217
|
+
throw new Error('Invalid parameters');
|
|
218
|
+
}
|
|
219
|
+
try {
|
|
220
|
+
const salt = await bcrypt.genSalt(12);
|
|
221
|
+
const hashedPassword = await bcrypt.hash(password, salt);
|
|
222
|
+
return await global.entity.User.save({
|
|
223
|
+
...user,
|
|
224
|
+
passwordChangedAt: new Date(),
|
|
225
|
+
confirmed: true,
|
|
226
|
+
confirmedAt: new Date(),
|
|
227
|
+
resetPasswordToken: null,
|
|
228
|
+
password: hashedPassword
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
throw error;
|
|
233
|
+
}
|
|
310
234
|
}
|
|
311
|
-
function userConfirmation(user) {
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
}
|
|
322
|
-
});
|
|
235
|
+
export async function userConfirmation(user) {
|
|
236
|
+
if (!user) {
|
|
237
|
+
throw new Error('Invalid parameters');
|
|
238
|
+
}
|
|
239
|
+
try {
|
|
240
|
+
return await global.entity.User.save({ ...user, confirmed: true, confirmedAt: new Date(), confirmationToken: null });
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
throw error;
|
|
244
|
+
}
|
|
323
245
|
}
|
|
324
|
-
function blockUserById(id, reason) {
|
|
325
|
-
return
|
|
326
|
-
return updateUserById(id, { blocked: true, blockedAt: new Date(), blockedReason: reason });
|
|
327
|
-
});
|
|
246
|
+
export async function blockUserById(id, reason) {
|
|
247
|
+
return updateUserById(id, { blocked: true, blockedAt: new Date(), blockedReason: reason });
|
|
328
248
|
}
|
|
329
|
-
function unblockUserById(id) {
|
|
330
|
-
return
|
|
331
|
-
return updateUserById(id, { blocked: false, blockedAt: new Date(), blockedReason: null });
|
|
332
|
-
});
|
|
249
|
+
export async function unblockUserById(id) {
|
|
250
|
+
return updateUserById(id, { blocked: false, blockedAt: new Date(), blockedReason: null });
|
|
333
251
|
}
|
|
334
|
-
function isPasswordToBeChanged(user) {
|
|
252
|
+
export function isPasswordToBeChanged(user) {
|
|
335
253
|
if (process.env.PASSWORD_EXPIRATION_DAYS != null) {
|
|
336
254
|
let passwordExpirationDays = -1;
|
|
337
255
|
try {
|
|
@@ -352,20 +270,14 @@ function isPasswordToBeChanged(user) {
|
|
|
352
270
|
}
|
|
353
271
|
return false;
|
|
354
272
|
}
|
|
355
|
-
function countQuery(data) {
|
|
356
|
-
return
|
|
357
|
-
return yield (0, query_1.executeCountQuery)(global.repository.users, data);
|
|
358
|
-
});
|
|
273
|
+
export async function countQuery(data) {
|
|
274
|
+
return await executeCountQuery(global.repository.users, data);
|
|
359
275
|
}
|
|
360
|
-
function findQuery(data) {
|
|
361
|
-
return
|
|
362
|
-
return yield (0, query_1.executeFindQuery)(global.repository.users, {}, data);
|
|
363
|
-
});
|
|
276
|
+
export async function findQuery(data) {
|
|
277
|
+
return await executeFindQuery(global.repository.users, {}, data);
|
|
364
278
|
}
|
|
365
|
-
function disableUserById(id) {
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
return resetExternalId(id);
|
|
369
|
-
});
|
|
279
|
+
export async function disableUserById(id) {
|
|
280
|
+
await updateUserById(id, { blocked: true, blockedAt: new Date(), blockedReason: 'User disabled to unregister' });
|
|
281
|
+
return resetExternalId(id);
|
|
370
282
|
}
|
|
371
283
|
//# sourceMappingURL=userManager.js.map
|