@volcanicminds/backend 0.6.1 → 0.6.3

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 (108) hide show
  1. package/index.ts +6 -1
  2. package/lib/api/auth/controller/auth.ts +12 -1
  3. package/lib/config/general.ts +9 -0
  4. package/lib/hooks/onRequest.ts +1 -1
  5. package/lib/loader/general.ts +32 -0
  6. package/package.json +1 -1
  7. package/types/global.d.ts +9 -0
  8. package/dist/index.js +0 -327
  9. package/dist/index.js.map +0 -1
  10. package/dist/lib/api/auth/controller/auth.js +0 -328
  11. package/dist/lib/api/auth/controller/auth.js.map +0 -1
  12. package/dist/lib/api/auth/routes.js +0 -195
  13. package/dist/lib/api/auth/routes.js.map +0 -1
  14. package/dist/lib/api/health/controller/health.js +0 -8
  15. package/dist/lib/api/health/controller/health.js.map +0 -1
  16. package/dist/lib/api/health/routes.js +0 -26
  17. package/dist/lib/api/health/routes.js.map +0 -1
  18. package/dist/lib/api/token/controller/token.js +0 -116
  19. package/dist/lib/api/token/controller/token.js.map +0 -1
  20. package/dist/lib/api/token/routes.js +0 -152
  21. package/dist/lib/api/token/routes.js.map +0 -1
  22. package/dist/lib/api/tool/controller/tool.js +0 -25
  23. package/dist/lib/api/tool/controller/tool.js.map +0 -1
  24. package/dist/lib/api/tool/routes.js +0 -26
  25. package/dist/lib/api/tool/routes.js.map +0 -1
  26. package/dist/lib/api/users/controller/user.js +0 -14
  27. package/dist/lib/api/users/controller/user.js.map +0 -1
  28. package/dist/lib/api/users/routes.js +0 -65
  29. package/dist/lib/api/users/routes.js.map +0 -1
  30. package/dist/lib/apollo/context.js +0 -19
  31. package/dist/lib/apollo/context.js.map +0 -1
  32. package/dist/lib/apollo/resolvers.js +0 -9
  33. package/dist/lib/apollo/resolvers.js.map +0 -1
  34. package/dist/lib/apollo/type-defs.js +0 -9
  35. package/dist/lib/apollo/type-defs.js.map +0 -1
  36. package/dist/lib/config/plugins.js +0 -57
  37. package/dist/lib/config/plugins.js.map +0 -1
  38. package/dist/lib/config/roles.js +0 -19
  39. package/dist/lib/config/roles.js.map +0 -1
  40. package/dist/lib/config/tracking.js +0 -10
  41. package/dist/lib/config/tracking.js.map +0 -1
  42. package/dist/lib/hooks/onError.js +0 -15
  43. package/dist/lib/hooks/onError.js.map +0 -1
  44. package/dist/lib/hooks/onRequest.js +0 -71
  45. package/dist/lib/hooks/onRequest.js.map +0 -1
  46. package/dist/lib/hooks/onResponse.js +0 -25
  47. package/dist/lib/hooks/onResponse.js.map +0 -1
  48. package/dist/lib/hooks/preHandler.js +0 -39
  49. package/dist/lib/hooks/preHandler.js.map +0 -1
  50. package/dist/lib/hooks/preSerialization.js +0 -47
  51. package/dist/lib/hooks/preSerialization.js.map +0 -1
  52. package/dist/lib/loader/hooks.js +0 -46
  53. package/dist/lib/loader/hooks.js.map +0 -1
  54. package/dist/lib/loader/plugins.js +0 -24
  55. package/dist/lib/loader/plugins.js.map +0 -1
  56. package/dist/lib/loader/roles.js +0 -22
  57. package/dist/lib/loader/roles.js.map +0 -1
  58. package/dist/lib/loader/router.js +0 -173
  59. package/dist/lib/loader/router.js.map +0 -1
  60. package/dist/lib/loader/schemas.js +0 -34
  61. package/dist/lib/loader/schemas.js.map +0 -1
  62. package/dist/lib/loader/tracking.js +0 -70
  63. package/dist/lib/loader/tracking.js.map +0 -1
  64. package/dist/lib/loader/translation.js +0 -53
  65. package/dist/lib/loader/translation.js.map +0 -1
  66. package/dist/lib/locales/en.json +0 -12
  67. package/dist/lib/locales/it.json +0 -12
  68. package/dist/lib/middleware/dispatchForgotPasswordLink.js +0 -19
  69. package/dist/lib/middleware/dispatchForgotPasswordLink.js.map +0 -1
  70. package/dist/lib/middleware/isAdmin.js +0 -17
  71. package/dist/lib/middleware/isAdmin.js.map +0 -1
  72. package/dist/lib/middleware/isAuthenticated.js +0 -18
  73. package/dist/lib/middleware/isAuthenticated.js.map +0 -1
  74. package/dist/lib/middleware/postAuth.js +0 -19
  75. package/dist/lib/middleware/postAuth.js.map +0 -1
  76. package/dist/lib/middleware/preAuth.js +0 -17
  77. package/dist/lib/middleware/preAuth.js.map +0 -1
  78. package/dist/lib/middleware/preForgotPasswordHandler.js +0 -17
  79. package/dist/lib/middleware/preForgotPasswordHandler.js.map +0 -1
  80. package/dist/lib/schemas/auth.js +0 -101
  81. package/dist/lib/schemas/auth.js.map +0 -1
  82. package/dist/lib/schemas/common.js +0 -66
  83. package/dist/lib/schemas/common.js.map +0 -1
  84. package/dist/lib/schemas/token.js +0 -38
  85. package/dist/lib/schemas/token.js.map +0 -1
  86. package/dist/lib/util/common.js +0 -19
  87. package/dist/lib/util/common.js.map +0 -1
  88. package/dist/lib/util/errors.js +0 -19
  89. package/dist/lib/util/errors.js.map +0 -1
  90. package/dist/lib/util/generate.js +0 -10
  91. package/dist/lib/util/generate.js.map +0 -1
  92. package/dist/lib/util/logger.js +0 -52
  93. package/dist/lib/util/logger.js.map +0 -1
  94. package/dist/lib/util/mark.js +0 -25
  95. package/dist/lib/util/mark.js.map +0 -1
  96. package/dist/lib/util/path.js +0 -12
  97. package/dist/lib/util/path.js.map +0 -1
  98. package/dist/lib/util/regexp.js +0 -15
  99. package/dist/lib/util/regexp.js.map +0 -1
  100. package/dist/lib/util/tracker.js +0 -123
  101. package/dist/lib/util/tracker.js.map +0 -1
  102. package/dist/lib/util/yn.js +0 -17
  103. package/dist/lib/util/yn.js.map +0 -1
  104. package/dist/nodemon.json +0 -7
  105. package/dist/package.json +0 -101
  106. package/dist/server.js +0 -5
  107. package/dist/server.js.map +0 -1
  108. package/dist/tsconfig.json +0 -32
@@ -1,328 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- var __rest = (this && this.__rest) || function (s, e) {
35
- var t = {};
36
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
37
- t[p] = s[p];
38
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
39
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
40
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
41
- t[p[i]] = s[p[i]];
42
- }
43
- return t;
44
- };
45
- Object.defineProperty(exports, "__esModule", { value: true });
46
- exports.unblock = exports.block = exports.invalidateTokens = exports.refreshToken = exports.login = exports.resetPassword = exports.confirmEmail = exports.forgotPassword = exports.changePassword = exports.validatePassword = exports.unregister = exports.register = void 0;
47
- const regExp = __importStar(require("../../../util/regexp"));
48
- function register(req, reply) {
49
- var _a, _b, _c;
50
- return __awaiter(this, void 0, void 0, function* () {
51
- const _d = req.data(), { password1: password, password2 } = _d, data = __rest(_d, ["password1", "password2"]);
52
- if (!req.server['userManager'].isImplemented()) {
53
- throw new Error('Not implemented');
54
- }
55
- if (!data.username) {
56
- return reply.status(400).send(new Error('Username not valid'));
57
- }
58
- if (!data.email || !regExp.email.test(data.email)) {
59
- return reply.status(400).send(new Error('Email not valid'));
60
- }
61
- if (!password || !regExp.password.test(password)) {
62
- return reply.status(400).send(new Error('Password not valid'));
63
- }
64
- if (!password2 || password2 !== password) {
65
- return reply.status(400).send(new Error('Repeated password not match'));
66
- }
67
- let existings = yield req.server['userManager'].retrieveUserByEmail(data.email);
68
- if (existings) {
69
- return reply.status(400).send(new Error('Email already registered'));
70
- }
71
- if ((data.requiredRoles || []).includes('admin')) {
72
- existings = yield req.server['userManager'].findQuery({ 'roles:in': 'admin' });
73
- if ((_a = existings === null || existings === void 0 ? void 0 : existings.records) === null || _a === void 0 ? void 0 : _a.length) {
74
- return reply.status(400).send(new Error('User admin already registered'));
75
- }
76
- }
77
- const publicRole = ((_c = (_b = global.roles) === null || _b === void 0 ? void 0 : _b.public) === null || _c === void 0 ? void 0 : _c.code) || 'public';
78
- data.roles = (data.requiredRoles || []).map((r) => { var _a; return (_a = global.roles[r]) === null || _a === void 0 ? void 0 : _a.code; }).filter((r) => !!r);
79
- if (!data.roles.includes(publicRole)) {
80
- data.roles.push(publicRole);
81
- }
82
- const user = yield req.server['userManager'].createUser(Object.assign(Object.assign({}, data), { password: password }));
83
- if (!user) {
84
- return reply.status(400).send(new Error('User not registered'));
85
- }
86
- return user;
87
- });
88
- }
89
- exports.register = register;
90
- function unregister(req, reply) {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- const { email, password } = req.data();
93
- let user = yield req.server['userManager'].retrieveUserByPassword(email, password);
94
- let isValid = yield req.server['userManager'].isValidUser(user);
95
- if (!isValid) {
96
- return reply.status(403).send(new Error('Wrong credentials'));
97
- }
98
- if (user.blocked) {
99
- return reply.status(403).send(new Error('User blocked'));
100
- }
101
- user = yield req.server['userManager'].disableUserById(user.getId());
102
- isValid = yield req.server['userManager'].isValidUser(user);
103
- if (!isValid) {
104
- return reply.status(400).send(new Error('User not valid'));
105
- }
106
- return { ok: true };
107
- });
108
- }
109
- exports.unregister = unregister;
110
- function validatePassword(req, reply) {
111
- return __awaiter(this, void 0, void 0, function* () {
112
- const { password } = req.data();
113
- if (!password) {
114
- return reply.status(400).send(new Error('Password cannot be null'));
115
- }
116
- const match = regExp.password.test(password);
117
- if (!match) {
118
- return reply.status(400).send(new Error('Password is not valid'));
119
- }
120
- return { ok: match };
121
- });
122
- }
123
- exports.validatePassword = validatePassword;
124
- function changePassword(req, reply) {
125
- return __awaiter(this, void 0, void 0, function* () {
126
- const { email, oldPassword, newPassword1, newPassword2 } = req.data();
127
- if (!req.server['userManager'].isImplemented()) {
128
- throw new Error('Not implemented');
129
- }
130
- if (!newPassword1 || !regExp.password.test(newPassword1)) {
131
- return reply.status(400).send(new Error('New password is not valid'));
132
- }
133
- if (!newPassword2 || newPassword2 !== newPassword1) {
134
- return reply.status(400).send(new Error('Repeated new password not match'));
135
- }
136
- let user = yield req.server['userManager'].retrieveUserByPassword(email, oldPassword);
137
- let isValid = yield req.server['userManager'].isValidUser(user);
138
- if (!isValid) {
139
- return reply.status(403).send(new Error('Wrong credentials'));
140
- }
141
- if (user.blocked) {
142
- return reply.status(403).send(new Error('User blocked'));
143
- }
144
- user = yield req.server['userManager'].changePassword(email, newPassword1, oldPassword);
145
- isValid = yield req.server['userManager'].isValidUser(user);
146
- return { ok: isValid };
147
- });
148
- }
149
- exports.changePassword = changePassword;
150
- function forgotPassword(req, reply) {
151
- return __awaiter(this, void 0, void 0, function* () {
152
- const { username, email } = req.data();
153
- if (!req.server['userManager'].isImplemented()) {
154
- throw new Error('Not implemented');
155
- }
156
- if (!username && (!email || (email && !regExp.email.test(email)))) {
157
- return reply.status(400).send(new Error('Missing a valid user identifier'));
158
- }
159
- let user = null;
160
- if (email) {
161
- user = yield req.server['userManager'].retrieveUserByEmail(email);
162
- }
163
- else if (username) {
164
- user = yield req.server['userManager'].retrieveUserByUsername(username);
165
- }
166
- let isValid = yield req.server['userManager'].isValidUser(user);
167
- if (!isValid) {
168
- return reply.status(403).send(new Error('Wrong credentials'));
169
- }
170
- if (user === null || user === void 0 ? void 0 : user.blocked) {
171
- return reply.status(403).send(new Error('User blocked'));
172
- }
173
- user = yield req.server['userManager'].forgotPassword(user.email);
174
- isValid = yield req.server['userManager'].isValidUser(user);
175
- return { ok: isValid };
176
- });
177
- }
178
- exports.forgotPassword = forgotPassword;
179
- function confirmEmail(req, reply) {
180
- return __awaiter(this, void 0, void 0, function* () {
181
- const { code } = req.data();
182
- if (!code) {
183
- return reply.status(400).send(new Error('Missing the confirm email token'));
184
- }
185
- let user = yield req.server['userManager'].retrieveUserByConfirmationToken(code);
186
- let isValid = yield req.server['userManager'].isValidUser(user);
187
- if (!isValid) {
188
- return reply.status(403).send(new Error('Wrong credentials'));
189
- }
190
- if (user.blocked) {
191
- return reply.status(403).send(new Error('User blocked'));
192
- }
193
- user = yield req.server['userManager'].userConfirmation(user);
194
- isValid = yield req.server['userManager'].isValidUser(user);
195
- return { ok: isValid };
196
- });
197
- }
198
- exports.confirmEmail = confirmEmail;
199
- function resetPassword(req, reply) {
200
- return __awaiter(this, void 0, void 0, function* () {
201
- const { code, newPassword1, newPassword2 } = req.data();
202
- if (!req.server['userManager'].isImplemented()) {
203
- throw new Error('Not implemented');
204
- }
205
- if (!newPassword1 || !regExp.password.test(newPassword1)) {
206
- return reply.status(400).send(new Error('New password not valid'));
207
- }
208
- if (!newPassword2 || newPassword2 !== newPassword1) {
209
- return reply.status(400).send(new Error('Repeated new password not match'));
210
- }
211
- let user = yield req.server['userManager'].retrieveUserByResetPasswordToken(code);
212
- let isValid = yield req.server['userManager'].isValidUser(user);
213
- if (!isValid) {
214
- return reply.status(403).send(new Error('Wrong credentials'));
215
- }
216
- if (user.blocked) {
217
- return reply.status(403).send(new Error('User blocked'));
218
- }
219
- user = yield req.server['userManager'].resetPassword(user, newPassword1);
220
- isValid = yield req.server['userManager'].isValidUser(user);
221
- return { ok: isValid, user };
222
- });
223
- }
224
- exports.resetPassword = resetPassword;
225
- function login(req, reply) {
226
- var _a, _b;
227
- return __awaiter(this, void 0, void 0, function* () {
228
- const { email, password } = req.data();
229
- if (!req.server['userManager'].isImplemented()) {
230
- throw new Error('Not implemented');
231
- }
232
- if (!email || !regExp.email.test(email)) {
233
- return reply.status(400).send(new Error('Email not valid'));
234
- }
235
- if (!password || !regExp.password.test(password)) {
236
- return reply.status(400).send(new Error('Password not valid'));
237
- }
238
- const user = yield req.server['userManager'].retrieveUserByPassword(email, password);
239
- const isValid = yield req.server['userManager'].isValidUser(user);
240
- if (!isValid) {
241
- return reply.status(403).send(new Error('Wrong credentials'));
242
- }
243
- if (!(user.confirmed === true)) {
244
- return reply.status(403).send(new Error('User email unconfirmed'));
245
- }
246
- if (user.blocked) {
247
- return reply.status(403).send(new Error('User blocked'));
248
- }
249
- const token = yield reply.jwtSign({ sub: user.externalId });
250
- const refreshToken = reply.server.jwt['refreshToken']
251
- ? yield reply.server.jwt['refreshToken'].sign({ sub: user.externalId })
252
- : undefined;
253
- return Object.assign(Object.assign({}, user), { roles: (user.roles || [((_b = (_a = global.role) === null || _a === void 0 ? void 0 : _a.public) === null || _b === void 0 ? void 0 : _b.code) || 'public']).map((r) => (r === null || r === void 0 ? void 0 : r.code) || r), token: token, refreshToken });
254
- });
255
- }
256
- exports.login = login;
257
- function refreshToken(req, reply) {
258
- return __awaiter(this, void 0, void 0, function* () {
259
- const { token, refreshToken } = req.data();
260
- if (!req.server['userManager'].isImplemented()) {
261
- throw new Error('Not implemented');
262
- }
263
- const tokenData = (yield reply.server.jwt.decode(token));
264
- const minAccettable = Math.floor(Date.now() / 1000) - 2592000;
265
- if ((tokenData === null || tokenData === void 0 ? void 0 : tokenData.sub) > 0 && (tokenData === null || tokenData === void 0 ? void 0 : tokenData.sub) > minAccettable) {
266
- return reply.status(403).send(new Error('Token too old'));
267
- }
268
- const refreshTokenData = yield reply.server.jwt['refreshToken'].verify(refreshToken);
269
- if ((tokenData === null || tokenData === void 0 ? void 0 : tokenData.sub) && (tokenData === null || tokenData === void 0 ? void 0 : tokenData.sub) !== (refreshTokenData === null || refreshTokenData === void 0 ? void 0 : refreshTokenData.sub)) {
270
- return reply.status(403).send(new Error('Mismatched tokens'));
271
- }
272
- const user = yield req.server['userManager'].retrieveUserByExternalId(tokenData.sub);
273
- const isValid = yield req.server['userManager'].isValidUser(user);
274
- if (!isValid) {
275
- return reply.status(403).send(new Error('Wrong refresh token'));
276
- }
277
- const newToken = yield reply.jwtSign({ sub: user.externalId });
278
- return {
279
- token: newToken
280
- };
281
- });
282
- }
283
- exports.refreshToken = refreshToken;
284
- function invalidateTokens(req, reply) {
285
- return __awaiter(this, void 0, void 0, function* () {
286
- let isValid = yield req.server['userManager'].isValidUser(req.user);
287
- if (!req.user || !isValid) {
288
- return reply.status(403).send(new Error('User not linked'));
289
- }
290
- const user = yield req.server['userManager'].resetExternalId(req.user.getId());
291
- isValid = yield req.server['userManager'].isValidUser(user);
292
- return { ok: isValid };
293
- });
294
- }
295
- exports.invalidateTokens = invalidateTokens;
296
- function block(req, reply) {
297
- return __awaiter(this, void 0, void 0, function* () {
298
- if (!req.server['userManager'].isImplemented()) {
299
- throw new Error('Not implemented');
300
- }
301
- if (!req.hasRole(roles.admin) && !req.hasRole(roles.backoffice)) {
302
- return reply.status(403).send({ statusCode: 403, code: 'ROLE_NOT_ALLOWED', message: 'Not allowed to block a user' });
303
- }
304
- const { id: userId } = req.parameters();
305
- const { reason } = req.data();
306
- let user = yield req.server['userManager'].blockUserById(userId, reason);
307
- user = yield req.server['userManager'].resetExternalId(user.getId());
308
- return { ok: !!user.getId() };
309
- });
310
- }
311
- exports.block = block;
312
- function unblock(req, reply) {
313
- return __awaiter(this, void 0, void 0, function* () {
314
- if (!req.server['userManager'].isImplemented()) {
315
- throw new Error('Not implemented');
316
- }
317
- if (!req.hasRole(roles.admin) && !req.hasRole(roles.backoffice)) {
318
- return reply
319
- .status(403)
320
- .send({ statusCode: 403, code: 'ROLE_NOT_ALLOWED', message: 'Not allowed to unblock a user' });
321
- }
322
- const { id: userId } = req.parameters();
323
- const user = yield req.server['userManager'].unblockUserById(userId);
324
- return { ok: !!user.getId() };
325
- });
326
- }
327
- exports.unblock = unblock;
328
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../lib/api/auth/controller/auth.ts"],"names":[],"mappings":"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"}
@@ -1,195 +0,0 @@
1
- "use strict";
2
- module.exports = {
3
- config: {
4
- title: 'Authentication functions',
5
- description: 'Authentication functions',
6
- controller: 'controller',
7
- tags: ['auth'],
8
- deprecated: false,
9
- version: false,
10
- enable: true
11
- },
12
- routes: [
13
- {
14
- method: 'POST',
15
- path: '/register',
16
- roles: [],
17
- handler: 'auth.register',
18
- middlewares: ['global.preAuth', 'global.postAuth'],
19
- config: {
20
- title: 'Register new user',
21
- description: 'Register a new user',
22
- body: { $ref: 'authRegisterBodySchema#' },
23
- response: {
24
- 200: { $ref: 'authRegisterResponseSchema#' }
25
- }
26
- }
27
- },
28
- {
29
- method: 'POST',
30
- path: '/unregister',
31
- roles: [],
32
- handler: 'auth.unregister',
33
- middlewares: ['global.preAuth', 'global.postAuth'],
34
- config: {
35
- title: 'Unregister existing user (actually disables it)',
36
- description: 'Unregister an existing user (actually disables it)',
37
- body: { $ref: 'authLoginBodySchema#' },
38
- response: {
39
- 200: { $ref: 'defaultResponse#' }
40
- }
41
- }
42
- },
43
- {
44
- method: 'POST',
45
- path: '/validate-password',
46
- roles: [],
47
- handler: 'auth.validatePassword',
48
- middlewares: [],
49
- config: {
50
- title: 'Validate password',
51
- description: 'Validate password if valid and usable',
52
- body: { $ref: 'onlyPasswordSchema#' },
53
- response: {
54
- 200: { $ref: 'defaultResponse#' }
55
- }
56
- }
57
- },
58
- {
59
- method: 'POST',
60
- path: '/change-password',
61
- roles: [],
62
- handler: 'auth.changePassword',
63
- middlewares: [],
64
- config: {
65
- title: 'Change password',
66
- description: 'Change password for an existing user',
67
- body: { $ref: 'authChangePasswordBodySchema#' },
68
- response: {
69
- 200: { $ref: 'defaultResponse#' }
70
- }
71
- }
72
- },
73
- {
74
- method: 'POST',
75
- path: '/forgot-password',
76
- roles: [],
77
- handler: 'auth.forgotPassword',
78
- middlewares: ['global.preForgotPasswordHandler', 'global.dispatchForgotPasswordLink'],
79
- config: {
80
- title: 'Forgot password',
81
- description: 'Forgot password for an existing user given the email or username',
82
- body: { $ref: 'authForgotPasswordBodySchema#' },
83
- response: {
84
- 200: { $ref: 'defaultResponse#' }
85
- }
86
- }
87
- },
88
- {
89
- method: 'POST',
90
- path: '/confirm-email',
91
- roles: [],
92
- handler: 'auth.confirmEmail',
93
- middlewares: [],
94
- config: {
95
- title: 'Confirm email',
96
- description: 'Confirm email for an existing user',
97
- body: { $ref: 'onlyCodeSchema#' },
98
- response: {
99
- 200: { $ref: 'defaultResponse#' }
100
- }
101
- }
102
- },
103
- {
104
- method: 'POST',
105
- path: '/reset-password',
106
- roles: [],
107
- handler: 'auth.resetPassword',
108
- middlewares: [],
109
- config: {
110
- title: 'Reset password',
111
- description: 'Reset password for an existing user given the reset token',
112
- body: { $ref: 'resetPasswordBodySchema#' },
113
- response: {
114
- 200: { $ref: 'defaultResponse#' }
115
- }
116
- }
117
- },
118
- {
119
- method: 'POST',
120
- path: '/login',
121
- roles: [],
122
- handler: 'auth.login',
123
- middlewares: ['global.preAuth', 'global.postAuth'],
124
- config: {
125
- title: 'Login',
126
- description: 'Basic login authentication',
127
- body: { $ref: 'authLoginBodySchema#' },
128
- response: {
129
- 200: { $ref: 'authLoginResponseSchema#' }
130
- }
131
- }
132
- },
133
- {
134
- method: 'POST',
135
- path: '/refresh-token',
136
- roles: [],
137
- handler: 'auth.refreshToken',
138
- middlewares: [],
139
- config: {
140
- title: 'Refresh authentication token',
141
- description: 'Refresh login authentication token',
142
- body: { $ref: 'authRefreshTokenBodySchema#' },
143
- response: {
144
- 200: { $ref: 'authRefreshTokenResponseSchema#' }
145
- }
146
- }
147
- },
148
- {
149
- method: 'POST',
150
- path: '/invalidate-tokens',
151
- roles: [],
152
- handler: 'auth.invalidateTokens',
153
- middlewares: ['global.isAuthenticated'],
154
- config: {
155
- title: 'Invalidate all tokens',
156
- description: 'Invalidate all tokens',
157
- response: {
158
- 200: { $ref: 'defaultResponse#' }
159
- }
160
- }
161
- },
162
- {
163
- method: 'POST',
164
- path: '/block/:id',
165
- roles: [roles.admin, roles.backoffice],
166
- handler: 'auth.block',
167
- middlewares: ['global.isAuthenticated'],
168
- config: {
169
- title: 'Block a user by id',
170
- description: 'Block a user by id',
171
- params: { $ref: 'onlyIdSchema#' },
172
- body: { $ref: 'blockBodySchema#' },
173
- response: {
174
- 200: { $ref: 'defaultResponse#' }
175
- }
176
- }
177
- },
178
- {
179
- method: 'POST',
180
- path: '/unblock/:id',
181
- roles: [roles.admin, roles.backoffice],
182
- handler: 'auth.unblock',
183
- middlewares: ['global.isAuthenticated'],
184
- config: {
185
- title: 'Unblock a user by id',
186
- description: 'Unblock a user by id',
187
- params: { $ref: 'onlyIdSchema#' },
188
- response: {
189
- 200: { $ref: 'defaultResponse#' }
190
- }
191
- }
192
- }
193
- ]
194
- };
195
- //# sourceMappingURL=routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../lib/api/auth/routes.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.check = void 0;
4
- function check(req, reply) {
5
- reply.send({ ok: true });
6
- }
7
- exports.check = check;
8
- //# sourceMappingURL=health.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../../../lib/api/health/controller/health.ts"],"names":[],"mappings":";;;AAEA,SAAgB,KAAK,CAAC,GAAmB,EAAE,KAAmB;IAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;AAC1B,CAAC;AAFD,sBAEC"}
@@ -1,26 +0,0 @@
1
- "use strict";
2
- module.exports = {
3
- config: {
4
- title: 'Health functions',
5
- description: 'Health functions',
6
- controller: 'controller',
7
- tags: ['health']
8
- },
9
- routes: [
10
- {
11
- method: 'GET',
12
- path: '/',
13
- roles: [],
14
- handler: 'health.check',
15
- middlewares: [],
16
- config: {
17
- title: 'Health check service',
18
- description: 'Health check service',
19
- response: {
20
- 200: { $ref: 'defaultResponse#' }
21
- }
22
- }
23
- }
24
- ]
25
- };
26
- //# sourceMappingURL=routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../lib/api/health/routes.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE;QACN,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,kBAAkB;QAC/B,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,CAAC,QAAQ,CAAC;KACjB;IACD,MAAM,EAAE;QACN;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,cAAc;YACvB,WAAW,EAAE,EAAE;YACf,MAAM,EAAE;gBACN,KAAK,EAAE,sBAAsB;gBAC7B,WAAW,EAAE,sBAAsB;gBACnC,QAAQ,EAAE;oBACR,GAAG,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;iBAClC;aACF;SACF;KACF;CACF,CAAA"}