@volcanicminds/backend 2.2.21 → 2.3.2
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 +19 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -169
- package/dist/index.js.map +1 -1
- package/dist/lib/api/auth/controller/auth.d.ts +0 -9
- package/dist/lib/api/auth/controller/auth.d.ts.map +1 -1
- package/dist/lib/api/auth/controller/auth.js +32 -75
- package/dist/lib/api/auth/controller/auth.js.map +1 -1
- package/dist/lib/api/auth/routes.d.ts +0 -45
- package/dist/lib/api/auth/routes.d.ts.map +1 -1
- package/dist/lib/api/auth/routes.js +1 -32
- package/dist/lib/api/auth/routes.js.map +1 -1
- package/dist/lib/api/tool/controller/tool.d.ts.map +1 -1
- package/dist/lib/api/tool/controller/tool.js +4 -0
- package/dist/lib/api/tool/controller/tool.js.map +1 -1
- package/dist/lib/api/users/controller/user.d.ts +10 -1
- package/dist/lib/api/users/controller/user.d.ts.map +1 -1
- package/dist/lib/api/users/controller/user.js +56 -2
- package/dist/lib/api/users/controller/user.js.map +1 -1
- package/dist/lib/api/users/routes.d.ts +67 -0
- package/dist/lib/api/users/routes.d.ts.map +1 -1
- package/dist/lib/api/users/routes.js +55 -2
- package/dist/lib/api/users/routes.js.map +1 -1
- package/dist/lib/config/general.d.ts +7 -0
- package/dist/lib/config/general.d.ts.map +1 -1
- package/dist/lib/config/general.js +8 -1
- package/dist/lib/config/general.js.map +1 -1
- package/dist/lib/defaults/managers.d.ts +8 -0
- package/dist/lib/defaults/managers.d.ts.map +1 -0
- package/dist/lib/defaults/managers.js +71 -0
- package/dist/lib/defaults/managers.js.map +1 -0
- package/dist/lib/hooks/onRequest.d.ts.map +1 -1
- package/dist/lib/hooks/onRequest.js +54 -2
- package/dist/lib/hooks/onRequest.js.map +1 -1
- package/dist/lib/hooks/onResponse.d.ts.map +1 -1
- package/dist/lib/hooks/onResponse.js +5 -0
- package/dist/lib/hooks/onResponse.js.map +1 -1
- package/dist/lib/loader/general.d.ts.map +1 -1
- package/dist/lib/loader/general.js +6 -1
- package/dist/lib/loader/general.js.map +1 -1
- package/dist/lib/loader/tenant.d.ts +3 -0
- package/dist/lib/loader/tenant.d.ts.map +1 -0
- package/dist/lib/loader/tenant.js +67 -0
- package/dist/lib/loader/tenant.js.map +1 -0
- package/lib/api/auth/controller/auth.ts +35 -81
- package/lib/api/auth/routes.ts +4 -33
- package/lib/api/tool/controller/tool.ts +5 -0
- package/lib/api/users/controller/user.ts +69 -2
- package/lib/api/users/routes.ts +58 -2
- package/lib/config/general.ts +8 -1
- package/lib/defaults/managers.ts +88 -0
- package/lib/hooks/onRequest.ts +72 -7
- package/lib/hooks/onResponse.ts +6 -0
- package/lib/loader/general.ts +6 -1
- package/lib/loader/tenant.ts +86 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -423,6 +423,25 @@ import multipart from '@fastify/multipart'
|
|
|
423
423
|
import rawBody from 'fastify-raw-body'
|
|
424
424
|
```
|
|
425
425
|
|
|
426
|
+
## Database Context (`req.db`)
|
|
427
|
+
|
|
428
|
+
One of the most important features of Volcanic Backend is the **Universal Database Context**.
|
|
429
|
+
Every request object (`req`) is guaranteed to have a `req.db` property populated with a valid TypeORM `EntityManager`.
|
|
430
|
+
|
|
431
|
+
- **Single-Tenant**: `req.db` points to the global default connection.
|
|
432
|
+
- **Multi-Tenant**: `req.db` points to an isolated `QueryRunner` for that specific tenant/request.
|
|
433
|
+
|
|
434
|
+
This allows you to write code that works **Out-Of-The-Box** for both single-tenant and multi-tenant applications without changing a single line of business logic.
|
|
435
|
+
|
|
436
|
+
**Usage:**
|
|
437
|
+
|
|
438
|
+
```typescript
|
|
439
|
+
// In your controller
|
|
440
|
+
const { headers, records } = await myService.use(req.db).findAll(...)
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
---
|
|
444
|
+
|
|
426
445
|
## Core Concepts: Routes and Controllers
|
|
427
446
|
|
|
428
447
|
The routing system is one of the core strengths of the framework. It's file-system based, meaning the framework automatically discovers and registers any `routes.ts` file within the `src/api/` directory.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAGjC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAGjC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAYtD,OAAO,OAA4B,MAAM,SAAS,CAAA;AAiJlD,QAAA,MAAM,KAAK,GAAU,eAAe,6NAyNnC,CAAA;AAED,YAAY,EACV,MAAM,EACN,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,7 @@ import * as loaderTracking from './lib/loader/tracking.js';
|
|
|
15
15
|
import * as loaderTranslation from './lib/loader/translation.js';
|
|
16
16
|
import * as loaderConfig from './lib/loader/general.js';
|
|
17
17
|
import * as loaderSchedules from './lib/loader/schedules.js';
|
|
18
|
+
import * as loaderTenant from './lib/loader/tenant.js';
|
|
18
19
|
import fastify from 'fastify';
|
|
19
20
|
import jwtValidator from '@fastify/jwt';
|
|
20
21
|
import swagger from '@fastify/swagger';
|
|
@@ -34,6 +35,7 @@ import resolvers from './lib/apollo/resolvers.js';
|
|
|
34
35
|
import typeDefs from './lib/apollo/type-defs.js';
|
|
35
36
|
import require from './lib/util/require.js';
|
|
36
37
|
import general from './lib/config/general.js';
|
|
38
|
+
import { defaultUserManager, defaultTokenManager, defaultDataBaseManager, defaultMfaManager, defaultTransferManager, defaultTenantManager } from './lib/defaults/managers.js';
|
|
37
39
|
global.log = logger;
|
|
38
40
|
async function attachApollo(server) {
|
|
39
41
|
log.info('Attach ApolloServer to Fastify');
|
|
@@ -199,179 +201,17 @@ const start = async (decorators = {}) => {
|
|
|
199
201
|
const apollo = loadApollo ? await attachApollo(server) : null;
|
|
200
202
|
await addFastifySwagger(server);
|
|
201
203
|
await addApolloRouting(server, apollo);
|
|
204
|
+
await loaderTenant.apply(server);
|
|
202
205
|
await addFastifyRouting(server);
|
|
203
206
|
await addFastifySchedule(server);
|
|
204
207
|
const schedules = loaderSchedules.load();
|
|
205
208
|
decorators = {
|
|
206
|
-
userManager:
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
},
|
|
213
|
-
createUser(_data) {
|
|
214
|
-
throw new Error('Not implemented.');
|
|
215
|
-
},
|
|
216
|
-
deleteUser(_data) {
|
|
217
|
-
throw new Error('Not implemented.');
|
|
218
|
-
},
|
|
219
|
-
resetExternalId(_data) {
|
|
220
|
-
throw new Error('Not implemented.');
|
|
221
|
-
},
|
|
222
|
-
updateUserById(_id, _user) {
|
|
223
|
-
throw new Error('Not implemented.');
|
|
224
|
-
},
|
|
225
|
-
retrieveUserById(_id) {
|
|
226
|
-
throw new Error('Not implemented.');
|
|
227
|
-
},
|
|
228
|
-
retrieveUserByEmail(_email) {
|
|
229
|
-
throw new Error('Not implemented.');
|
|
230
|
-
},
|
|
231
|
-
retrieveUserByConfirmationToken(_code) {
|
|
232
|
-
throw new Error('Not implemented.');
|
|
233
|
-
},
|
|
234
|
-
retrieveUserByResetPasswordToken(_code) {
|
|
235
|
-
throw new Error('Not implemented.');
|
|
236
|
-
},
|
|
237
|
-
retrieveUserByUsername(_username) {
|
|
238
|
-
throw new Error('Not implemented.');
|
|
239
|
-
},
|
|
240
|
-
retrieveUserByExternalId(_externalId) {
|
|
241
|
-
throw new Error('Not implemented.');
|
|
242
|
-
},
|
|
243
|
-
retrieveUserByPassword(_email, _password) {
|
|
244
|
-
throw new Error('Not implemented.');
|
|
245
|
-
},
|
|
246
|
-
changePassword(_email, _password, _oldPassword) {
|
|
247
|
-
throw new Error('Not implemented.');
|
|
248
|
-
},
|
|
249
|
-
forgotPassword(_email) {
|
|
250
|
-
throw new Error('Not implemented.');
|
|
251
|
-
},
|
|
252
|
-
userConfirmation(_user) {
|
|
253
|
-
throw new Error('Not implemented.');
|
|
254
|
-
},
|
|
255
|
-
resetPassword(_user, _password) {
|
|
256
|
-
throw new Error('Not implemented.');
|
|
257
|
-
},
|
|
258
|
-
blockUserById(_id, _reason) {
|
|
259
|
-
throw new Error('Not implemented.');
|
|
260
|
-
},
|
|
261
|
-
unblockUserById(_data) {
|
|
262
|
-
throw new Error('Not implemented.');
|
|
263
|
-
},
|
|
264
|
-
countQuery(_data) {
|
|
265
|
-
throw new Error('Not implemented.');
|
|
266
|
-
},
|
|
267
|
-
findQuery(_data) {
|
|
268
|
-
throw new Error('Not implemented.');
|
|
269
|
-
},
|
|
270
|
-
disableUserById(_id) {
|
|
271
|
-
throw new Error('Not implemented.');
|
|
272
|
-
},
|
|
273
|
-
saveMfaSecret(_userId, _secret) {
|
|
274
|
-
throw new Error('Not implemented.');
|
|
275
|
-
},
|
|
276
|
-
retrieveMfaSecret(_userId) {
|
|
277
|
-
throw new Error('Not implemented.');
|
|
278
|
-
},
|
|
279
|
-
enableMfa(_userId) {
|
|
280
|
-
throw new Error('Not implemented.');
|
|
281
|
-
},
|
|
282
|
-
disableMfa(_userId) {
|
|
283
|
-
throw new Error('Not implemented.');
|
|
284
|
-
},
|
|
285
|
-
forceDisableMfaForAdmin(_email) {
|
|
286
|
-
throw new Error('Not implemented.');
|
|
287
|
-
}
|
|
288
|
-
},
|
|
289
|
-
tokenManager: {
|
|
290
|
-
isImplemented() {
|
|
291
|
-
return false;
|
|
292
|
-
},
|
|
293
|
-
isValidToken(_data) {
|
|
294
|
-
throw new Error('Not implemented.');
|
|
295
|
-
},
|
|
296
|
-
createToken(_data) {
|
|
297
|
-
throw new Error('Not implemented.');
|
|
298
|
-
},
|
|
299
|
-
resetExternalId(_id) {
|
|
300
|
-
throw new Error('Not implemented.');
|
|
301
|
-
},
|
|
302
|
-
updateTokenById(_id, _token) {
|
|
303
|
-
throw new Error('Not implemented.');
|
|
304
|
-
},
|
|
305
|
-
retrieveTokenById(_id) {
|
|
306
|
-
throw new Error('Not implemented.');
|
|
307
|
-
},
|
|
308
|
-
retrieveTokenByExternalId(_id) {
|
|
309
|
-
throw new Error('Not implemented.');
|
|
310
|
-
},
|
|
311
|
-
blockTokenById(_id, _reason) {
|
|
312
|
-
throw new Error('Not implemented.');
|
|
313
|
-
},
|
|
314
|
-
unblockTokenById(_id) {
|
|
315
|
-
throw new Error('Not implemented.');
|
|
316
|
-
},
|
|
317
|
-
countQuery(_data) {
|
|
318
|
-
throw new Error('Not implemented.');
|
|
319
|
-
},
|
|
320
|
-
findQuery(_data) {
|
|
321
|
-
throw new Error('Not implemented.');
|
|
322
|
-
},
|
|
323
|
-
removeTokenById(_id) {
|
|
324
|
-
throw new Error('Not implemented.');
|
|
325
|
-
}
|
|
326
|
-
},
|
|
327
|
-
dataBaseManager: {
|
|
328
|
-
isImplemented() {
|
|
329
|
-
return false;
|
|
330
|
-
},
|
|
331
|
-
synchronizeSchemas() {
|
|
332
|
-
throw new Error('Not implemented.');
|
|
333
|
-
},
|
|
334
|
-
retrieveBy(_entityName, _entityId) {
|
|
335
|
-
throw new Error('Not implemented.');
|
|
336
|
-
},
|
|
337
|
-
addChange(_entityName, _entityId, _status, _userId, _contents, _changeEntity) {
|
|
338
|
-
throw new Error('Not implemented.');
|
|
339
|
-
}
|
|
340
|
-
},
|
|
341
|
-
mfaManager: {
|
|
342
|
-
generateSetup(_appName, _email) {
|
|
343
|
-
throw new Error('Not implemented.');
|
|
344
|
-
},
|
|
345
|
-
verify(_token, _secret) {
|
|
346
|
-
throw new Error('Not implemented.');
|
|
347
|
-
}
|
|
348
|
-
},
|
|
349
|
-
transferManager: {
|
|
350
|
-
isImplemented() {
|
|
351
|
-
return false;
|
|
352
|
-
},
|
|
353
|
-
getPath() {
|
|
354
|
-
throw new Error('Not implemented.');
|
|
355
|
-
},
|
|
356
|
-
getServer() {
|
|
357
|
-
throw new Error('Not implemented.');
|
|
358
|
-
},
|
|
359
|
-
onUploadCreate(_callback) {
|
|
360
|
-
throw new Error('Not implemented.');
|
|
361
|
-
},
|
|
362
|
-
onUploadFinish(_callback) {
|
|
363
|
-
throw new Error('Not implemented.');
|
|
364
|
-
},
|
|
365
|
-
onUploadTerminate(_callback) {
|
|
366
|
-
throw new Error('Not implemented.');
|
|
367
|
-
},
|
|
368
|
-
handle(_req, _res) {
|
|
369
|
-
throw new Error('Not implemented.');
|
|
370
|
-
},
|
|
371
|
-
isValid(_req) {
|
|
372
|
-
throw new Error('Not implemented.');
|
|
373
|
-
}
|
|
374
|
-
},
|
|
209
|
+
userManager: defaultUserManager,
|
|
210
|
+
tokenManager: defaultTokenManager,
|
|
211
|
+
dataBaseManager: defaultDataBaseManager,
|
|
212
|
+
mfaManager: defaultMfaManager,
|
|
213
|
+
transferManager: defaultTransferManager,
|
|
214
|
+
tenantManager: defaultTenantManager,
|
|
375
215
|
...decorators
|
|
376
216
|
};
|
|
377
217
|
await Promise.all(Object.keys(decorators || {}).map(async (key) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,MAAM,CAAC,MAAM,EAAE,CAAA;AAEf,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,MAAM,MAAM,sBAAsB,CAAA;AACzC,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,iBAAiB,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAA;AAC5D,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAA;AAEtD,OAAO,OAA4B,MAAM,SAAS,CAAA;AAClD,OAAO,YAAY,MAAM,cAAc,CAAA;AACvC,OAAO,OAAO,MAAM,kBAAkB,CAAA;AACtC,OAAO,SAAS,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,IAAI,MAAM,eAAe,CAAA;AAChC,OAAO,MAAM,MAAM,iBAAiB,CAAA;AACpC,OAAO,QAAQ,MAAM,mBAAmB,CAAA;AACxC,OAAO,SAAS,MAAM,qBAAqB,CAAA;AAC3C,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAC1C,OAAO,OAAO,MAAM,kBAAkB,CAAA;AACtC,OAAO,MAAM,MAAM,iBAAiB,CAAA;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,aAAa,EAAE,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAClF,OAAO,EAAE,iBAAiB,EAAa,MAAM,yBAAyB,CAAA;AACtE,OAAO,SAAS,MAAM,2BAA2B,CAAA;AACjD,OAAO,QAAQ,MAAM,2BAA2B,CAAA;AAChD,OAAO,OAAO,MAAM,uBAAuB,CAAA;AAK3C,OAAO,OAAO,MAAM,yBAAyB,CAAA;AAC7C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,4BAA4B,CAAA;AAEnC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAA;AAEnB,KAAK,UAAU,YAAY,CAAC,MAAuB;IACjD,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAY;QACzC,QAAQ;QACR,SAAS;QACT,OAAO,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;KAC5C,CAAC,CAAA;IAEF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;IAEpB,OAAO,MAAM,CAAA;AACf,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,MAAuB,EAAE,MAAsC;IAC7F,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAC/B,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YAC3C,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,MAAuB;IACtD,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAE9B,MAAM,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC/B,MAAM,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACjC,MAAM,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;AAClC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,MAAuB;IACtD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;IAEtH,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACtC,IAAI,WAAW,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE/B,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACxB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAA;QAE7D,IAAI,OAAO,GAAG,EAAE,CAAA;QAChB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC7D,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,IAAI,GAAG,CAAC,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,4BAA4B,GAAG,QAAQ,CAAC,CAAA;QAC9D,CAAC;QAED,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;YAC7B,OAAO,EAAE;gBACP,IAAI,EAAE;oBACJ,KAAK,EAAE,aAAa,IAAI,4BAA4B;oBACpD,WAAW,EAAE,mBAAmB,IAAI,2CAA2C;oBAC/E,OAAO,EAAE,eAAe,IAAI,OAAO;iBACpC;gBACD,IAAI,EAAE,YAAY,IAAI,gBAAgB;gBACtC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;gBAC1B,QAAQ,EAAE,CAAC,kBAAkB,CAAC;gBAC9B,QAAQ,EAAE,CAAC,kBAAkB,CAAC;aAC/B;YACD,OAAO,EAAE;gBACP,IAAI,EAAE;oBACJ,KAAK,EAAE,aAAa,IAAI,4BAA4B;oBACpD,WAAW,EAAE,mBAAmB,IAAI,2CAA2C;oBAC/E,OAAO,EAAE,eAAe,IAAI,OAAO;iBACpC;gBACD,OAAO,EAAE;oBACP;wBACE,GAAG,EAAE,YAAY,IAAI,uBAAuB;qBAC7C;iBACF;gBACD,UAAU,EAAE;oBACV,eAAe,EAAE;wBACf,MAAM,EAAE;4BACN,IAAI,EAAE,MAAM;4BACZ,MAAM,EAAE,QAAQ;yBACjB;qBACF;iBACF;aACF;SACF,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC/B,WAAW,EAAE,kBAAkB,IAAI,WAAW;YAC9C,QAAQ,EAAE;gBACR,YAAY,EAAE,MAAM;gBACpB,WAAW,EAAE,IAAI;gBACjB,wBAAwB,EAAE,CAAC;aAC5B;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;aACxC;YACD,KAAK,EAAE;gBACL,KAAK,EAAE,aAAa;aACrB;SACF,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,MAAuB;IACvD,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAA;IAC1D,IAAI,SAAS,EAAE,CAAC;QACd,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAEjC,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;IACxC,CAAC;AACH,CAAC;AAED,MAAM,KAAK,GAAG,KAAK,EAAE,UAAU,GAAG,EAAE,EAAE,EAAE;IACtC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAElB,MAAM,CAAC,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAA;IACzC,MAAM,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAA;IACnC,MAAM,CAAC,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAA;IAEvC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAA;IAChE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,MAAM,CAAC,cAAc,GAAG,cAAc,CAAA;IAGtC,MAAM,MAAM,GAAoB,OAAO,EAAE,CAAA;IACzC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;IAEtB,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;IAC5E,MAAM,EACJ,UAAU,GAAG,EAAE,EACf,cAAc,GAAG,KAAK,EACtB,WAAW,GAAG,MAAM,EACpB,kBAAkB,GAAG,EAAE,EACvB,sBAAsB,GAAG,MAAM,EAChC,GAAG,OAAO,CAAC,GAAG,CAAA;IAEf,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC5C,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAA;IAE1C,IAAI,OAAO,EAAE,OAAO;QAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;IAC3E,IAAI,OAAO,EAAE,MAAM;QAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IACxE,IAAI,CAAC,UAAU,IAAI,OAAO,EAAE,MAAM;QAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IAEvF,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;QACvB,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;QACzD,MAAM,CAAC,kBAAkB,CACvB;YACE,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC;gBAC3B,GAAG,EAAE,EAAE;gBACP,UAAU,EAAE,KAAK;aAClB,CAAC;SACH,EACD,UAAU,IAAI,EAAE,KAAK;YACnB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QACxB,CAAC,CACF,CAAA;IACH,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,UAAU,KAAK,EAAE,IAAI,EAAE,KAAK;QACjD,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,EAAE,CAAC;YAC9E,MAAM,GAAG,GAAG,KAKX,CAAA;YACD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,CAAA;YAChG,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,uBAAuB,CAAA;YACxE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;YAC7D,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,OAAO,EAAE,SAAS;QAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;IACjF,IAAI,OAAO,EAAE,IAAI;QAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAClE,IAAI,OAAO,EAAE,QAAQ;QAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAE9E,IAAI,GAAG,CAAC,CAAC;QAAE,GAAG,CAAC,KAAK,CAAC,wBAAwB,cAAc,EAAE,CAAC,CAAA;IAC9D,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE;QAClC,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE;KACpC,CAAC,CAAA;IAEF,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE;YAClC,SAAS,EAAE,cAAc;YACzB,MAAM,EAAE,kBAAkB,IAAI,UAAU;YACxC,IAAI,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;SAC5C,CAAC,CAAA;IACJ,CAAC;IAGD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC/B,MAAM,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,MAAM,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAChC,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC/B,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAEhC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,EAAE,CAAA;IAGxC,UAAU,GAAG;QACX,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,mBAAmB;QACjC,eAAe,EAAE,sBAAsB;QACvC,UAAU,EAAE,iBAAiB;QAC7B,eAAe,EAAE,sBAAsB;QACvC,aAAa,EAAE,oBAAoB;QACnC,GAAG,UAAU;KACd,CAAA;IAGD,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC9C,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IAC7C,CAAC,CAAC,CACH,CAAA;IAGD,IAAI,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAuB,CAAA;QAC1D,IAAI,YAAY,GAAkB,IAAI,CAAA;QACtC,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,YAAY,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;YAC7B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBAC1D,IAAI,GAAG,CAAC,CAAC;oBAAE,GAAG,CAAC,KAAK,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAA;YACtE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,CAAC,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;QAC1D,CAAC;QAED,MAAM,CAAC,YAAY,GAAG,YAAY,CAAA;QAElC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,IAAI,GAAG,CAAC,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,kCAAkC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAA;YAI5E,MAAM,MAAM,CAAC,QAAQ,CACnB,KAAK,EAAE,QAAQ,EAAE,EAAE;gBACjB,QAAQ,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;oBAC1D,IAAI,CAAC,IAAI,CAAC,CAAA;gBACZ,CAAC,CAAC,CAAA;gBAEF,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;oBACrC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;oBAEnC,KAAK,CAAC,MAAM,EAAE,CAAA;gBAChB,CAAC,CAAC,CAAA;YACJ,CAAC,EACD,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,CAChC,CAAA;QACH,CAAC;IACH,CAAC;IAID,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAA;IAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAA;IAE3D,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,KAAK,EAAE,CAAA;QACnB,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;QAEnC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YAEjD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,GAAG,CAAC,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;YAC3E,CAAC;iBAAM,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC;gBAC5B,IAAI,GAAG,CAAC,CAAC;oBACP,GAAG,CAAC,KAAK,CACP,oGAAoG,CACrG,CAAA;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,CAAC,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,gDAAgD,UAAU,EAAE,CAAC,CAAA;gBACjF,IAAI,CAAC;oBACH,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC;wBACnE,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAA;wBAC/D,IAAI,GAAG,CAAC,CAAC;4BAAE,GAAG,CAAC,IAAI,CAAC,qCAAqC,UAAU,EAAE,CAAC,CAAA;oBACxE,CAAC;yBAAM,CAAC;wBACN,IAAI,GAAG,CAAC,CAAC;4BAAE,GAAG,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAA;oBAC7F,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;oBAC1D,IAAI,GAAG,CAAC,CAAC;wBAAE,GAAG,CAAC,KAAK,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAA;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAGD,MAAM,MAAM;SACT,MAAM,CAAC;QACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,IAAI;KACX,CAAC;SACD,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAChB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAA;YACpD,GAAG,CAAC,IAAI,CAAC,0BAA0B,OAAO,GAAG,CAAC,CAAA;QAChD,CAAC;QAED,IAAI,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,+BAA+B,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;QACvE,CAAC;aAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,0BAA0B,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;QAClE,CAAC;QAED,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;YACV,GAAG,CAAC,IAAI,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAA;YAEtC,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAClD,IAAI,WAAW,EAAE,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC,0BAA0B,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,WAAW,EAAE,CAAC,CAAA;YAC/F,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,MAAM,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC9C,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAuBD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -29,12 +29,6 @@ export declare function refreshToken(req: FastifyRequest, reply: FastifyReply):
|
|
|
29
29
|
export declare function invalidateTokens(req: FastifyRequest, reply: FastifyReply): Promise<{
|
|
30
30
|
ok: any;
|
|
31
31
|
}>;
|
|
32
|
-
export declare function block(req: FastifyRequest, reply: FastifyReply): Promise<{
|
|
33
|
-
ok: boolean;
|
|
34
|
-
}>;
|
|
35
|
-
export declare function unblock(req: FastifyRequest, reply: FastifyReply): Promise<{
|
|
36
|
-
ok: boolean;
|
|
37
|
-
}>;
|
|
38
32
|
export declare function mfaSetup(req: FastifyRequest, reply: FastifyReply): Promise<any>;
|
|
39
33
|
export declare function mfaEnable(req: FastifyRequest, reply: FastifyReply): Promise<{
|
|
40
34
|
mfaEnabled: boolean;
|
|
@@ -53,7 +47,4 @@ export declare function mfaVerify(req: FastifyRequest, reply: FastifyReply): Pro
|
|
|
53
47
|
export declare function mfaDisable(req: FastifyRequest, reply: FastifyReply): Promise<{
|
|
54
48
|
ok: boolean;
|
|
55
49
|
}>;
|
|
56
|
-
export declare function resetMfa(req: FastifyRequest, reply: FastifyReply): Promise<{
|
|
57
|
-
ok: boolean;
|
|
58
|
-
}>;
|
|
59
50
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../../lib/api/auth/controller/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAItD,wBAAsB,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,gBA6CtE;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAsBxE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAa9E;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAsC5E;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAgC5E;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAsB1E;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;;GA6B3E;AAED,wBAAsB,KAAK,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../../lib/api/auth/controller/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAItD,wBAAsB,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,gBA6CtE;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAsBxE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAa9E;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAsC5E;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAgC5E;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAsB1E;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;;GA6B3E;AAED,wBAAsB,KAAK,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,gBAmGnE;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAKrE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GA8B1E;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAS9E;AAID,wBAAsB,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,gBAatE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;;;;;;;;;;;GAyCvE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,gBAmDvE;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAgBxE"}
|
|
@@ -17,12 +17,12 @@ export async function register(req, reply) {
|
|
|
17
17
|
if (!password2 || password2 !== password) {
|
|
18
18
|
return reply.status(400).send(new Error('Repeated password not match'));
|
|
19
19
|
}
|
|
20
|
-
let existings = await req.server['userManager'].retrieveUserByEmail(data.email);
|
|
20
|
+
let existings = await req.server['userManager'].retrieveUserByEmail(data.email, req.runner);
|
|
21
21
|
if (existings) {
|
|
22
22
|
return reply.status(400).send(new Error('Email already registered'));
|
|
23
23
|
}
|
|
24
24
|
if ((data.requiredRoles || []).includes('admin')) {
|
|
25
|
-
existings = await req.server['userManager'].findQuery({ 'roles:in': 'admin' });
|
|
25
|
+
existings = await req.server['userManager'].findQuery({ 'roles:in': 'admin' }, req.runner);
|
|
26
26
|
if (existings?.records?.length) {
|
|
27
27
|
return reply.status(400).send(new Error('User admin already registered'));
|
|
28
28
|
}
|
|
@@ -32,7 +32,7 @@ export async function register(req, reply) {
|
|
|
32
32
|
if (!data.roles.includes(publicRole)) {
|
|
33
33
|
data.roles.push(publicRole);
|
|
34
34
|
}
|
|
35
|
-
const user = await req.server['userManager'].createUser({ ...data, password: password });
|
|
35
|
+
const user = await req.server['userManager'].createUser({ ...data, password: password }, req.runner);
|
|
36
36
|
if (!user) {
|
|
37
37
|
return reply.status(400).send(new Error('User not registered'));
|
|
38
38
|
}
|
|
@@ -40,7 +40,7 @@ export async function register(req, reply) {
|
|
|
40
40
|
}
|
|
41
41
|
export async function unregister(req, reply) {
|
|
42
42
|
const { email, password } = req.data();
|
|
43
|
-
let user = await req.server['userManager'].retrieveUserByPassword(email, password);
|
|
43
|
+
let user = await req.server['userManager'].retrieveUserByPassword(email, password, req.runner);
|
|
44
44
|
let isValid = await req.server['userManager'].isValidUser(user);
|
|
45
45
|
if (!isValid) {
|
|
46
46
|
return reply.status(403).send(new Error('Wrong credentials'));
|
|
@@ -48,7 +48,7 @@ export async function unregister(req, reply) {
|
|
|
48
48
|
if (user.blocked) {
|
|
49
49
|
return reply.status(403).send(new Error('User blocked'));
|
|
50
50
|
}
|
|
51
|
-
user = await req.server['userManager'].disableUserById(user.getId());
|
|
51
|
+
user = await req.server['userManager'].disableUserById(user.getId(), req.runner);
|
|
52
52
|
isValid = await req.server['userManager'].isValidUser(user);
|
|
53
53
|
if (!isValid) {
|
|
54
54
|
return reply.status(400).send(new Error('User not valid'));
|
|
@@ -84,7 +84,7 @@ export async function changePassword(req, reply) {
|
|
|
84
84
|
if (!newPassword2 || newPassword2 !== newPassword1) {
|
|
85
85
|
return reply.status(400).send(new Error('Repeated new password not match'));
|
|
86
86
|
}
|
|
87
|
-
let user = await req.server['userManager'].retrieveUserByPassword(email, oldPassword);
|
|
87
|
+
let user = await req.server['userManager'].retrieveUserByPassword(email, oldPassword, req.runner);
|
|
88
88
|
let isValid = await req.server['userManager'].isValidUser(user);
|
|
89
89
|
if (!isValid) {
|
|
90
90
|
return reply.status(403).send(new Error('Wrong credentials'));
|
|
@@ -92,7 +92,7 @@ export async function changePassword(req, reply) {
|
|
|
92
92
|
if (user.blocked) {
|
|
93
93
|
return reply.status(403).send(new Error('User blocked'));
|
|
94
94
|
}
|
|
95
|
-
user = await req.server['userManager'].changePassword(email, newPassword1, oldPassword);
|
|
95
|
+
user = await req.server['userManager'].changePassword(email, newPassword1, oldPassword, req.runner);
|
|
96
96
|
isValid = await req.server['userManager'].isValidUser(user);
|
|
97
97
|
return { ok: isValid };
|
|
98
98
|
}
|
|
@@ -106,10 +106,10 @@ export async function forgotPassword(req, reply) {
|
|
|
106
106
|
}
|
|
107
107
|
let user = null;
|
|
108
108
|
if (email) {
|
|
109
|
-
user = await req.server['userManager'].retrieveUserByEmail(email);
|
|
109
|
+
user = await req.server['userManager'].retrieveUserByEmail(email, req.runner);
|
|
110
110
|
}
|
|
111
111
|
else if (username) {
|
|
112
|
-
user = await req.server['userManager'].retrieveUserByUsername(username);
|
|
112
|
+
user = await req.server['userManager'].retrieveUserByUsername(username, req.runner);
|
|
113
113
|
}
|
|
114
114
|
let isValid = await req.server['userManager'].isValidUser(user);
|
|
115
115
|
if (!isValid) {
|
|
@@ -118,7 +118,7 @@ export async function forgotPassword(req, reply) {
|
|
|
118
118
|
if (user?.blocked) {
|
|
119
119
|
return reply.status(403).send(new Error('User blocked'));
|
|
120
120
|
}
|
|
121
|
-
user = await req.server['userManager'].forgotPassword(user.email);
|
|
121
|
+
user = await req.server['userManager'].forgotPassword(user.email, req.runner);
|
|
122
122
|
isValid = await req.server['userManager'].isValidUser(user);
|
|
123
123
|
return { ok: isValid };
|
|
124
124
|
}
|
|
@@ -127,7 +127,7 @@ export async function confirmEmail(req, reply) {
|
|
|
127
127
|
if (!code) {
|
|
128
128
|
return reply.status(400).send(new Error('Missing the confirm email token'));
|
|
129
129
|
}
|
|
130
|
-
let user = await req.server['userManager'].retrieveUserByConfirmationToken(code);
|
|
130
|
+
let user = await req.server['userManager'].retrieveUserByConfirmationToken(code, req.runner);
|
|
131
131
|
let isValid = await req.server['userManager'].isValidUser(user);
|
|
132
132
|
if (!isValid) {
|
|
133
133
|
return reply.status(403).send(new Error('Wrong credentials'));
|
|
@@ -135,7 +135,7 @@ export async function confirmEmail(req, reply) {
|
|
|
135
135
|
if (user.blocked) {
|
|
136
136
|
return reply.status(403).send(new Error('User blocked'));
|
|
137
137
|
}
|
|
138
|
-
user = await req.server['userManager'].userConfirmation(user);
|
|
138
|
+
user = await req.server['userManager'].userConfirmation(user, req.runner);
|
|
139
139
|
isValid = await req.server['userManager'].isValidUser(user);
|
|
140
140
|
return { ok: isValid };
|
|
141
141
|
}
|
|
@@ -150,7 +150,7 @@ export async function resetPassword(req, reply) {
|
|
|
150
150
|
if (!newPassword2 || newPassword2 !== newPassword1) {
|
|
151
151
|
return reply.status(400).send(new Error('Repeated new password not match'));
|
|
152
152
|
}
|
|
153
|
-
let user = await req.server['userManager'].retrieveUserByResetPasswordToken(code);
|
|
153
|
+
let user = await req.server['userManager'].retrieveUserByResetPasswordToken(code, req.runner);
|
|
154
154
|
let isValid = await req.server['userManager'].isValidUser(user);
|
|
155
155
|
if (!isValid) {
|
|
156
156
|
return reply.status(403).send(new Error('Wrong credentials'));
|
|
@@ -158,7 +158,7 @@ export async function resetPassword(req, reply) {
|
|
|
158
158
|
if (user.blocked) {
|
|
159
159
|
return reply.status(403).send(new Error('User blocked'));
|
|
160
160
|
}
|
|
161
|
-
user = await req.server['userManager'].resetPassword(user, newPassword1);
|
|
161
|
+
user = await req.server['userManager'].resetPassword(user, newPassword1, req.runner);
|
|
162
162
|
isValid = await req.server['userManager'].isValidUser(user);
|
|
163
163
|
return { ok: isValid, user };
|
|
164
164
|
}
|
|
@@ -174,7 +174,7 @@ export async function login(req, reply) {
|
|
|
174
174
|
if (!password || !regExp.password.test(password)) {
|
|
175
175
|
return reply.status(400).send(new Error('Password not valid'));
|
|
176
176
|
}
|
|
177
|
-
let user = await req.server['userManager'].retrieveUserByPassword(email, password);
|
|
177
|
+
let user = await req.server['userManager'].retrieveUserByPassword(email, password, req.runner);
|
|
178
178
|
if (!user) {
|
|
179
179
|
return reply.status(403).send(new Error('Wrong credentials'));
|
|
180
180
|
}
|
|
@@ -195,7 +195,7 @@ export async function login(req, reply) {
|
|
|
195
195
|
const isMfaEnabled = user.mfaEnabled;
|
|
196
196
|
const isMandatory = mfa_policy === MfaPolicy.MANDATORY;
|
|
197
197
|
if (isMfaEnabled || isMandatory) {
|
|
198
|
-
const tempToken = await reply.jwtSign({ sub: user.externalId, role: 'pre-auth-mfa' }, { expiresIn: '5m' });
|
|
198
|
+
const tempToken = await reply.jwtSign({ sub: user.externalId, role: 'pre-auth-mfa', tid: req.tenant?.id }, { expiresIn: '5m' });
|
|
199
199
|
return reply.status(202).send({
|
|
200
200
|
mfaRequired: isMfaEnabled,
|
|
201
201
|
mfaSetupRequired: isMandatory && !isMfaEnabled,
|
|
@@ -203,11 +203,11 @@ export async function login(req, reply) {
|
|
|
203
203
|
});
|
|
204
204
|
}
|
|
205
205
|
if (config.options.reset_external_id_on_login) {
|
|
206
|
-
user = await req.server['userManager'].resetExternalId(user.getId());
|
|
206
|
+
user = await req.server['userManager'].resetExternalId(user.getId(), req.runner);
|
|
207
207
|
}
|
|
208
|
-
const token = await reply.jwtSign({ sub: user.externalId });
|
|
208
|
+
const token = await reply.jwtSign({ sub: user.externalId, tid: req.tenant?.id });
|
|
209
209
|
const refreshToken = reply.server.jwt['refreshToken']
|
|
210
|
-
? await reply.server.jwt['refreshToken'].sign({ sub: user.externalId })
|
|
210
|
+
? await reply.server.jwt['refreshToken'].sign({ sub: user.externalId, tid: req.tenant?.id })
|
|
211
211
|
: undefined;
|
|
212
212
|
const AUTH_MODE = process.env.AUTH_MODE || 'BEARER';
|
|
213
213
|
if (AUTH_MODE === 'COOKIE') {
|
|
@@ -259,12 +259,12 @@ export async function refreshToken(req, reply) {
|
|
|
259
259
|
if (tokenData?.sub && tokenData?.sub !== refreshTokenData?.sub) {
|
|
260
260
|
return reply.status(403).send(new Error('Mismatched tokens'));
|
|
261
261
|
}
|
|
262
|
-
const user = await req.server['userManager'].retrieveUserByExternalId(tokenData.sub);
|
|
262
|
+
const user = await req.server['userManager'].retrieveUserByExternalId(tokenData.sub, req.runner);
|
|
263
263
|
const isValid = await req.server['userManager'].isValidUser(user);
|
|
264
264
|
if (!isValid) {
|
|
265
265
|
return reply.status(403).send(new Error('Wrong refresh token'));
|
|
266
266
|
}
|
|
267
|
-
const newToken = await reply.jwtSign({ sub: user.externalId });
|
|
267
|
+
const newToken = await reply.jwtSign({ sub: user.externalId, tid: req.tenant?.id });
|
|
268
268
|
return {
|
|
269
269
|
token: newToken
|
|
270
270
|
};
|
|
@@ -274,36 +274,10 @@ export async function invalidateTokens(req, reply) {
|
|
|
274
274
|
if (!req.user || !isValid) {
|
|
275
275
|
return reply.status(403).send(new Error('User not linked'));
|
|
276
276
|
}
|
|
277
|
-
const user = await req.server['userManager'].resetExternalId(req.user.getId());
|
|
277
|
+
const user = await req.server['userManager'].resetExternalId(req.user.getId(), req.runner);
|
|
278
278
|
isValid = await req.server['userManager'].isValidUser(user);
|
|
279
279
|
return { ok: isValid };
|
|
280
280
|
}
|
|
281
|
-
export async function block(req, reply) {
|
|
282
|
-
if (!req.server['userManager'].isImplemented()) {
|
|
283
|
-
throw new Error('Not implemented');
|
|
284
|
-
}
|
|
285
|
-
if (!req.hasRole(roles.admin) && !req.hasRole(roles.backoffice)) {
|
|
286
|
-
return reply.status(403).send({ statusCode: 403, code: 'ROLE_NOT_ALLOWED', message: 'Not allowed to block a user' });
|
|
287
|
-
}
|
|
288
|
-
const { id: userId } = req.parameters();
|
|
289
|
-
const { reason } = req.data();
|
|
290
|
-
let user = await req.server['userManager'].blockUserById(userId, reason);
|
|
291
|
-
user = await req.server['userManager'].resetExternalId(user.getId());
|
|
292
|
-
return { ok: !!user.getId() };
|
|
293
|
-
}
|
|
294
|
-
export async function unblock(req, reply) {
|
|
295
|
-
if (!req.server['userManager'].isImplemented()) {
|
|
296
|
-
throw new Error('Not implemented');
|
|
297
|
-
}
|
|
298
|
-
if (!req.hasRole(roles.admin) && !req.hasRole(roles.backoffice)) {
|
|
299
|
-
return reply
|
|
300
|
-
.status(403)
|
|
301
|
-
.send({ statusCode: 403, code: 'ROLE_NOT_ALLOWED', message: 'Not allowed to unblock a user' });
|
|
302
|
-
}
|
|
303
|
-
const { id: userId } = req.parameters();
|
|
304
|
-
const user = await req.server['userManager'].unblockUserById(userId);
|
|
305
|
-
return { ok: !!user.getId() };
|
|
306
|
-
}
|
|
307
281
|
export async function mfaSetup(req, reply) {
|
|
308
282
|
const user = req.user;
|
|
309
283
|
if (!user)
|
|
@@ -329,11 +303,11 @@ export async function mfaEnable(req, reply) {
|
|
|
329
303
|
if (!isValid) {
|
|
330
304
|
return reply.status(400).send(new Error('Invalid token'));
|
|
331
305
|
}
|
|
332
|
-
await req.server['userManager'].saveMfaSecret(user.getId(), secret);
|
|
333
|
-
await req.server['userManager'].enableMfa(user.getId());
|
|
334
|
-
const finalToken = await reply.jwtSign({ sub: user.externalId });
|
|
306
|
+
await req.server['userManager'].saveMfaSecret(user.getId(), secret, req.runner);
|
|
307
|
+
await req.server['userManager'].enableMfa(user.getId(), req.runner);
|
|
308
|
+
const finalToken = await reply.jwtSign({ sub: user.externalId, tid: req.tenant?.id });
|
|
335
309
|
const refreshToken = reply.server.jwt['refreshToken']
|
|
336
|
-
? await reply.server.jwt['refreshToken'].sign({ sub: user.externalId })
|
|
310
|
+
? await reply.server.jwt['refreshToken'].sign({ sub: user.externalId, tid: req.tenant?.id })
|
|
337
311
|
: undefined;
|
|
338
312
|
return {
|
|
339
313
|
...user,
|
|
@@ -371,21 +345,21 @@ export async function mfaVerify(req, reply) {
|
|
|
371
345
|
const { token } = req.data();
|
|
372
346
|
if (!token)
|
|
373
347
|
return reply.status(400).send(new Error('Missing token'));
|
|
374
|
-
const user = await req.server['userManager'].retrieveUserByExternalId(subjectId);
|
|
348
|
+
const user = await req.server['userManager'].retrieveUserByExternalId(subjectId, req.runner);
|
|
375
349
|
if (!user)
|
|
376
350
|
return reply.status(404).send(new Error('User not found'));
|
|
377
|
-
const secret = await req.server['userManager'].retrieveMfaSecret(user.getId());
|
|
351
|
+
const secret = await req.server['userManager'].retrieveMfaSecret(user.getId(), req.runner);
|
|
378
352
|
if (!secret)
|
|
379
353
|
return reply.status(403).send(new Error('MFA not configured for user'));
|
|
380
354
|
const isValid = req.server['mfaManager'].verify(token, secret);
|
|
381
355
|
if (!isValid)
|
|
382
356
|
return reply.status(403).send(new Error('Invalid MFA token'));
|
|
383
357
|
if (config.options.reset_external_id_on_login) {
|
|
384
|
-
await req.server['userManager'].resetExternalId(user.getId());
|
|
358
|
+
await req.server['userManager'].resetExternalId(user.getId(), req.runner);
|
|
385
359
|
}
|
|
386
|
-
const finalToken = await reply.jwtSign({ sub: user.externalId });
|
|
360
|
+
const finalToken = await reply.jwtSign({ sub: user.externalId, tid: req.tenant?.id });
|
|
387
361
|
const refreshToken = reply.server.jwt['refreshToken']
|
|
388
|
-
? await reply.server.jwt['refreshToken'].sign({ sub: user.externalId })
|
|
362
|
+
? await reply.server.jwt['refreshToken'].sign({ sub: user.externalId, tid: req.tenant?.id })
|
|
389
363
|
: undefined;
|
|
390
364
|
return {
|
|
391
365
|
...user,
|
|
@@ -406,7 +380,7 @@ export async function mfaDisable(req, reply) {
|
|
|
406
380
|
return reply.status(403).send(new Error('MFA disable is not allowed by security policy'));
|
|
407
381
|
}
|
|
408
382
|
try {
|
|
409
|
-
await req.server['userManager'].disableMfa(user.getId());
|
|
383
|
+
await req.server['userManager'].disableMfa(user.getId(), req.runner);
|
|
410
384
|
return { ok: true };
|
|
411
385
|
}
|
|
412
386
|
catch (error) {
|
|
@@ -414,21 +388,4 @@ export async function mfaDisable(req, reply) {
|
|
|
414
388
|
return reply.status(500).send(new Error('Failed to disable MFA'));
|
|
415
389
|
}
|
|
416
390
|
}
|
|
417
|
-
export async function resetMfa(req, reply) {
|
|
418
|
-
const { id } = req.parameters();
|
|
419
|
-
if (!req.hasRole(roles.admin)) {
|
|
420
|
-
return reply.status(403).send(new Error('Only admins can reset MFA'));
|
|
421
|
-
}
|
|
422
|
-
if (!id) {
|
|
423
|
-
return reply.status(400).send(new Error('Missing user id'));
|
|
424
|
-
}
|
|
425
|
-
try {
|
|
426
|
-
await req.server['userManager'].disableMfa(id);
|
|
427
|
-
return { ok: true };
|
|
428
|
-
}
|
|
429
|
-
catch (error) {
|
|
430
|
-
req.log.error({ err: error }, 'MFA Reset failed');
|
|
431
|
-
return reply.status(500).send(new Error('Failed to reset MFA'));
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
391
|
//# sourceMappingURL=auth.js.map
|