@volcanicminds/backend 3.0.0 → 3.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.
Files changed (102) hide show
  1. package/README.md +129 -28
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +13 -9
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/api/auth/controller/auth.d.ts +1 -1
  6. package/dist/lib/api/auth/controller/auth.d.ts.map +1 -1
  7. package/dist/lib/api/auth/controller/auth.js +90 -66
  8. package/dist/lib/api/auth/controller/auth.js.map +1 -1
  9. package/dist/lib/api/auth/routes.d.ts +29 -0
  10. package/dist/lib/api/auth/routes.d.ts.map +1 -1
  11. package/dist/lib/api/auth/routes.js +10 -0
  12. package/dist/lib/api/auth/routes.js.map +1 -1
  13. package/dist/lib/api/token/controller/token.js +17 -17
  14. package/dist/lib/api/token/controller/token.js.map +1 -1
  15. package/dist/lib/api/users/controller/user.d.ts.map +1 -1
  16. package/dist/lib/api/users/controller/user.js +25 -19
  17. package/dist/lib/api/users/controller/user.js.map +1 -1
  18. package/dist/lib/api/users/routes.d.ts.map +1 -1
  19. package/dist/lib/api/users/routes.js.map +1 -1
  20. package/dist/lib/config/plugins.d.ts +17 -0
  21. package/dist/lib/config/plugins.d.ts.map +1 -1
  22. package/dist/lib/config/plugins.js +2 -2
  23. package/dist/lib/config/plugins.js.map +1 -1
  24. package/dist/lib/database/typeorm/embedded.d.ts +12 -0
  25. package/dist/lib/database/typeorm/embedded.d.ts.map +1 -0
  26. package/dist/lib/database/typeorm/embedded.js +92 -0
  27. package/dist/lib/database/typeorm/embedded.js.map +1 -0
  28. package/dist/lib/database/typeorm/entities/user.d.ts +1 -0
  29. package/dist/lib/database/typeorm/entities/user.d.ts.map +1 -1
  30. package/dist/lib/database/typeorm/entities/user.js.map +1 -1
  31. package/dist/lib/database/typeorm/loader/tenantManager.d.ts.map +1 -1
  32. package/dist/lib/database/typeorm/loader/tenantManager.js +4 -1
  33. package/dist/lib/database/typeorm/loader/tenantManager.js.map +1 -1
  34. package/dist/lib/database/typeorm/loader/userManager.d.ts.map +1 -1
  35. package/dist/lib/database/typeorm/loader/userManager.js +2 -1
  36. package/dist/lib/database/typeorm/loader/userManager.js.map +1 -1
  37. package/dist/lib/database/typeorm/query/operators.d.ts +10 -0
  38. package/dist/lib/database/typeorm/query/operators.d.ts.map +1 -0
  39. package/dist/lib/database/typeorm/query/operators.js +122 -0
  40. package/dist/lib/database/typeorm/query/operators.js.map +1 -0
  41. package/dist/lib/database/typeorm/query.d.ts +2 -0
  42. package/dist/lib/database/typeorm/query.d.ts.map +1 -1
  43. package/dist/lib/database/typeorm/query.js +29 -62
  44. package/dist/lib/database/typeorm/query.js.map +1 -1
  45. package/dist/lib/database/typeorm/util/crypto.d.ts.map +1 -1
  46. package/dist/lib/database/typeorm/util/crypto.js +50 -26
  47. package/dist/lib/database/typeorm/util/crypto.js.map +1 -1
  48. package/dist/lib/hooks/onRequest.d.ts.map +1 -1
  49. package/dist/lib/hooks/onRequest.js +15 -29
  50. package/dist/lib/hooks/onRequest.js.map +1 -1
  51. package/dist/lib/loader/router.d.ts +2 -0
  52. package/dist/lib/loader/router.d.ts.map +1 -1
  53. package/dist/lib/loader/router.js +7 -3
  54. package/dist/lib/loader/router.js.map +1 -1
  55. package/dist/lib/loader/tracking.d.ts.map +1 -1
  56. package/dist/lib/loader/tracking.js +6 -1
  57. package/dist/lib/loader/tracking.js.map +1 -1
  58. package/dist/lib/middleware/isAdmin.d.ts.map +1 -1
  59. package/dist/lib/middleware/isAdmin.js +2 -1
  60. package/dist/lib/middleware/isAdmin.js.map +1 -1
  61. package/dist/lib/middleware/isAuthenticated.d.ts.map +1 -1
  62. package/dist/lib/middleware/isAuthenticated.js +2 -1
  63. package/dist/lib/middleware/isAuthenticated.js.map +1 -1
  64. package/dist/lib/schemas/user.d.ts +17 -0
  65. package/dist/lib/schemas/user.d.ts.map +1 -1
  66. package/dist/lib/schemas/user.js +8 -1
  67. package/dist/lib/schemas/user.js.map +1 -1
  68. package/dist/lib/util/errors.d.ts.map +1 -1
  69. package/dist/lib/util/errors.js +3 -2
  70. package/dist/lib/util/errors.js.map +1 -1
  71. package/dist/lib/util/httpError.d.ts +8 -0
  72. package/dist/lib/util/httpError.d.ts.map +1 -0
  73. package/dist/lib/util/httpError.js +19 -0
  74. package/dist/lib/util/httpError.js.map +1 -0
  75. package/dist/typeorm.d.ts +3 -2
  76. package/dist/typeorm.d.ts.map +1 -1
  77. package/dist/typeorm.js +14 -2
  78. package/dist/typeorm.js.map +1 -1
  79. package/dist/types/global.d.ts +4 -1
  80. package/lib/api/auth/controller/auth.ts +113 -67
  81. package/lib/api/auth/routes.ts +17 -0
  82. package/lib/api/token/controller/token.ts +17 -17
  83. package/lib/api/users/controller/user.ts +32 -19
  84. package/lib/api/users/routes.ts +3 -0
  85. package/lib/config/plugins.ts +5 -2
  86. package/lib/database/typeorm/embedded.ts +173 -0
  87. package/lib/database/typeorm/entities/user.ts +2 -0
  88. package/lib/database/typeorm/loader/tenantManager.ts +8 -1
  89. package/lib/database/typeorm/loader/userManager.ts +6 -1
  90. package/lib/database/typeorm/query/operators.ts +187 -0
  91. package/lib/database/typeorm/query.ts +48 -73
  92. package/lib/database/typeorm/util/crypto.ts +89 -27
  93. package/lib/defaults/managers.ts +1 -1
  94. package/lib/hooks/onRequest.ts +17 -29
  95. package/lib/loader/router.ts +13 -4
  96. package/lib/loader/tracking.ts +10 -1
  97. package/lib/middleware/isAdmin.ts +3 -1
  98. package/lib/middleware/isAuthenticated.ts +4 -1
  99. package/lib/schemas/user.ts +17 -1
  100. package/lib/util/errors.ts +4 -2
  101. package/lib/util/httpError.ts +37 -0
  102. package/package.json +31 -5
@@ -1,31 +1,42 @@
1
1
  import * as regExp from '../../../util/regexp.js';
2
2
  import { MfaPolicy } from '../../../config/constants.js';
3
+ import { httpError } from '../../../util/httpError.js';
3
4
  const MAX_PASSWORD_LENGTH = 256;
5
+ const TOTP_PERIOD_SECONDS = 30;
6
+ function evaluateMfaResult(result) {
7
+ if (result === null || result === false)
8
+ return { valid: false, counter: null };
9
+ if (typeof result === 'number') {
10
+ const currentStep = Math.floor(Date.now() / 1000 / TOTP_PERIOD_SECONDS);
11
+ return { valid: true, counter: currentStep + result };
12
+ }
13
+ return { valid: true, counter: null };
14
+ }
4
15
  export async function register(req, reply) {
5
16
  const { password1: password, password2, ...data } = req.data();
6
17
  if (!req.server['userManager'].isImplemented()) {
7
18
  throw new Error('Not implemented');
8
19
  }
9
20
  if (!data.username) {
10
- return reply.status(400).send(new Error('Username not valid'));
21
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Username not valid' });
11
22
  }
12
23
  if (!regExp.isEmail(data.email)) {
13
- return reply.status(400).send(new Error('Email not valid'));
24
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Email not valid' });
14
25
  }
15
26
  if (!password || !regExp.password.test(password)) {
16
- return reply.status(400).send(new Error('Password not valid'));
27
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Password not valid' });
17
28
  }
18
29
  if (!password2 || password2 !== password) {
19
- return reply.status(400).send(new Error('Repeated password not match'));
30
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Repeated password not match' });
20
31
  }
21
32
  let existings = await req.server['userManager'].retrieveUserByEmail(data.email, req.runner);
22
33
  if (existings) {
23
- return reply.status(400).send(new Error('Email already registered'));
34
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Email already registered' });
24
35
  }
25
36
  if ((data.requiredRoles || []).includes('admin')) {
26
37
  existings = await req.server['userManager'].findQuery({ 'roles:in': 'admin' }, req.runner);
27
38
  if (existings?.records?.length) {
28
- return reply.status(400).send(new Error('User admin already registered'));
39
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'User admin already registered' });
29
40
  }
30
41
  }
31
42
  const publicRole = global.roles?.public?.code || 'public';
@@ -35,7 +46,7 @@ export async function register(req, reply) {
35
46
  }
36
47
  const user = await req.server['userManager'].createUser({ ...data, password: password }, req.runner);
37
48
  if (!user) {
38
- return reply.status(400).send(new Error('User not registered'));
49
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'User not registered' });
39
50
  }
40
51
  return user;
41
52
  }
@@ -44,26 +55,26 @@ export async function unregister(req, reply) {
44
55
  let user = await req.server['userManager'].retrieveUserByPassword(email, password, req.runner);
45
56
  let isValid = await req.server['userManager'].isValidUser(user);
46
57
  if (!isValid) {
47
- return reply.status(403).send(new Error('Wrong credentials'));
58
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Wrong credentials' });
48
59
  }
49
60
  if (user.blocked) {
50
- return reply.status(403).send(new Error('User blocked'));
61
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'User blocked' });
51
62
  }
52
63
  user = await req.server['userManager'].disableUserById(user.getId(), req.runner);
53
64
  isValid = await req.server['userManager'].isValidUser(user);
54
65
  if (!isValid) {
55
- return reply.status(400).send(new Error('User not valid'));
66
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'User not valid' });
56
67
  }
57
68
  return { ok: true };
58
69
  }
59
70
  export async function validatePassword(req, reply) {
60
71
  const { password } = req.data();
61
72
  if (!password) {
62
- return reply.status(400).send(new Error('Password cannot be null'));
73
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Password cannot be null' });
63
74
  }
64
75
  const match = regExp.password.test(password);
65
76
  if (!match) {
66
- return reply.status(400).send(new Error('Password is not valid'));
77
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Password is not valid' });
67
78
  }
68
79
  return { ok: match };
69
80
  }
@@ -73,25 +84,25 @@ export async function changePassword(req, reply) {
73
84
  }
74
85
  const _user = req.user;
75
86
  if (!_user) {
76
- return reply.status(401).send(new Error('Unauthorized'));
87
+ return reply.status(401).send({ statusCode: 401, error: 'Unauthorized', message: 'Unauthorized' });
77
88
  }
78
89
  const { email, oldPassword, newPassword1, newPassword2 } = req.data();
79
90
  if (_user.email !== email && (!req.hasRole(roles.admin) || !global.config.options.admin_can_change_passwords)) {
80
- return reply.status(400).send(new Error('Email not valid'));
91
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Email not valid' });
81
92
  }
82
93
  if (!newPassword1 || !regExp.password.test(newPassword1)) {
83
- return reply.status(400).send(new Error('New password is not valid'));
94
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'New password is not valid' });
84
95
  }
85
96
  if (!newPassword2 || newPassword2 !== newPassword1) {
86
- return reply.status(400).send(new Error('Repeated new password not match'));
97
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Repeated new password not match' });
87
98
  }
88
99
  let user = await req.server['userManager'].retrieveUserByPassword(email, oldPassword, req.runner);
89
100
  let isValid = await req.server['userManager'].isValidUser(user);
90
101
  if (!isValid) {
91
- return reply.status(403).send(new Error('Wrong credentials'));
102
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Wrong credentials' });
92
103
  }
93
104
  if (user.blocked) {
94
- return reply.status(403).send(new Error('User blocked'));
105
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'User blocked' });
95
106
  }
96
107
  user = await req.server['userManager'].changePassword(email, newPassword1, oldPassword, req.runner);
97
108
  isValid = await req.server['userManager'].isValidUser(user);
@@ -103,7 +114,7 @@ export async function forgotPassword(req, reply) {
103
114
  throw new Error('Not implemented');
104
115
  }
105
116
  if (!username && !regExp.isEmail(email)) {
106
- return reply.status(400).send(new Error('Missing a valid user identifier'));
117
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Missing a valid user identifier' });
107
118
  }
108
119
  let user = null;
109
120
  if (email) {
@@ -112,29 +123,24 @@ export async function forgotPassword(req, reply) {
112
123
  else if (username) {
113
124
  user = await req.server['userManager'].retrieveUserByUsername(username, req.runner);
114
125
  }
115
- let isValid = await req.server['userManager'].isValidUser(user);
116
- if (!isValid) {
117
- return reply.status(403).send(new Error('Wrong credentials'));
118
- }
119
- if (user?.blocked) {
120
- return reply.status(403).send(new Error('User blocked'));
126
+ const isValid = await req.server['userManager'].isValidUser(user);
127
+ if (isValid && !user?.blocked) {
128
+ await req.server['userManager'].forgotPassword(user.email, req.runner);
121
129
  }
122
- user = await req.server['userManager'].forgotPassword(user.email, req.runner);
123
- isValid = await req.server['userManager'].isValidUser(user);
124
- return { ok: isValid };
130
+ return { ok: true };
125
131
  }
126
132
  export async function confirmEmail(req, reply) {
127
133
  const { code } = req.data();
128
134
  if (!code) {
129
- return reply.status(400).send(new Error('Missing the confirm email token'));
135
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Missing the confirm email token' });
130
136
  }
131
137
  let user = await req.server['userManager'].retrieveUserByConfirmationToken(code, req.runner);
132
138
  let isValid = await req.server['userManager'].isValidUser(user);
133
139
  if (!isValid) {
134
- return reply.status(403).send(new Error('Wrong credentials'));
140
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Wrong credentials' });
135
141
  }
136
142
  if (user.blocked) {
137
- return reply.status(403).send(new Error('User blocked'));
143
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'User blocked' });
138
144
  }
139
145
  user = await req.server['userManager'].userConfirmation(user, req.runner);
140
146
  isValid = await req.server['userManager'].isValidUser(user);
@@ -146,18 +152,18 @@ export async function resetPassword(req, reply) {
146
152
  throw new Error('Not implemented');
147
153
  }
148
154
  if (!newPassword1 || !regExp.password.test(newPassword1)) {
149
- return reply.status(400).send(new Error('New password not valid'));
155
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'New password not valid' });
150
156
  }
151
157
  if (!newPassword2 || newPassword2 !== newPassword1) {
152
- return reply.status(400).send(new Error('Repeated new password not match'));
158
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Repeated new password not match' });
153
159
  }
154
160
  let user = await req.server['userManager'].retrieveUserByResetPasswordToken(code, req.runner);
155
161
  let isValid = await req.server['userManager'].isValidUser(user);
156
162
  if (!isValid) {
157
- return reply.status(403).send(new Error('Wrong credentials'));
163
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Wrong credentials' });
158
164
  }
159
165
  if (user.blocked) {
160
- return reply.status(403).send(new Error('User blocked'));
166
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'User blocked' });
161
167
  }
162
168
  user = await req.server['userManager'].resetPassword(user, newPassword1, req.runner);
163
169
  isValid = await req.server['userManager'].isValidUser(user);
@@ -170,28 +176,28 @@ export async function login(req, reply) {
170
176
  throw new Error('Not implemented');
171
177
  }
172
178
  if (!regExp.isEmail(email)) {
173
- return reply.status(400).send(new Error('Email not valid'));
179
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Email not valid' });
174
180
  }
175
181
  if (!password || password.length > MAX_PASSWORD_LENGTH) {
176
- return reply.status(400).send(new Error('Password not valid'));
182
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Password not valid' });
177
183
  }
178
184
  let user = await req.server['userManager'].retrieveUserByPassword(email, password, req.runner);
179
185
  if (!user) {
180
- return reply.status(403).send(new Error('Wrong credentials'));
186
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Wrong credentials' });
181
187
  }
182
188
  const isValid = await req.server['userManager'].isValidUser(user);
183
189
  if (!isValid) {
184
- return reply.status(403).send(new Error('Invalid user'));
190
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Invalid user' });
185
191
  }
186
192
  if (!(user.confirmed === true)) {
187
- return reply.status(403).send(new Error('User email unconfirmed'));
193
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'User email unconfirmed' });
188
194
  }
189
195
  const isPasswordToBeChanged = req.server['userManager'].isPasswordToBeChanged(user);
190
196
  if (isPasswordToBeChanged) {
191
- return reply.status(403).send({ statusCode: 403, code: 'PASSWORD_TO_BE_CHANGED', message: 'Password is expired' });
197
+ return reply.status(403).send(httpError(403, 'Password is expired', 'PASSWORD_TO_BE_CHANGED'));
192
198
  }
193
199
  if (user.blocked) {
194
- return reply.status(403).send(new Error('User blocked'));
200
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'User blocked' });
195
201
  }
196
202
  const isMfaEnabled = user.mfaEnabled;
197
203
  const isMandatory = mfa_policy === MfaPolicy.MANDATORY;
@@ -251,25 +257,33 @@ export async function refreshToken(req, reply) {
251
257
  if (!req.server['userManager'].isImplemented()) {
252
258
  throw new Error('Not implemented');
253
259
  }
260
+ if (!reply.server.jwt['refreshToken']) {
261
+ return reply.status(404).send(httpError(404, 'Refresh tokens are disabled', 'NOT_FOUND'));
262
+ }
263
+ if (!token || !refreshToken) {
264
+ return reply
265
+ .status(400)
266
+ .send({ statusCode: 400, error: 'Bad Request', message: 'Missing token or refreshToken' });
267
+ }
254
268
  let tokenData;
255
269
  try {
256
270
  tokenData = (await reply.server.jwt.verify(token, { ignoreExpiration: true }));
257
271
  }
258
272
  catch {
259
- return reply.status(403).send(new Error('Invalid token'));
273
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Invalid token' });
260
274
  }
261
275
  const minAccettable = Math.floor(Date.now() / 1000) - 2592000;
262
276
  if (!tokenData?.iat || tokenData.iat < minAccettable) {
263
- return reply.status(403).send(new Error('Token too old'));
277
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Token too old' });
264
278
  }
265
279
  const refreshTokenData = await reply.server.jwt['refreshToken'].verify(refreshToken);
266
280
  if (tokenData?.sub && tokenData?.sub !== refreshTokenData?.sub) {
267
- return reply.status(403).send(new Error('Mismatched tokens'));
281
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Mismatched tokens' });
268
282
  }
269
283
  const user = await req.server['userManager'].retrieveUserByExternalId(tokenData.sub, req.runner);
270
284
  const isValid = await req.server['userManager'].isValidUser(user);
271
285
  if (!isValid) {
272
- return reply.status(403).send(new Error('Wrong refresh token'));
286
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Wrong refresh token' });
273
287
  }
274
288
  const newToken = await reply.jwtSign({ sub: user.externalId, tid: req.tenant?.id });
275
289
  return {
@@ -279,7 +293,7 @@ export async function refreshToken(req, reply) {
279
293
  export async function invalidateTokens(req, reply) {
280
294
  let isValid = await req.server['userManager'].isValidUser(req.user);
281
295
  if (!req.user || !isValid) {
282
- return reply.status(403).send(new Error('User not linked'));
296
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'User not linked' });
283
297
  }
284
298
  const user = await req.server['userManager'].resetExternalId(req.user.getId(), req.runner);
285
299
  isValid = await req.server['userManager'].isValidUser(user);
@@ -288,7 +302,7 @@ export async function invalidateTokens(req, reply) {
288
302
  export async function mfaSetup(req, reply) {
289
303
  const user = req.user;
290
304
  if (!user)
291
- return reply.status(401).send(new Error('Unauthorized'));
305
+ return reply.status(401).send({ statusCode: 401, error: 'Unauthorized', message: 'Unauthorized' });
292
306
  try {
293
307
  const appName = process.env.MFA_APP_NAME || 'VolcanicApp';
294
308
  const setupData = await req.server['mfaManager'].generateSetup(appName, user.email);
@@ -296,7 +310,7 @@ export async function mfaSetup(req, reply) {
296
310
  }
297
311
  catch (error) {
298
312
  req.log.error({ err: error }, 'MFA Setup failed');
299
- return reply.status(500).send(new Error('Failed to generate MFA setup'));
313
+ return reply.status(500).send({ statusCode: 500, error: 'Internal Server Error', message: 'Failed to generate MFA setup' });
300
314
  }
301
315
  }
302
316
  export async function mfaEnable(req, reply) {
@@ -304,14 +318,17 @@ export async function mfaEnable(req, reply) {
304
318
  const { secret, token } = req.data();
305
319
  const { mfa_policy = MfaPolicy.OPTIONAL } = global.config.options || {};
306
320
  if (!user || !secret || !token)
307
- return reply.status(400).send(new Error('Missing parameters'));
321
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Missing parameters' });
308
322
  try {
309
- const isValid = req.server['mfaManager'].verify(token, secret);
310
- if (!isValid) {
311
- return reply.status(400).send(new Error('Invalid token'));
323
+ const { valid, counter } = evaluateMfaResult(req.server['mfaManager'].verify(token, secret));
324
+ if (!valid) {
325
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Invalid token' });
312
326
  }
313
327
  await req.server['userManager'].saveMfaSecret(user.getId(), secret, req.runner);
314
328
  await req.server['userManager'].enableMfa(user.getId(), req.runner);
329
+ if (counter !== null) {
330
+ await req.server['userManager'].updateUserById(user.getId(), { mfaLastUsedCounter: counter }, req.runner);
331
+ }
315
332
  const finalToken = await reply.jwtSign({ sub: user.externalId, tid: req.tenant?.id });
316
333
  const refreshToken = reply.server.jwt['refreshToken']
317
334
  ? await reply.server.jwt['refreshToken'].sign({ sub: user.externalId, tid: req.tenant?.id })
@@ -329,38 +346,45 @@ export async function mfaEnable(req, reply) {
329
346
  }
330
347
  catch (error) {
331
348
  req.log.error({ err: error }, 'MFA Enable failed');
332
- return reply.status(500).send(new Error('Failed to enable MFA'));
349
+ return reply.status(500).send({ statusCode: 500, error: 'Internal Server Error', message: 'Failed to enable MFA' });
333
350
  }
334
351
  }
335
352
  export async function mfaVerify(req, reply) {
336
353
  const authHeader = req.headers.authorization;
337
354
  const { mfa_policy = MfaPolicy.OPTIONAL } = global.config.options || {};
338
355
  if (!authHeader)
339
- return reply.status(401).send(new Error('Missing authorization'));
356
+ return reply.status(401).send({ statusCode: 401, error: 'Unauthorized', message: 'Missing authorization' });
340
357
  const tokenStr = authHeader.split(' ')[1];
341
358
  let decoded;
342
359
  try {
343
360
  decoded = req.server.jwt.verify(tokenStr);
344
361
  }
345
362
  catch (_e) {
346
- return reply.status(401).send(new Error('Invalid token'));
363
+ return reply.status(401).send({ statusCode: 401, error: 'Unauthorized', message: 'Invalid token' });
347
364
  }
348
365
  if (decoded.role !== 'pre-auth-mfa' && (!req.user || !req.user.getId())) {
349
- return reply.status(403).send(new Error('Invalid token scope'));
366
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Invalid token scope' });
350
367
  }
351
368
  const subjectId = decoded.sub;
352
369
  const { token } = req.data();
353
370
  if (!token)
354
- return reply.status(400).send(new Error('Missing token'));
371
+ return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Missing token' });
355
372
  const user = await req.server['userManager'].retrieveUserByExternalId(subjectId, req.runner);
356
373
  if (!user)
357
- return reply.status(404).send(new Error('User not found'));
374
+ return reply.status(404).send({ statusCode: 404, error: 'Not Found', message: 'User not found' });
358
375
  const secret = await req.server['userManager'].retrieveMfaSecret(user.getId(), req.runner);
359
376
  if (!secret)
360
- return reply.status(403).send(new Error('MFA not configured for user'));
361
- const isValid = req.server['mfaManager'].verify(token, secret);
362
- if (!isValid)
363
- return reply.status(403).send(new Error('Invalid MFA token'));
377
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'MFA not configured for user' });
378
+ const { valid, counter } = evaluateMfaResult(req.server['mfaManager'].verify(token, secret));
379
+ if (!valid)
380
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Invalid MFA token' });
381
+ const lastCounter = user.mfaLastUsedCounter;
382
+ if (counter !== null && lastCounter != null && counter <= lastCounter) {
383
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'MFA token already used' });
384
+ }
385
+ if (counter !== null) {
386
+ await req.server['userManager'].updateUserById(user.getId(), { mfaLastUsedCounter: counter }, req.runner);
387
+ }
364
388
  if (config.options.reset_external_id_on_login) {
365
389
  await req.server['userManager'].resetExternalId(user.getId(), req.runner);
366
390
  }
@@ -381,10 +405,10 @@ export async function mfaVerify(req, reply) {
381
405
  export async function mfaDisable(req, reply) {
382
406
  const user = req.user;
383
407
  if (!user)
384
- return reply.status(401).send(new Error('Unauthorized'));
408
+ return reply.status(401).send({ statusCode: 401, error: 'Unauthorized', message: 'Unauthorized' });
385
409
  const { mfa_policy = MfaPolicy.OPTIONAL } = global.config.options || {};
386
410
  if (mfa_policy === MfaPolicy.MANDATORY || mfa_policy === MfaPolicy.ONE_WAY) {
387
- return reply.status(403).send(new Error('MFA disable is not allowed by security policy'));
411
+ return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'MFA disable is not allowed by security policy' });
388
412
  }
389
413
  try {
390
414
  await req.server['userManager'].disableMfa(user.getId(), req.runner);
@@ -392,7 +416,7 @@ export async function mfaDisable(req, reply) {
392
416
  }
393
417
  catch (error) {
394
418
  req.log.error({ err: error }, 'MFA Disable failed');
395
- return reply.status(500).send(new Error('Failed to disable MFA'));
419
+ return reply.status(500).send({ statusCode: 500, error: 'Internal Server Error', message: 'Failed to disable MFA' });
396
420
  }
397
421
  }
398
422
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../lib/api/auth/controller/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../lib/api/auth/controller/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAItD,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAG/B,MAAM,mBAAmB,GAAG,EAAE,CAAA;AAW9B,SAAS,iBAAiB,CAAC,MAA+B;IACxD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC/E,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,mBAAmB,CAAC,CAAA;QACvE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE,CAAA;IACvD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAmB,EAAE,KAAmB;IACrE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAE9D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAA;IACzG,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAA;IACtG,CAAC;IACD,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAA;IACzG,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAA;IAClH,CAAC;IAED,IAAI,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3F,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAA;IAC/G,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1F,IAAI,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAA;QACpH,CAAC;IACH,CAAC;IAGD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAA;IACzD,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5F,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACpG,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAA;IAC1G,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAmB,EAAE,KAAmB;IACvE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAEtC,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9F,IAAI,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAE/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACtG,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;IACjG,CAAC;IAED,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChF,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAE3D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAA;IACrG,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAmB,EAAE,KAAmB;IAC7E,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAE/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAA;IAC9G,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAA;IAC5G,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAmB,EAAE,KAAmB;IAC3E,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAA;IACtB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;IACpG,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAErE,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;QAC9G,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAA;IACtG,CAAC;IAED,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAA;IAChH,CAAC;IAED,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAA;IACtH,CAAC;IAED,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACjG,IAAI,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAE/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACtG,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;IACjG,CAAC;IAED,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACnG,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC3D,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAmB,EAAE,KAAmB;IAC3E,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAEtC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAA;IACtH,CAAC;IAED,IAAI,IAAI,GAAG,IAAW,CAAA;IACtB,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/E,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACrF,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAMjE,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxE,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAmB,EAAE,KAAmB;IACzE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAE3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAA;IACtH,CAAC;IAED,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,+BAA+B,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5F,IAAI,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAE/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACtG,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;IACjG,CAAC;IAED,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzE,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAE3D,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAmB,EAAE,KAAmB;IAC1E,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAEvD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAA;IAC7G,CAAC;IAED,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAA;IACtH,CAAC;IAED,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,gCAAgC,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7F,IAAI,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAE/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACtG,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;IACjG,CAAC;IAED,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACpF,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC3D,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,GAAmB,EAAE,KAAmB;IAClE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IACtC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;IAEvE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAA;IACtG,CAAC;IAMD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACvD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAA;IACzG,CAAC;IAED,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9F,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACtG,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAEjE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;IACjG,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAA;IAC3G,CAAC;IAED,MAAM,qBAAqB,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;IACnF,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,qBAAqB,EAAE,wBAAwB,CAAC,CAAC,CAAA;IAChG,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;IACjG,CAAC;IAGD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAA;IACpC,MAAM,WAAW,GAAG,UAAU,KAAK,SAAS,CAAC,SAAS,CAAA;IAEtD,IAAI,YAAY,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,OAAO,CACnC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EACnE,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAA;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC5B,WAAW,EAAE,YAAY;YACzB,gBAAgB,EAAE,WAAW,IAAI,CAAC,YAAY;YAC9C,SAAS,EAAE,SAAS;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC;QAC9C,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAClF,CAAC;IAGD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;IAChF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;QACnD,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;QAC5F,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,QAAQ,CAAA;IAEnD,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE;YACnC,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;YAC7C,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;QAEF,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;YACvF,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE;gBACd,SAAS,EAAE,UAAU;aACtB;SACF,CAAA;IACH,CAAC;IAGD,OAAO;QACL,GAAG,IAAI;QACP,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;QACvF,KAAK,EAAE,KAAK;QACZ,YAAY;QACZ,cAAc,EAAE;YACd,SAAS,EAAE,UAAU;SACtB;KACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAoB,EAAE,KAAmB;IACpE,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACvC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAmB,EAAE,KAAmB;IACzE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAE1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACpC,CAAC;IAID,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,6BAA6B,EAAE,WAAW,CAAC,CAAC,CAAA;IAC3F,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,OAAO,KAAK;aACT,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAA;IAC9F,CAAC;IAKD,IAAI,SAAwC,CAAA;IAC5C,IAAI,CAAC;QACH,SAAS,GAAG,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAkC,CAAA;IACjH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAA;IAClG,CAAC;IAKD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAA;IAC7D,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,GAAG,aAAa,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAA;IAClG,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACpF,IAAI,SAAS,EAAE,GAAG,IAAI,SAAS,EAAE,GAAG,KAAK,gBAAgB,EAAE,GAAG,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACtG,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChG,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAEjE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAA;IACxG,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;IACnF,OAAO;QACL,KAAK,EAAE,QAAQ;KAChB,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAmB,EAAE,KAAmB;IAC7E,IAAI,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACnE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAA;IACpG,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1F,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC3D,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAmB,EAAE,KAAmB;IACrE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;IACrB,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;IAE7G,IAAI,CAAC;QAEH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,aAAa,CAAA;QACzD,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACnF,OAAO,SAAS,CAAA;IAClB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAA;QACjD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAA;IAC7H,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAmB,EAAE,KAAmB;IACtE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;IACrB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IACpC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;IAEvE,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAA;IAEvI,IAAI,CAAC;QAEH,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;QAC5F,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAA;QACpG,CAAC;QAGD,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC/E,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAGnE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC3G,CAAC;QAMD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;QACrF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;YACnD,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;YAC5F,CAAC,CAAC,SAAS,CAAA;QAEb,OAAO;YACL,GAAG,IAAI;YACP,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;YACvF,KAAK,EAAE,UAAU;YACjB,YAAY,EAAE,YAAY;YAC1B,cAAc,EAAE;gBACd,SAAS,EAAE,UAAU;aACtB;SACF,CAAA;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,mBAAmB,CAAC,CAAA;QAClD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAA;IACrH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAmB,EAAE,KAAmB;IACtE,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAA;IAC5C,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;IAEvE,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAA;IAE5H,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,IAAI,OAAY,CAAA;IAChB,IAAI,CAAC;QACH,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAA;IACrG,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAA;IACxG,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAA;IAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAA;IAG9G,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,wBAAwB,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5F,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAA;IAE5G,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1F,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAA;IAG3H,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;IAC5F,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;IAGhH,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAA;IAC3C,IAAI,OAAO,KAAK,IAAI,IAAI,WAAW,IAAI,IAAI,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAA;IAC3G,CAAC;IACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3G,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC;QAC9C,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;IACrF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;QACnD,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;QAC5F,CAAC,CAAC,SAAS,CAAA;IAEb,OAAO;QACL,GAAG,IAAI;QACP,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;QACvF,KAAK,EAAE,UAAU;QACjB,YAAY,EAAE,YAAY;QAC1B,cAAc,EAAE;YACd,SAAS,EAAE,UAAU;SACtB;KACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAmB,EAAE,KAAmB;IACvE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;IACrB,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;IAE7G,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;IACvE,IAAI,UAAU,KAAK,SAAS,CAAC,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC,CAAA;IAClI,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QACpE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IACrB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,oBAAoB,CAAC,CAAA;QACnD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAA;IACtH,CAAC;AACH,CAAC"}
@@ -14,6 +14,10 @@ declare const _default: {
14
14
  roles: never[];
15
15
  handler: string;
16
16
  middlewares: string[];
17
+ rateLimit: {
18
+ max: number;
19
+ timeWindow: number;
20
+ };
17
21
  config: {
18
22
  title: string;
19
23
  description: string;
@@ -27,6 +31,26 @@ declare const _default: {
27
31
  202?: undefined;
28
32
  };
29
33
  };
34
+ } | {
35
+ method: string;
36
+ path: string;
37
+ roles: never[];
38
+ handler: string;
39
+ middlewares: string[];
40
+ config: {
41
+ title: string;
42
+ description: string;
43
+ body: {
44
+ $ref: string;
45
+ };
46
+ response: {
47
+ 200: {
48
+ $ref: string;
49
+ };
50
+ 202?: undefined;
51
+ };
52
+ };
53
+ rateLimit?: undefined;
30
54
  } | {
31
55
  method: string;
32
56
  path: string;
@@ -44,12 +68,17 @@ declare const _default: {
44
68
  };
45
69
  body?: undefined;
46
70
  };
71
+ rateLimit?: undefined;
47
72
  } | {
48
73
  method: string;
49
74
  path: string;
50
75
  roles: never[];
51
76
  handler: string;
52
77
  middlewares: never[];
78
+ rateLimit: {
79
+ max: number;
80
+ timeWindow: number;
81
+ };
53
82
  config: {
54
83
  title: string;
55
84
  description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../lib/api/auth/routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA8OC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../lib/api/auth/routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,wBAsPC"}
@@ -1,3 +1,7 @@
1
+ const authRateLimit = {
2
+ max: Math.floor(Number(process.env.AUTH_RATELIMIT_MAX) || 10),
3
+ timeWindow: Math.floor(Number(process.env.AUTH_RATELIMIT_WINDOW) || 60000)
4
+ };
1
5
  export default {
2
6
  config: {
3
7
  title: 'Authentication functions',
@@ -15,6 +19,7 @@ export default {
15
19
  roles: [],
16
20
  handler: 'auth.register',
17
21
  middlewares: ['global.preAuth', 'global.postAuth'],
22
+ rateLimit: authRateLimit,
18
23
  config: {
19
24
  title: 'Register new user',
20
25
  description: 'Register a new user',
@@ -90,6 +95,7 @@ export default {
90
95
  roles: [],
91
96
  handler: 'auth.forgotPassword',
92
97
  middlewares: ['global.preForgotPassword', 'global.postForgotPassword'],
98
+ rateLimit: authRateLimit,
93
99
  config: {
94
100
  title: 'Forgot password',
95
101
  description: 'Forgot password for an existing user given the email or username. Create a reset token, used by "POST /auth/reset-password".',
@@ -105,6 +111,7 @@ export default {
105
111
  roles: [],
106
112
  handler: 'auth.resetPassword',
107
113
  middlewares: [],
114
+ rateLimit: authRateLimit,
108
115
  config: {
109
116
  title: 'Reset password',
110
117
  description: 'Reset password for an existing user given the reset token (generated by "POST /auth/forgot-password").',
@@ -120,6 +127,7 @@ export default {
120
127
  roles: [],
121
128
  handler: 'auth.login',
122
129
  middlewares: ['global.preAuth', 'global.postAuth'],
130
+ rateLimit: authRateLimit,
123
131
  config: {
124
132
  title: 'Login',
125
133
  description: 'Login authentication',
@@ -192,6 +200,7 @@ export default {
192
200
  roles: [],
193
201
  handler: 'auth.mfaEnable',
194
202
  middlewares: ['global.isAuthenticated'],
203
+ rateLimit: { max: 10, timeWindow: 60000 },
195
204
  config: {
196
205
  title: 'Enable MFA',
197
206
  description: 'Enable MFA by verifying a token against the generated secret. Returns tokens on success.',
@@ -207,6 +216,7 @@ export default {
207
216
  roles: [],
208
217
  handler: 'auth.mfaVerify',
209
218
  middlewares: [],
219
+ rateLimit: { max: 10, timeWindow: 60000 },
210
220
  config: {
211
221
  title: 'Verify MFA',
212
222
  description: 'Verify MFA token during login to obtain final JWT',