@volcanicminds/backend 2.0.4 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/README.md +8 -7
  2. package/dist/index.d.ts +7 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +161 -210
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/api/auth/controller/auth.d.ts +35 -0
  7. package/dist/lib/api/auth/controller/auth.d.ts.map +1 -0
  8. package/dist/lib/api/auth/controller/auth.js +245 -333
  9. package/dist/lib/api/auth/controller/auth.js.map +1 -1
  10. package/dist/lib/api/auth/routes.d.ts +90 -0
  11. package/dist/lib/api/auth/routes.d.ts.map +1 -0
  12. package/dist/lib/api/auth/routes.js +1 -2
  13. package/dist/lib/api/auth/routes.js.map +1 -1
  14. package/dist/lib/api/health/controller/health.d.ts +3 -0
  15. package/dist/lib/api/health/controller/health.d.ts.map +1 -0
  16. package/dist/lib/api/health/controller/health.js +1 -4
  17. package/dist/lib/api/health/controller/health.js.map +1 -1
  18. package/dist/lib/api/health/routes.d.ts +26 -0
  19. package/dist/lib/api/health/routes.d.ts.map +1 -0
  20. package/dist/lib/api/health/routes.js +1 -2
  21. package/dist/lib/api/health/routes.js.map +1 -1
  22. package/dist/lib/api/token/controller/token.d.ts +16 -0
  23. package/dist/lib/api/token/controller/token.d.ts.map +1 -0
  24. package/dist/lib/api/token/controller/token.js +69 -105
  25. package/dist/lib/api/token/controller/token.js.map +1 -1
  26. package/dist/lib/api/token/routes.d.ts +179 -0
  27. package/dist/lib/api/token/routes.d.ts.map +1 -0
  28. package/dist/lib/api/token/routes.js +1 -2
  29. package/dist/lib/api/token/routes.js.map +1 -1
  30. package/dist/lib/api/tool/controller/tool.d.ts +3 -0
  31. package/dist/lib/api/tool/controller/tool.d.ts.map +1 -0
  32. package/dist/lib/api/tool/controller/tool.js +8 -22
  33. package/dist/lib/api/tool/controller/tool.js.map +1 -1
  34. package/dist/lib/api/tool/routes.d.ts +26 -0
  35. package/dist/lib/api/tool/routes.d.ts.map +1 -0
  36. package/dist/lib/api/tool/routes.js +1 -2
  37. package/dist/lib/api/tool/routes.js.map +1 -1
  38. package/dist/lib/api/users/controller/user.d.ts +12 -0
  39. package/dist/lib/api/users/controller/user.d.ts.map +1 -0
  40. package/dist/lib/api/users/controller/user.js +59 -112
  41. package/dist/lib/api/users/controller/user.js.map +1 -1
  42. package/dist/lib/api/users/routes.d.ts +173 -0
  43. package/dist/lib/api/users/routes.d.ts.map +1 -0
  44. package/dist/lib/api/users/routes.js +1 -2
  45. package/dist/lib/api/users/routes.js.map +1 -1
  46. package/dist/lib/apollo/context.d.ts +6 -0
  47. package/dist/lib/apollo/context.d.ts.map +1 -0
  48. package/dist/lib/apollo/context.js +2 -16
  49. package/dist/lib/apollo/context.js.map +1 -1
  50. package/dist/lib/apollo/resolvers.d.ts +8 -0
  51. package/dist/lib/apollo/resolvers.d.ts.map +1 -0
  52. package/dist/lib/apollo/resolvers.js +1 -2
  53. package/dist/lib/apollo/resolvers.js.map +1 -1
  54. package/dist/lib/apollo/type-defs.d.ts +3 -0
  55. package/dist/lib/apollo/type-defs.d.ts.map +1 -0
  56. package/dist/lib/apollo/type-defs.js +1 -2
  57. package/dist/lib/apollo/type-defs.js.map +1 -1
  58. package/dist/lib/config/general.d.ts +12 -0
  59. package/dist/lib/config/general.d.ts.map +1 -0
  60. package/dist/lib/config/general.js +1 -2
  61. package/dist/lib/config/general.js.map +1 -1
  62. package/dist/lib/config/plugins.d.ts +25 -0
  63. package/dist/lib/config/plugins.d.ts.map +1 -0
  64. package/dist/lib/config/plugins.js +1 -2
  65. package/dist/lib/config/plugins.js.map +1 -1
  66. package/dist/lib/config/roles.d.ts +7 -0
  67. package/dist/lib/config/roles.d.ts.map +1 -0
  68. package/dist/lib/config/roles.js +1 -2
  69. package/dist/lib/config/roles.js.map +1 -1
  70. package/dist/lib/config/tracking.d.ts +10 -0
  71. package/dist/lib/config/tracking.d.ts.map +1 -0
  72. package/dist/lib/config/tracking.js +1 -2
  73. package/dist/lib/config/tracking.js.map +1 -1
  74. package/dist/lib/hooks/onError.d.ts +3 -0
  75. package/dist/lib/hooks/onError.d.ts.map +1 -0
  76. package/dist/lib/hooks/onError.js +2 -12
  77. package/dist/lib/hooks/onError.js.map +1 -1
  78. package/dist/lib/hooks/onRequest.d.ts +3 -0
  79. package/dist/lib/hooks/onRequest.d.ts.map +1 -0
  80. package/dist/lib/hooks/onRequest.js +24 -35
  81. package/dist/lib/hooks/onRequest.js.map +1 -1
  82. package/dist/lib/hooks/onResponse.d.ts +3 -0
  83. package/dist/lib/hooks/onResponse.d.ts.map +1 -0
  84. package/dist/lib/hooks/onResponse.js +2 -12
  85. package/dist/lib/hooks/onResponse.js.map +1 -1
  86. package/dist/lib/hooks/preHandler.d.ts +3 -0
  87. package/dist/lib/hooks/preHandler.d.ts.map +1 -0
  88. package/dist/lib/hooks/preHandler.js +3 -47
  89. package/dist/lib/hooks/preHandler.js.map +1 -1
  90. package/dist/lib/hooks/preSerialization.d.ts +3 -0
  91. package/dist/lib/hooks/preSerialization.d.ts.map +1 -0
  92. package/dist/lib/hooks/preSerialization.js +6 -53
  93. package/dist/lib/hooks/preSerialization.js.map +1 -1
  94. package/dist/lib/loader/general.d.ts +3 -0
  95. package/dist/lib/loader/general.d.ts.map +1 -0
  96. package/dist/lib/loader/general.js +15 -13
  97. package/dist/lib/loader/general.js.map +1 -1
  98. package/dist/lib/loader/hooks.d.ts +2 -0
  99. package/dist/lib/loader/hooks.d.ts.map +1 -0
  100. package/dist/lib/loader/hooks.js +11 -13
  101. package/dist/lib/loader/hooks.js.map +1 -1
  102. package/dist/lib/loader/plugins.d.ts +2 -0
  103. package/dist/lib/loader/plugins.d.ts.map +1 -0
  104. package/dist/lib/loader/plugins.js +11 -12
  105. package/dist/lib/loader/plugins.js.map +1 -1
  106. package/dist/lib/loader/roles.d.ts +3 -0
  107. package/dist/lib/loader/roles.d.ts.map +1 -0
  108. package/dist/lib/loader/roles.js +11 -12
  109. package/dist/lib/loader/roles.js.map +1 -1
  110. package/dist/lib/loader/router.d.ts +4 -0
  111. package/dist/lib/loader/router.d.ts.map +1 -0
  112. package/dist/lib/loader/router.js +68 -117
  113. package/dist/lib/loader/router.js.map +1 -1
  114. package/dist/lib/loader/schedules.d.ts +3 -0
  115. package/dist/lib/loader/schedules.d.ts.map +1 -0
  116. package/dist/lib/loader/schedules.js +18 -25
  117. package/dist/lib/loader/schedules.js.map +1 -1
  118. package/dist/lib/loader/schemas.d.ts +2 -0
  119. package/dist/lib/loader/schemas.d.ts.map +1 -0
  120. package/dist/lib/loader/schemas.js +10 -12
  121. package/dist/lib/loader/schemas.js.map +1 -1
  122. package/dist/lib/loader/tracking.d.ts +6 -0
  123. package/dist/lib/loader/tracking.d.ts.map +1 -0
  124. package/dist/lib/loader/tracking.js +17 -19
  125. package/dist/lib/loader/tracking.js.map +1 -1
  126. package/dist/lib/loader/translation.d.ts +2 -0
  127. package/dist/lib/loader/translation.d.ts.map +1 -0
  128. package/dist/lib/loader/translation.js +11 -10
  129. package/dist/lib/loader/translation.js.map +1 -1
  130. package/dist/lib/middleware/dispatchForgotPasswordLink.d.ts +3 -0
  131. package/dist/lib/middleware/dispatchForgotPasswordLink.d.ts.map +1 -0
  132. package/dist/lib/middleware/dispatchForgotPasswordLink.js +2 -16
  133. package/dist/lib/middleware/dispatchForgotPasswordLink.js.map +1 -1
  134. package/dist/lib/middleware/isAdmin.d.ts +3 -0
  135. package/dist/lib/middleware/isAdmin.d.ts.map +1 -0
  136. package/dist/lib/middleware/isAdmin.js +1 -4
  137. package/dist/lib/middleware/isAdmin.js.map +1 -1
  138. package/dist/lib/middleware/isAuthenticated.d.ts +3 -0
  139. package/dist/lib/middleware/isAuthenticated.d.ts.map +1 -0
  140. package/dist/lib/middleware/isAuthenticated.js +2 -6
  141. package/dist/lib/middleware/isAuthenticated.js.map +1 -1
  142. package/dist/lib/middleware/postAuth.d.ts +3 -0
  143. package/dist/lib/middleware/postAuth.d.ts.map +1 -0
  144. package/dist/lib/middleware/postAuth.js +2 -16
  145. package/dist/lib/middleware/postAuth.js.map +1 -1
  146. package/dist/lib/middleware/preAuth.d.ts +3 -0
  147. package/dist/lib/middleware/preAuth.d.ts.map +1 -0
  148. package/dist/lib/middleware/preAuth.js +1 -15
  149. package/dist/lib/middleware/preAuth.js.map +1 -1
  150. package/dist/lib/middleware/preForgotPasswordHandler.d.ts +3 -0
  151. package/dist/lib/middleware/preForgotPasswordHandler.d.ts.map +1 -0
  152. package/dist/lib/middleware/preForgotPasswordHandler.js +1 -15
  153. package/dist/lib/middleware/preForgotPasswordHandler.js.map +1 -1
  154. package/dist/lib/schedules/test.job.d.ts +4 -0
  155. package/dist/lib/schedules/test.job.d.ts.map +1 -0
  156. package/dist/lib/schedules/test.job.js +3 -18
  157. package/dist/lib/schedules/test.job.js.map +1 -1
  158. package/dist/lib/schemas/auth.d.ts +175 -0
  159. package/dist/lib/schemas/auth.d.ts.map +1 -0
  160. package/dist/lib/schemas/auth.js +9 -12
  161. package/dist/lib/schemas/auth.js.map +1 -1
  162. package/dist/lib/schemas/common.d.ts +81 -0
  163. package/dist/lib/schemas/common.d.ts.map +1 -0
  164. package/dist/lib/schemas/common.js +6 -9
  165. package/dist/lib/schemas/common.js.map +1 -1
  166. package/dist/lib/schemas/global.d.ts +29 -0
  167. package/dist/lib/schemas/global.d.ts.map +1 -0
  168. package/dist/lib/schemas/global.js +2 -5
  169. package/dist/lib/schemas/global.js.map +1 -1
  170. package/dist/lib/schemas/token.d.ts +68 -0
  171. package/dist/lib/schemas/token.d.ts.map +1 -0
  172. package/dist/lib/schemas/token.js +3 -6
  173. package/dist/lib/schemas/token.js.map +1 -1
  174. package/dist/lib/schemas/user.d.ts +120 -0
  175. package/dist/lib/schemas/user.d.ts.map +1 -0
  176. package/dist/lib/schemas/user.js +5 -8
  177. package/dist/lib/schemas/user.js.map +1 -1
  178. package/dist/lib/util/common.d.ts +5 -0
  179. package/dist/lib/util/common.d.ts.map +1 -0
  180. package/dist/lib/util/common.js +4 -8
  181. package/dist/lib/util/common.js.map +1 -1
  182. package/dist/lib/util/errors.d.ts +15 -0
  183. package/dist/lib/util/errors.d.ts.map +1 -0
  184. package/dist/lib/util/errors.js +7 -7
  185. package/dist/lib/util/errors.js.map +1 -1
  186. package/dist/lib/util/generate.d.ts +2 -0
  187. package/dist/lib/util/generate.d.ts.map +1 -0
  188. package/dist/lib/util/generate.js +2 -5
  189. package/dist/lib/util/generate.js.map +1 -1
  190. package/dist/lib/util/logger.d.ts +35 -0
  191. package/dist/lib/util/logger.d.ts.map +1 -0
  192. package/dist/lib/util/logger.js +8 -12
  193. package/dist/lib/util/logger.js.map +1 -1
  194. package/dist/lib/util/mark.d.ts +2 -0
  195. package/dist/lib/util/mark.d.ts.map +1 -0
  196. package/dist/lib/util/mark.js +2 -4
  197. package/dist/lib/util/mark.js.map +1 -1
  198. package/dist/lib/util/path.d.ts +2 -0
  199. package/dist/lib/util/path.d.ts.map +1 -0
  200. package/dist/lib/util/path.js +5 -5
  201. package/dist/lib/util/path.js.map +1 -1
  202. package/dist/lib/util/regexp.d.ts +12 -0
  203. package/dist/lib/util/regexp.d.ts.map +1 -0
  204. package/dist/lib/util/regexp.js +11 -14
  205. package/dist/lib/util/regexp.js.map +1 -1
  206. package/dist/lib/util/require.d.ts +3 -0
  207. package/dist/lib/util/require.d.ts.map +1 -0
  208. package/dist/lib/util/require.js +4 -0
  209. package/dist/lib/util/require.js.map +1 -0
  210. package/dist/lib/util/tracker.d.ts +4 -0
  211. package/dist/lib/util/tracker.d.ts.map +1 -0
  212. package/dist/lib/util/tracker.js +63 -86
  213. package/dist/lib/util/tracker.js.map +1 -1
  214. package/dist/lib/util/yn.d.ts +2 -0
  215. package/dist/lib/util/yn.d.ts.map +1 -0
  216. package/dist/lib/util/yn.js +1 -3
  217. package/dist/lib/util/yn.js.map +1 -1
  218. package/dist/server.d.ts +2 -0
  219. package/dist/server.d.ts.map +1 -0
  220. package/dist/server.js +1 -2
  221. package/dist/server.js.map +1 -1
  222. package/lib/api/auth/controller/auth.ts +1 -1
  223. package/lib/api/auth/routes.ts +1 -1
  224. package/lib/api/health/routes.ts +1 -1
  225. package/lib/api/token/routes.ts +1 -1
  226. package/lib/api/tool/routes.ts +1 -1
  227. package/lib/api/users/controller/user.ts +2 -2
  228. package/lib/api/users/routes.ts +1 -1
  229. package/lib/apollo/resolvers.ts +1 -1
  230. package/lib/config/general.ts +1 -3
  231. package/lib/config/plugins.ts +1 -3
  232. package/lib/config/roles.ts +1 -1
  233. package/lib/config/tracking.ts +1 -1
  234. package/lib/hooks/onError.ts +1 -1
  235. package/lib/hooks/onRequest.ts +8 -6
  236. package/lib/hooks/onResponse.ts +1 -1
  237. package/lib/hooks/preHandler.ts +2 -2
  238. package/lib/hooks/preSerialization.ts +2 -2
  239. package/lib/loader/general.ts +13 -9
  240. package/lib/loader/hooks.ts +5 -5
  241. package/lib/loader/plugins.ts +14 -10
  242. package/lib/loader/roles.ts +14 -9
  243. package/lib/loader/router.ts +7 -6
  244. package/lib/loader/schedules.ts +6 -6
  245. package/lib/loader/schemas.ts +6 -6
  246. package/lib/loader/tracking.ts +14 -9
  247. package/lib/loader/translation.ts +9 -14
  248. package/lib/schedules/test.job.ts +1 -1
  249. package/lib/util/common.ts +1 -1
  250. package/lib/util/generate.ts +1 -1
  251. package/lib/util/logger.ts +1 -1
  252. package/lib/util/mark.ts +1 -0
  253. package/lib/util/path.ts +6 -1
  254. package/lib/util/require.ts +3 -0
  255. package/lib/util/tracker.ts +1 -1
  256. package/package.json +24 -15
  257. package/.dockerignore +0 -6
  258. package/.mocharc.json +0 -3
  259. package/.nvmrc +0 -1
  260. package/.prettierignore +0 -5
  261. package/.prettierrc +0 -9
  262. package/DOCKER.md +0 -27
  263. package/Dockerfile +0 -24
  264. package/Dockerfile.prod +0 -33
  265. package/NPM.md +0 -24
  266. package/TODO.md +0 -14
  267. package/combine.js +0 -124
  268. package/dist/lib/locales/en.json +0 -12
  269. package/dist/lib/locales/it.json +0 -12
  270. package/dist/nodemon.json +0 -7
  271. package/dist/package-lock.json +0 -9787
  272. package/dist/package.json +0 -108
  273. package/dist/tsconfig.json +0 -32
  274. package/index.d.ts +0 -16
  275. package/index.ts +0 -410
  276. package/logo-dark.png +0 -0
  277. package/nodemon.json +0 -7
  278. package/server.ts +0 -5
  279. package/test/common/api.ts +0 -80
  280. package/test/common/bootstrap.ts +0 -33
  281. package/test/demo/demo.ts +0 -9
  282. package/test/demo/index.ts +0 -14
  283. package/test/e2e/index.ts +0 -14
  284. package/test/index.spec.ts +0 -20
  285. package/test/unit/index.ts +0 -14
  286. package/test/unit/semver.ts +0 -24
  287. package/test/unit/translation.ts +0 -77
  288. package/tsconfig.json +0 -40
  289. package/types/global.d.ts +0 -225
@@ -1,347 +1,259 @@
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 () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
- return new (P || (P = Promise))(function (resolve, reject) {
38
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
- step((generator = generator.apply(thisArg, _arguments || [])).next());
42
- });
43
- };
44
- var __rest = (this && this.__rest) || function (s, e) {
45
- var t = {};
46
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
47
- t[p] = s[p];
48
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
49
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
50
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
51
- t[p[i]] = s[p[i]];
52
- }
53
- return t;
54
- };
55
- Object.defineProperty(exports, "__esModule", { value: true });
56
- exports.register = register;
57
- exports.unregister = unregister;
58
- exports.validatePassword = validatePassword;
59
- exports.changePassword = changePassword;
60
- exports.forgotPassword = forgotPassword;
61
- exports.confirmEmail = confirmEmail;
62
- exports.resetPassword = resetPassword;
63
- exports.login = login;
64
- exports.refreshToken = refreshToken;
65
- exports.invalidateTokens = invalidateTokens;
66
- exports.block = block;
67
- exports.unblock = unblock;
68
- const regExp = __importStar(require("../../../util/regexp"));
69
- function register(req, reply) {
70
- return __awaiter(this, void 0, void 0, function* () {
71
- var _a, _b, _c;
72
- const _d = req.data(), { password1: password, password2 } = _d, data = __rest(_d, ["password1", "password2"]);
73
- if (!req.server['userManager'].isImplemented()) {
74
- throw new Error('Not implemented');
75
- }
76
- if (!data.username) {
77
- return reply.status(400).send(new Error('Username not valid'));
78
- }
79
- if (!data.email || !regExp.email.test(data.email)) {
80
- return reply.status(400).send(new Error('Email not valid'));
81
- }
82
- if (!password || !regExp.password.test(password)) {
83
- return reply.status(400).send(new Error('Password not valid'));
84
- }
85
- if (!password2 || password2 !== password) {
86
- return reply.status(400).send(new Error('Repeated password not match'));
87
- }
88
- let existings = yield req.server['userManager'].retrieveUserByEmail(data.email);
89
- if (existings) {
90
- return reply.status(400).send(new Error('Email already registered'));
91
- }
92
- if ((data.requiredRoles || []).includes('admin')) {
93
- existings = yield req.server['userManager'].findQuery({ 'roles:in': 'admin' });
94
- if ((_a = existings === null || existings === void 0 ? void 0 : existings.records) === null || _a === void 0 ? void 0 : _a.length) {
95
- return reply.status(400).send(new Error('User admin already registered'));
96
- }
97
- }
98
- const publicRole = ((_c = (_b = global.roles) === null || _b === void 0 ? void 0 : _b.public) === null || _c === void 0 ? void 0 : _c.code) || 'public';
99
- data.roles = (data.requiredRoles || []).map((r) => { var _a; return (_a = global.roles[r]) === null || _a === void 0 ? void 0 : _a.code; }).filter((r) => !!r);
100
- if (!data.roles.includes(publicRole)) {
101
- data.roles.push(publicRole);
102
- }
103
- const user = yield req.server['userManager'].createUser(Object.assign(Object.assign({}, data), { password: password }));
104
- if (!user) {
105
- return reply.status(400).send(new Error('User not registered'));
1
+ import * as regExp from '../../../util/regexp.js';
2
+ export async function register(req, reply) {
3
+ const { password1: password, password2, ...data } = req.data();
4
+ if (!req.server['userManager'].isImplemented()) {
5
+ throw new Error('Not implemented');
6
+ }
7
+ if (!data.username) {
8
+ return reply.status(400).send(new Error('Username not valid'));
9
+ }
10
+ if (!data.email || !regExp.email.test(data.email)) {
11
+ return reply.status(400).send(new Error('Email not valid'));
12
+ }
13
+ if (!password || !regExp.password.test(password)) {
14
+ return reply.status(400).send(new Error('Password not valid'));
15
+ }
16
+ if (!password2 || password2 !== password) {
17
+ return reply.status(400).send(new Error('Repeated password not match'));
18
+ }
19
+ let existings = await req.server['userManager'].retrieveUserByEmail(data.email);
20
+ if (existings) {
21
+ return reply.status(400).send(new Error('Email already registered'));
22
+ }
23
+ if ((data.requiredRoles || []).includes('admin')) {
24
+ existings = await req.server['userManager'].findQuery({ 'roles:in': 'admin' });
25
+ if (existings?.records?.length) {
26
+ return reply.status(400).send(new Error('User admin already registered'));
106
27
  }
107
- return user;
108
- });
28
+ }
29
+ const publicRole = global.roles?.public?.code || 'public';
30
+ data.roles = (data.requiredRoles || []).map((r) => global.roles[r]?.code).filter((r) => !!r);
31
+ if (!data.roles.includes(publicRole)) {
32
+ data.roles.push(publicRole);
33
+ }
34
+ const user = await req.server['userManager'].createUser({ ...data, password: password });
35
+ if (!user) {
36
+ return reply.status(400).send(new Error('User not registered'));
37
+ }
38
+ return user;
109
39
  }
110
- function unregister(req, reply) {
111
- return __awaiter(this, void 0, void 0, function* () {
112
- const { email, password } = req.data();
113
- let user = yield req.server['userManager'].retrieveUserByPassword(email, password);
114
- let isValid = yield req.server['userManager'].isValidUser(user);
115
- if (!isValid) {
116
- return reply.status(403).send(new Error('Wrong credentials'));
117
- }
118
- if (user.blocked) {
119
- return reply.status(403).send(new Error('User blocked'));
120
- }
121
- user = yield req.server['userManager'].disableUserById(user.getId());
122
- isValid = yield req.server['userManager'].isValidUser(user);
123
- if (!isValid) {
124
- return reply.status(400).send(new Error('User not valid'));
125
- }
126
- return { ok: true };
127
- });
40
+ export async function unregister(req, reply) {
41
+ const { email, password } = req.data();
42
+ let user = await req.server['userManager'].retrieveUserByPassword(email, password);
43
+ let isValid = await req.server['userManager'].isValidUser(user);
44
+ if (!isValid) {
45
+ return reply.status(403).send(new Error('Wrong credentials'));
46
+ }
47
+ if (user.blocked) {
48
+ return reply.status(403).send(new Error('User blocked'));
49
+ }
50
+ user = await req.server['userManager'].disableUserById(user.getId());
51
+ isValid = await req.server['userManager'].isValidUser(user);
52
+ if (!isValid) {
53
+ return reply.status(400).send(new Error('User not valid'));
54
+ }
55
+ return { ok: true };
128
56
  }
129
- function validatePassword(req, reply) {
130
- return __awaiter(this, void 0, void 0, function* () {
131
- const { password } = req.data();
132
- if (!password) {
133
- return reply.status(400).send(new Error('Password cannot be null'));
134
- }
135
- const match = regExp.password.test(password);
136
- if (!match) {
137
- return reply.status(400).send(new Error('Password is not valid'));
138
- }
139
- return { ok: match };
140
- });
57
+ export async function validatePassword(req, reply) {
58
+ const { password } = req.data();
59
+ if (!password) {
60
+ return reply.status(400).send(new Error('Password cannot be null'));
61
+ }
62
+ const match = regExp.password.test(password);
63
+ if (!match) {
64
+ return reply.status(400).send(new Error('Password is not valid'));
65
+ }
66
+ return { ok: match };
141
67
  }
142
- function changePassword(req, reply) {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- const { email, oldPassword, newPassword1, newPassword2 } = req.data();
145
- if (!req.server['userManager'].isImplemented()) {
146
- throw new Error('Not implemented');
147
- }
148
- if (!newPassword1 || !regExp.password.test(newPassword1)) {
149
- return reply.status(400).send(new Error('New password is not valid'));
150
- }
151
- if (!newPassword2 || newPassword2 !== newPassword1) {
152
- return reply.status(400).send(new Error('Repeated new password not match'));
153
- }
154
- let user = yield req.server['userManager'].retrieveUserByPassword(email, oldPassword);
155
- let isValid = yield req.server['userManager'].isValidUser(user);
156
- if (!isValid) {
157
- return reply.status(403).send(new Error('Wrong credentials'));
158
- }
159
- if (user.blocked) {
160
- return reply.status(403).send(new Error('User blocked'));
161
- }
162
- user = yield req.server['userManager'].changePassword(email, newPassword1, oldPassword);
163
- isValid = yield req.server['userManager'].isValidUser(user);
164
- return { ok: isValid };
165
- });
68
+ export async function changePassword(req, reply) {
69
+ const { email, oldPassword, newPassword1, newPassword2 } = req.data();
70
+ if (!req.server['userManager'].isImplemented()) {
71
+ throw new Error('Not implemented');
72
+ }
73
+ if (!newPassword1 || !regExp.password.test(newPassword1)) {
74
+ return reply.status(400).send(new Error('New password is not valid'));
75
+ }
76
+ if (!newPassword2 || newPassword2 !== newPassword1) {
77
+ return reply.status(400).send(new Error('Repeated new password not match'));
78
+ }
79
+ let user = await req.server['userManager'].retrieveUserByPassword(email, oldPassword);
80
+ let isValid = await req.server['userManager'].isValidUser(user);
81
+ if (!isValid) {
82
+ return reply.status(403).send(new Error('Wrong credentials'));
83
+ }
84
+ if (user.blocked) {
85
+ return reply.status(403).send(new Error('User blocked'));
86
+ }
87
+ user = await req.server['userManager'].changePassword(email, newPassword1, oldPassword);
88
+ isValid = await req.server['userManager'].isValidUser(user);
89
+ return { ok: isValid };
166
90
  }
167
- function forgotPassword(req, reply) {
168
- return __awaiter(this, void 0, void 0, function* () {
169
- const { username, email } = req.data();
170
- if (!req.server['userManager'].isImplemented()) {
171
- throw new Error('Not implemented');
172
- }
173
- if (!username && (!email || (email && !regExp.email.test(email)))) {
174
- return reply.status(400).send(new Error('Missing a valid user identifier'));
175
- }
176
- let user = null;
177
- if (email) {
178
- user = yield req.server['userManager'].retrieveUserByEmail(email);
179
- }
180
- else if (username) {
181
- user = yield req.server['userManager'].retrieveUserByUsername(username);
182
- }
183
- let isValid = yield req.server['userManager'].isValidUser(user);
184
- if (!isValid) {
185
- return reply.status(403).send(new Error('Wrong credentials'));
186
- }
187
- if (user === null || user === void 0 ? void 0 : user.blocked) {
188
- return reply.status(403).send(new Error('User blocked'));
189
- }
190
- user = yield req.server['userManager'].forgotPassword(user.email);
191
- isValid = yield req.server['userManager'].isValidUser(user);
192
- return { ok: isValid };
193
- });
91
+ export async function forgotPassword(req, reply) {
92
+ const { username, email } = req.data();
93
+ if (!req.server['userManager'].isImplemented()) {
94
+ throw new Error('Not implemented');
95
+ }
96
+ if (!username && (!email || (email && !regExp.email.test(email)))) {
97
+ return reply.status(400).send(new Error('Missing a valid user identifier'));
98
+ }
99
+ let user = null;
100
+ if (email) {
101
+ user = await req.server['userManager'].retrieveUserByEmail(email);
102
+ }
103
+ else if (username) {
104
+ user = await req.server['userManager'].retrieveUserByUsername(username);
105
+ }
106
+ let isValid = await req.server['userManager'].isValidUser(user);
107
+ if (!isValid) {
108
+ return reply.status(403).send(new Error('Wrong credentials'));
109
+ }
110
+ if (user?.blocked) {
111
+ return reply.status(403).send(new Error('User blocked'));
112
+ }
113
+ user = await req.server['userManager'].forgotPassword(user.email);
114
+ isValid = await req.server['userManager'].isValidUser(user);
115
+ return { ok: isValid };
194
116
  }
195
- function confirmEmail(req, reply) {
196
- return __awaiter(this, void 0, void 0, function* () {
197
- const { code } = req.data();
198
- if (!code) {
199
- return reply.status(400).send(new Error('Missing the confirm email token'));
200
- }
201
- let user = yield req.server['userManager'].retrieveUserByConfirmationToken(code);
202
- let isValid = yield req.server['userManager'].isValidUser(user);
203
- if (!isValid) {
204
- return reply.status(403).send(new Error('Wrong credentials'));
205
- }
206
- if (user.blocked) {
207
- return reply.status(403).send(new Error('User blocked'));
208
- }
209
- user = yield req.server['userManager'].userConfirmation(user);
210
- isValid = yield req.server['userManager'].isValidUser(user);
211
- return { ok: isValid };
212
- });
117
+ export async function confirmEmail(req, reply) {
118
+ const { code } = req.data();
119
+ if (!code) {
120
+ return reply.status(400).send(new Error('Missing the confirm email token'));
121
+ }
122
+ let user = await req.server['userManager'].retrieveUserByConfirmationToken(code);
123
+ let isValid = await req.server['userManager'].isValidUser(user);
124
+ if (!isValid) {
125
+ return reply.status(403).send(new Error('Wrong credentials'));
126
+ }
127
+ if (user.blocked) {
128
+ return reply.status(403).send(new Error('User blocked'));
129
+ }
130
+ user = await req.server['userManager'].userConfirmation(user);
131
+ isValid = await req.server['userManager'].isValidUser(user);
132
+ return { ok: isValid };
213
133
  }
214
- function resetPassword(req, reply) {
215
- return __awaiter(this, void 0, void 0, function* () {
216
- const { code, newPassword1, newPassword2 } = req.data();
217
- if (!req.server['userManager'].isImplemented()) {
218
- throw new Error('Not implemented');
219
- }
220
- if (!newPassword1 || !regExp.password.test(newPassword1)) {
221
- return reply.status(400).send(new Error('New password not valid'));
222
- }
223
- if (!newPassword2 || newPassword2 !== newPassword1) {
224
- return reply.status(400).send(new Error('Repeated new password not match'));
225
- }
226
- let user = yield req.server['userManager'].retrieveUserByResetPasswordToken(code);
227
- let isValid = yield req.server['userManager'].isValidUser(user);
228
- if (!isValid) {
229
- return reply.status(403).send(new Error('Wrong credentials'));
230
- }
231
- if (user.blocked) {
232
- return reply.status(403).send(new Error('User blocked'));
233
- }
234
- user = yield req.server['userManager'].resetPassword(user, newPassword1);
235
- isValid = yield req.server['userManager'].isValidUser(user);
236
- return { ok: isValid, user };
237
- });
134
+ export async function resetPassword(req, reply) {
135
+ const { code, newPassword1, newPassword2 } = req.data();
136
+ if (!req.server['userManager'].isImplemented()) {
137
+ throw new Error('Not implemented');
138
+ }
139
+ if (!newPassword1 || !regExp.password.test(newPassword1)) {
140
+ return reply.status(400).send(new Error('New password not valid'));
141
+ }
142
+ if (!newPassword2 || newPassword2 !== newPassword1) {
143
+ return reply.status(400).send(new Error('Repeated new password not match'));
144
+ }
145
+ let user = await req.server['userManager'].retrieveUserByResetPasswordToken(code);
146
+ let isValid = await req.server['userManager'].isValidUser(user);
147
+ if (!isValid) {
148
+ return reply.status(403).send(new Error('Wrong credentials'));
149
+ }
150
+ if (user.blocked) {
151
+ return reply.status(403).send(new Error('User blocked'));
152
+ }
153
+ user = await req.server['userManager'].resetPassword(user, newPassword1);
154
+ isValid = await req.server['userManager'].isValidUser(user);
155
+ return { ok: isValid, user };
238
156
  }
239
- function login(req, reply) {
240
- return __awaiter(this, void 0, void 0, function* () {
241
- var _a, _b;
242
- const { email, password } = req.data();
243
- if (!req.server['userManager'].isImplemented()) {
244
- throw new Error('Not implemented');
245
- }
246
- if (!email || !regExp.email.test(email)) {
247
- return reply.status(400).send(new Error('Email not valid'));
248
- }
249
- if (!password || !regExp.password.test(password)) {
250
- return reply.status(400).send(new Error('Password not valid'));
251
- }
252
- let user = yield req.server['userManager'].retrieveUserByPassword(email, password);
253
- if (!user) {
254
- return reply.status(403).send(new Error('Wrong credentials'));
255
- }
256
- const isValid = yield req.server['userManager'].isValidUser(user);
257
- if (!isValid) {
258
- return reply.status(403).send(new Error('Wrong credentials'));
259
- }
260
- if (!(user.confirmed === true)) {
261
- return reply.status(403).send(new Error('User email unconfirmed'));
262
- }
263
- const isPasswordToBeChanged = req.server['userManager'].isPasswordToBeChanged(user);
264
- if (isPasswordToBeChanged) {
265
- return reply.status(403).send({ statusCode: 403, code: 'PASSWORD_TO_BE_CHANGED', message: 'Password is expired' });
266
- }
267
- if (user.blocked) {
268
- return reply.status(403).send(new Error('User blocked'));
269
- }
270
- if (config.enable && config.options.reset_external_id_on_login) {
271
- user = yield req.server['userManager'].resetExternalId(user.getId());
272
- }
273
- const token = yield reply.jwtSign({ sub: user.externalId });
274
- const refreshToken = reply.server.jwt['refreshToken']
275
- ? yield reply.server.jwt['refreshToken'].sign({ sub: user.externalId })
276
- : undefined;
277
- 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 });
278
- });
157
+ export async function login(req, reply) {
158
+ const { email, password } = req.data();
159
+ if (!req.server['userManager'].isImplemented()) {
160
+ throw new Error('Not implemented');
161
+ }
162
+ if (!email || !regExp.email.test(email)) {
163
+ return reply.status(400).send(new Error('Email not valid'));
164
+ }
165
+ if (!password || !regExp.password.test(password)) {
166
+ return reply.status(400).send(new Error('Password not valid'));
167
+ }
168
+ let user = await req.server['userManager'].retrieveUserByPassword(email, password);
169
+ if (!user) {
170
+ return reply.status(403).send(new Error('Wrong credentials'));
171
+ }
172
+ const isValid = await req.server['userManager'].isValidUser(user);
173
+ if (!isValid) {
174
+ return reply.status(403).send(new Error('Wrong credentials'));
175
+ }
176
+ if (!(user.confirmed === true)) {
177
+ return reply.status(403).send(new Error('User email unconfirmed'));
178
+ }
179
+ const isPasswordToBeChanged = req.server['userManager'].isPasswordToBeChanged(user);
180
+ if (isPasswordToBeChanged) {
181
+ return reply.status(403).send({ statusCode: 403, code: 'PASSWORD_TO_BE_CHANGED', message: 'Password is expired' });
182
+ }
183
+ if (user.blocked) {
184
+ return reply.status(403).send(new Error('User blocked'));
185
+ }
186
+ if (config.enable && config.options.reset_external_id_on_login) {
187
+ user = await req.server['userManager'].resetExternalId(user.getId());
188
+ }
189
+ const token = await reply.jwtSign({ sub: user.externalId });
190
+ const refreshToken = reply.server.jwt['refreshToken']
191
+ ? await reply.server.jwt['refreshToken'].sign({ sub: user.externalId })
192
+ : undefined;
193
+ return {
194
+ ...user,
195
+ roles: (user.roles || [global.role?.public?.code || 'public']).map((r) => r?.code || r),
196
+ token: token,
197
+ refreshToken
198
+ };
279
199
  }
280
- function refreshToken(req, reply) {
281
- return __awaiter(this, void 0, void 0, function* () {
282
- const { token, refreshToken } = req.data();
283
- if (!req.server['userManager'].isImplemented()) {
284
- throw new Error('Not implemented');
285
- }
286
- const tokenData = (yield reply.server.jwt.decode(token));
287
- const minAccettable = Math.floor(Date.now() / 1000) - 2592000;
288
- if ((tokenData === null || tokenData === void 0 ? void 0 : tokenData.sub) > 0 && (tokenData === null || tokenData === void 0 ? void 0 : tokenData.sub) > minAccettable) {
289
- return reply.status(403).send(new Error('Token too old'));
290
- }
291
- const refreshTokenData = yield reply.server.jwt['refreshToken'].verify(refreshToken);
292
- 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)) {
293
- return reply.status(403).send(new Error('Mismatched tokens'));
294
- }
295
- const user = yield req.server['userManager'].retrieveUserByExternalId(tokenData.sub);
296
- const isValid = yield req.server['userManager'].isValidUser(user);
297
- if (!isValid) {
298
- return reply.status(403).send(new Error('Wrong refresh token'));
299
- }
300
- const newToken = yield reply.jwtSign({ sub: user.externalId });
301
- return {
302
- token: newToken
303
- };
304
- });
200
+ export async function refreshToken(req, reply) {
201
+ const { token, refreshToken } = req.data();
202
+ if (!req.server['userManager'].isImplemented()) {
203
+ throw new Error('Not implemented');
204
+ }
205
+ const tokenData = (await reply.server.jwt.decode(token));
206
+ const minAccettable = Math.floor(Date.now() / 1000) - 2592000;
207
+ if (tokenData?.sub > 0 && tokenData?.sub > minAccettable) {
208
+ return reply.status(403).send(new Error('Token too old'));
209
+ }
210
+ const refreshTokenData = await reply.server.jwt['refreshToken'].verify(refreshToken);
211
+ if (tokenData?.sub && tokenData?.sub !== refreshTokenData?.sub) {
212
+ return reply.status(403).send(new Error('Mismatched tokens'));
213
+ }
214
+ const user = await req.server['userManager'].retrieveUserByExternalId(tokenData.sub);
215
+ const isValid = await req.server['userManager'].isValidUser(user);
216
+ if (!isValid) {
217
+ return reply.status(403).send(new Error('Wrong refresh token'));
218
+ }
219
+ const newToken = await reply.jwtSign({ sub: user.externalId });
220
+ return {
221
+ token: newToken
222
+ };
305
223
  }
306
- function invalidateTokens(req, reply) {
307
- return __awaiter(this, void 0, void 0, function* () {
308
- let isValid = yield req.server['userManager'].isValidUser(req.user);
309
- if (!req.user || !isValid) {
310
- return reply.status(403).send(new Error('User not linked'));
311
- }
312
- const user = yield req.server['userManager'].resetExternalId(req.user.getId());
313
- isValid = yield req.server['userManager'].isValidUser(user);
314
- return { ok: isValid };
315
- });
224
+ export async function invalidateTokens(req, reply) {
225
+ let isValid = await req.server['userManager'].isValidUser(req.user);
226
+ if (!req.user || !isValid) {
227
+ return reply.status(403).send(new Error('User not linked'));
228
+ }
229
+ const user = await req.server['userManager'].resetExternalId(req.user.getId());
230
+ isValid = await req.server['userManager'].isValidUser(user);
231
+ return { ok: isValid };
316
232
  }
317
- function block(req, reply) {
318
- return __awaiter(this, void 0, void 0, function* () {
319
- if (!req.server['userManager'].isImplemented()) {
320
- throw new Error('Not implemented');
321
- }
322
- if (!req.hasRole(roles.admin) && !req.hasRole(roles.backoffice)) {
323
- return reply.status(403).send({ statusCode: 403, code: 'ROLE_NOT_ALLOWED', message: 'Not allowed to block a user' });
324
- }
325
- const { id: userId } = req.parameters();
326
- const { reason } = req.data();
327
- let user = yield req.server['userManager'].blockUserById(userId, reason);
328
- user = yield req.server['userManager'].resetExternalId(user.getId());
329
- return { ok: !!user.getId() };
330
- });
233
+ export async function block(req, reply) {
234
+ if (!req.server['userManager'].isImplemented()) {
235
+ throw new Error('Not implemented');
236
+ }
237
+ if (!req.hasRole(roles.admin) && !req.hasRole(roles.backoffice)) {
238
+ return reply.status(403).send({ statusCode: 403, code: 'ROLE_NOT_ALLOWED', message: 'Not allowed to block a user' });
239
+ }
240
+ const { id: userId } = req.parameters();
241
+ const { reason } = req.data();
242
+ let user = await req.server['userManager'].blockUserById(userId, reason);
243
+ user = await req.server['userManager'].resetExternalId(user.getId());
244
+ return { ok: !!user.getId() };
331
245
  }
332
- function unblock(req, reply) {
333
- return __awaiter(this, void 0, void 0, function* () {
334
- if (!req.server['userManager'].isImplemented()) {
335
- throw new Error('Not implemented');
336
- }
337
- if (!req.hasRole(roles.admin) && !req.hasRole(roles.backoffice)) {
338
- return reply
339
- .status(403)
340
- .send({ statusCode: 403, code: 'ROLE_NOT_ALLOWED', message: 'Not allowed to unblock a user' });
341
- }
342
- const { id: userId } = req.parameters();
343
- const user = yield req.server['userManager'].unblockUserById(userId);
344
- return { ok: !!user.getId() };
345
- });
246
+ export async function unblock(req, reply) {
247
+ if (!req.server['userManager'].isImplemented()) {
248
+ throw new Error('Not implemented');
249
+ }
250
+ if (!req.hasRole(roles.admin) && !req.hasRole(roles.backoffice)) {
251
+ return reply
252
+ .status(403)
253
+ .send({ statusCode: 403, code: 'ROLE_NOT_ALLOWED', message: 'Not allowed to unblock a user' });
254
+ }
255
+ const { id: userId } = req.parameters();
256
+ const user = await req.server['userManager'].unblockUserById(userId);
257
+ return { ok: !!user.getId() };
346
258
  }
347
259
  //# sourceMappingURL=auth.js.map