@volcanicminds/backend 3.6.1 → 4.0.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 (60) hide show
  1. package/README.md +11 -4
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/api/admin/routes.d.ts +1 -1
  6. package/dist/lib/api/admin/routes.d.ts.map +1 -1
  7. package/dist/lib/api/admin/routes.js +1 -1
  8. package/dist/lib/api/admin/routes.js.map +1 -1
  9. package/dist/lib/api/auth/controller/auth.d.ts.map +1 -1
  10. package/dist/lib/api/auth/controller/auth.js +5 -8
  11. package/dist/lib/api/auth/controller/auth.js.map +1 -1
  12. package/dist/lib/api/token/controller/token.d.ts +2 -2
  13. package/dist/lib/api/token/controller/token.d.ts.map +1 -1
  14. package/dist/lib/api/token/controller/token.js +13 -10
  15. package/dist/lib/api/token/controller/token.js.map +1 -1
  16. package/dist/lib/api/token/routes.d.ts +7 -7
  17. package/dist/lib/api/token/routes.js +8 -8
  18. package/dist/lib/api/token/routes.js.map +1 -1
  19. package/dist/lib/api/users/controller/user.d.ts.map +1 -1
  20. package/dist/lib/api/users/controller/user.js +65 -18
  21. package/dist/lib/api/users/controller/user.js.map +1 -1
  22. package/dist/lib/api/users/routes.d.ts +45 -8
  23. package/dist/lib/api/users/routes.d.ts.map +1 -1
  24. package/dist/lib/api/users/routes.js +10 -10
  25. package/dist/lib/api/users/routes.js.map +1 -1
  26. package/dist/lib/config/roles.d.ts.map +1 -1
  27. package/dist/lib/config/roles.js +0 -5
  28. package/dist/lib/config/roles.js.map +1 -1
  29. package/dist/lib/loader/genesis.d.ts +6 -0
  30. package/dist/lib/loader/genesis.d.ts.map +1 -0
  31. package/dist/lib/loader/genesis.js +51 -0
  32. package/dist/lib/loader/genesis.js.map +1 -0
  33. package/dist/lib/loader/roles.d.ts +3 -1
  34. package/dist/lib/loader/roles.d.ts.map +1 -1
  35. package/dist/lib/loader/roles.js +23 -4
  36. package/dist/lib/loader/roles.js.map +1 -1
  37. package/dist/lib/loader/router.d.ts +1 -1
  38. package/dist/lib/loader/router.d.ts.map +1 -1
  39. package/dist/lib/loader/router.js +50 -14
  40. package/dist/lib/loader/router.js.map +1 -1
  41. package/dist/lib/util/authz.d.ts +4 -0
  42. package/dist/lib/util/authz.d.ts.map +1 -0
  43. package/dist/lib/util/authz.js +16 -0
  44. package/dist/lib/util/authz.js.map +1 -0
  45. package/dist/types/global.d.ts +10 -1
  46. package/lib/api/admin/controller/manifest.ts +2 -2
  47. package/lib/api/admin/routes.ts +3 -4
  48. package/lib/api/auth/controller/auth.ts +7 -10
  49. package/lib/api/token/controller/token.ts +20 -12
  50. package/lib/api/token/routes.ts +8 -8
  51. package/lib/api/users/controller/user.ts +101 -22
  52. package/lib/api/users/routes.ts +10 -10
  53. package/lib/config/general.ts +1 -1
  54. package/lib/config/roles.ts +0 -5
  55. package/lib/hooks/onRequest.ts +2 -2
  56. package/lib/loader/genesis.ts +76 -0
  57. package/lib/loader/roles.ts +34 -5
  58. package/lib/loader/router.ts +75 -15
  59. package/lib/util/authz.ts +26 -0
  60. package/package.json +1 -1
@@ -1,4 +1,10 @@
1
1
  import { MfaPolicy } from '../../../config/constants.js';
2
+ import { includesRole, isFounderEmail } from '../../../util/authz.js';
3
+ const forbidden = (reply, message) => reply.status(403).send({ statusCode: 403, error: 'Forbidden', message });
4
+ async function isLastAdmin(req) {
5
+ const total = await req.server['userManager'].countQuery({ 'roles:in': roles.admin.code }, req.runner);
6
+ return Number(total) <= 1;
7
+ }
2
8
  export async function getRoles(_req, reply) {
3
9
  const allRoles = Object.keys(roles).map((key) => roles[key]);
4
10
  return reply.send(allRoles);
@@ -16,17 +22,10 @@ export async function findOne(req, reply) {
16
22
  return user || reply.status(404).send();
17
23
  }
18
24
  export async function create(req, reply) {
19
- if (!req.hasRole(roles.admin)) {
20
- return reply.status(403).send({ statusCode: 403, error: 'Forbidden', message: 'Only admins can create users' });
21
- }
22
25
  const { id: _id, ...data } = req.data();
23
- const roleCodes = (data.roles || []).map((r) => (typeof r === 'string' ? r : r?.code));
24
- if (roleCodes.includes(roles.admin.code)) {
25
- if (config.options?.allow_multiple_admin !== true) {
26
- return reply
27
- .status(403)
28
- .send({ statusCode: 403, error: 'Forbidden', message: 'Cannot assign admin role to a user' });
29
- }
26
+ if (includesRole(data.roles, roles.admin.code) &&
27
+ (!req.hasRole(roles.admin) || config.options?.allow_multiple_admin !== true)) {
28
+ return forbidden(reply, 'Cannot assign the admin role');
30
29
  }
31
30
  const user = await req.server['userManager'].createUser(data, req.runner);
32
31
  if (!user) {
@@ -43,6 +42,29 @@ export async function update(req, reply) {
43
42
  return reply.status(400).send('Missing required id parameter');
44
43
  }
45
44
  const { id: _id, ...userData } = req.data();
45
+ const target = await req.server['userManager'].retrieveUserById(id, req.runner);
46
+ const targetIsAdmin = includesRole(target?.roles, roles.admin.code);
47
+ const changingRoles = Object.prototype.hasOwnProperty.call(userData, 'roles');
48
+ if (isFounderEmail(target?.email)) {
49
+ if (changingRoles && !includesRole(userData.roles, roles.admin.code)) {
50
+ return forbidden(reply, 'Cannot demote the sovereign admin');
51
+ }
52
+ if (typeof userData.email === 'string' &&
53
+ userData.email.trim().toLowerCase() !== (target.email || '').trim().toLowerCase()) {
54
+ return forbidden(reply, 'Cannot change the sovereign admin email');
55
+ }
56
+ }
57
+ if (targetIsAdmin && !req.hasRole(roles.admin)) {
58
+ return forbidden(reply, 'Cannot modify an admin user');
59
+ }
60
+ if (changingRoles &&
61
+ includesRole(userData.roles, roles.admin.code) &&
62
+ (!req.hasRole(roles.admin) || config.options?.allow_multiple_admin !== true)) {
63
+ return forbidden(reply, 'Cannot assign the admin role');
64
+ }
65
+ if (targetIsAdmin && changingRoles && !includesRole(userData.roles, roles.admin.code) && (await isLastAdmin(req))) {
66
+ return forbidden(reply, 'Cannot demote the last admin');
67
+ }
46
68
  return await req.server['userManager'].updateUserById(id, userData, req.runner);
47
69
  }
48
70
  export async function remove(req, reply) {
@@ -50,6 +72,17 @@ export async function remove(req, reply) {
50
72
  if (!id) {
51
73
  return reply.status(404).send();
52
74
  }
75
+ const target = await req.server['userManager'].retrieveUserById(id, req.runner);
76
+ const targetIsAdmin = includesRole(target?.roles, roles.admin.code);
77
+ if (isFounderEmail(target?.email)) {
78
+ return forbidden(reply, 'Cannot delete the sovereign admin');
79
+ }
80
+ if (targetIsAdmin && !req.hasRole(roles.admin)) {
81
+ return forbidden(reply, 'Cannot delete an admin user');
82
+ }
83
+ if (targetIsAdmin && (await isLastAdmin(req))) {
84
+ return forbidden(reply, 'Cannot delete the last admin');
85
+ }
53
86
  return await req.server['userManager'].deleteUser(id, req.runner);
54
87
  }
55
88
  export async function getCurrentUser(req, reply) {
@@ -88,11 +121,19 @@ export async function block(req, reply) {
88
121
  if (!req.server['userManager'].isImplemented()) {
89
122
  throw new Error('Not implemented');
90
123
  }
91
- if (!req.hasRole(roles.admin) && !req.hasRole(roles.backoffice)) {
92
- return reply.status(403).send({ statusCode: 403, code: 'ROLE_NOT_ALLOWED', message: 'Not allowed to block a user' });
93
- }
94
124
  const { id: userId } = req.parameters();
95
125
  const { reason } = req.data();
126
+ const target = await req.server['userManager'].retrieveUserById(userId, req.runner);
127
+ const targetIsAdmin = includesRole(target?.roles, roles.admin.code);
128
+ if (isFounderEmail(target?.email)) {
129
+ return forbidden(reply, 'Cannot block the sovereign admin');
130
+ }
131
+ if (targetIsAdmin && !req.hasRole(roles.admin)) {
132
+ return forbidden(reply, 'Cannot block an admin user');
133
+ }
134
+ if (targetIsAdmin && (await isLastAdmin(req))) {
135
+ return forbidden(reply, 'Cannot block the last admin');
136
+ }
96
137
  let user = await req.server['userManager'].blockUserById(userId, reason, req.runner);
97
138
  user = await req.server['userManager'].resetExternalId(user.getId(), req.runner);
98
139
  return { ok: !!user.getId() };
@@ -101,12 +142,11 @@ export async function unblock(req, reply) {
101
142
  if (!req.server['userManager'].isImplemented()) {
102
143
  throw new Error('Not implemented');
103
144
  }
104
- if (!req.hasRole(roles.admin) && !req.hasRole(roles.backoffice)) {
105
- return reply
106
- .status(403)
107
- .send({ statusCode: 403, code: 'ROLE_NOT_ALLOWED', message: 'Not allowed to unblock a user' });
108
- }
109
145
  const { id: userId } = req.parameters();
146
+ const target = await req.server['userManager'].retrieveUserById(userId, req.runner);
147
+ if (includesRole(target?.roles, roles.admin.code) && !req.hasRole(roles.admin)) {
148
+ return forbidden(reply, 'Cannot unblock an admin user');
149
+ }
110
150
  const user = await req.server['userManager'].unblockUserById(userId, req.runner);
111
151
  return { ok: !!user.getId() };
112
152
  }
@@ -118,6 +158,10 @@ export async function resetMfaByAdmin(req, reply) {
118
158
  if (!id) {
119
159
  return reply.status(400).send({ statusCode: 400, error: 'Bad Request', message: 'Missing user id' });
120
160
  }
161
+ const mfaTarget = await req.server['userManager'].retrieveUserById(id, req.runner);
162
+ if (isFounderEmail(mfaTarget?.email) && !isFounderEmail(req.user?.email)) {
163
+ return forbidden(reply, 'Cannot reset the sovereign admin MFA');
164
+ }
121
165
  try {
122
166
  await req.server['userManager'].disableMfa(id, req.runner);
123
167
  return { ok: true };
@@ -147,6 +191,9 @@ export async function resetPasswordByAdmin(req, reply) {
147
191
  if (!user) {
148
192
  return reply.status(404).send({ statusCode: 404, error: 'Not Found', message: 'User not found' });
149
193
  }
194
+ if (isFounderEmail(user.email) && !isFounderEmail(req.user?.email)) {
195
+ return forbidden(reply, 'Cannot reset the sovereign admin password');
196
+ }
150
197
  await req.server['userManager'].resetPassword(user, password, req.runner);
151
198
  return { ok: true };
152
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../../lib/api/users/controller/user.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../../lib/api/users/controller/user.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ declare const _default: {
17
17
  routes: ({
18
18
  method: string;
19
19
  path: string;
20
- roles: import("../../../index.js").Role[];
20
+ requireCapability: string;
21
21
  handler: string;
22
22
  middlewares: string[];
23
23
  config: {
@@ -39,10 +39,11 @@ declare const _default: {
39
39
  params?: undefined;
40
40
  body?: undefined;
41
41
  };
42
+ roles?: undefined;
42
43
  } | {
43
44
  method: string;
44
45
  path: string;
45
- roles: import("../../../index.js").Role[];
46
+ requireCapability: string;
46
47
  handler: string;
47
48
  middlewares: string[];
48
49
  config: {
@@ -60,6 +61,7 @@ declare const _default: {
60
61
  params?: undefined;
61
62
  body?: undefined;
62
63
  };
64
+ roles?: undefined;
63
65
  } | {
64
66
  method: string;
65
67
  path: string;
@@ -83,10 +85,11 @@ declare const _default: {
83
85
  params?: undefined;
84
86
  body?: undefined;
85
87
  };
88
+ requireCapability?: undefined;
86
89
  } | {
87
90
  method: string;
88
91
  path: string;
89
- roles: import("../../../index.js").Role[];
92
+ requireCapability: string;
90
93
  handler: string;
91
94
  middlewares: string[];
92
95
  config: {
@@ -106,10 +109,11 @@ declare const _default: {
106
109
  query?: undefined;
107
110
  body?: undefined;
108
111
  };
112
+ roles?: undefined;
109
113
  } | {
110
114
  method: string;
111
115
  path: string;
112
- roles: import("../../../index.js").Role[];
116
+ requireCapability: string;
113
117
  handler: string;
114
118
  middlewares: string[];
115
119
  config: {
@@ -134,10 +138,11 @@ declare const _default: {
134
138
  };
135
139
  query?: undefined;
136
140
  };
141
+ roles?: undefined;
137
142
  } | {
138
143
  method: string;
139
144
  path: string;
140
- roles: import("../../../index.js").Role[];
145
+ requireCapability: string;
141
146
  handler: string;
142
147
  middlewares: string[];
143
148
  config: {
@@ -160,6 +165,7 @@ declare const _default: {
160
165
  query?: undefined;
161
166
  params?: undefined;
162
167
  };
168
+ roles?: undefined;
163
169
  } | {
164
170
  method: string;
165
171
  path: string;
@@ -181,10 +187,38 @@ declare const _default: {
181
187
  params?: undefined;
182
188
  body?: undefined;
183
189
  };
190
+ requireCapability?: undefined;
184
191
  } | {
185
192
  method: string;
186
193
  path: string;
187
- roles: import("../../../index.js").Role[];
194
+ roles: never[];
195
+ handler: string;
196
+ middlewares: string[];
197
+ config: {
198
+ title: string;
199
+ description: string;
200
+ body: {
201
+ $ref: string;
202
+ type?: undefined;
203
+ required?: undefined;
204
+ properties?: undefined;
205
+ };
206
+ response: {
207
+ 200: {
208
+ description: string;
209
+ $ref: string;
210
+ type?: undefined;
211
+ items?: undefined;
212
+ };
213
+ };
214
+ query?: undefined;
215
+ params?: undefined;
216
+ };
217
+ requireCapability?: undefined;
218
+ } | {
219
+ method: string;
220
+ path: string;
221
+ requireCapability: string;
188
222
  handler: string;
189
223
  middlewares: string[];
190
224
  config: {
@@ -209,10 +243,11 @@ declare const _default: {
209
243
  };
210
244
  query?: undefined;
211
245
  };
246
+ roles?: undefined;
212
247
  } | {
213
248
  method: string;
214
249
  path: string;
215
- roles: import("../../../index.js").Role[];
250
+ requireCapability: string;
216
251
  handler: string;
217
252
  middlewares: string[];
218
253
  config: {
@@ -232,10 +267,11 @@ declare const _default: {
232
267
  query?: undefined;
233
268
  body?: undefined;
234
269
  };
270
+ roles?: undefined;
235
271
  } | {
236
272
  method: string;
237
273
  path: string;
238
- roles: import("../../../index.js").Role[];
274
+ requireCapability: string;
239
275
  handler: string;
240
276
  middlewares: string[];
241
277
  config: {
@@ -265,6 +301,7 @@ declare const _default: {
265
301
  };
266
302
  query?: undefined;
267
303
  };
304
+ roles?: undefined;
268
305
  })[];
269
306
  };
270
307
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../lib/api/users/routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAqQC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../lib/api/users/routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAqQC"}
@@ -14,7 +14,7 @@ export default {
14
14
  {
15
15
  method: 'GET',
16
16
  path: '/',
17
- roles: [roles.admin],
17
+ requireCapability: 'users',
18
18
  handler: 'user.find',
19
19
  middlewares: ['global.isAuthenticated'],
20
20
  config: {
@@ -33,7 +33,7 @@ export default {
33
33
  {
34
34
  method: 'GET',
35
35
  path: '/count',
36
- roles: [roles.admin],
36
+ requireCapability: 'users',
37
37
  handler: 'user.count',
38
38
  middlewares: ['global.isAuthenticated'],
39
39
  config: {
@@ -68,7 +68,7 @@ export default {
68
68
  {
69
69
  method: 'GET',
70
70
  path: '/:id',
71
- roles: [roles.admin],
71
+ requireCapability: 'users',
72
72
  handler: 'user.findOne',
73
73
  middlewares: ['global.isAuthenticated'],
74
74
  config: {
@@ -86,7 +86,7 @@ export default {
86
86
  {
87
87
  method: 'PUT',
88
88
  path: '/:id',
89
- roles: [roles.admin],
89
+ requireCapability: 'users',
90
90
  handler: 'user.update',
91
91
  middlewares: ['global.isAuthenticated'],
92
92
  config: {
@@ -105,7 +105,7 @@ export default {
105
105
  {
106
106
  method: 'POST',
107
107
  path: '/',
108
- roles: [roles.admin],
108
+ requireCapability: 'users',
109
109
  handler: 'user.create',
110
110
  middlewares: ['global.isAuthenticated'],
111
111
  config: {
@@ -123,7 +123,7 @@ export default {
123
123
  {
124
124
  method: 'DELETE',
125
125
  path: '/:id',
126
- roles: [roles.admin],
126
+ requireCapability: 'users',
127
127
  handler: 'user.remove',
128
128
  middlewares: ['global.isAuthenticated'],
129
129
  config: {
@@ -187,7 +187,7 @@ export default {
187
187
  {
188
188
  method: 'POST',
189
189
  path: '/:id/block',
190
- roles: [roles.admin, roles.backoffice],
190
+ requireCapability: 'users',
191
191
  handler: 'user.block',
192
192
  middlewares: ['global.isAuthenticated'],
193
193
  config: {
@@ -203,7 +203,7 @@ export default {
203
203
  {
204
204
  method: 'POST',
205
205
  path: '/:id/unblock',
206
- roles: [roles.admin, roles.backoffice],
206
+ requireCapability: 'users',
207
207
  handler: 'user.unblock',
208
208
  middlewares: ['global.isAuthenticated'],
209
209
  config: {
@@ -218,7 +218,7 @@ export default {
218
218
  {
219
219
  method: 'POST',
220
220
  path: '/:id/mfa/reset',
221
- roles: [roles.admin],
221
+ requireCapability: 'users',
222
222
  handler: 'user.resetMfaByAdmin',
223
223
  middlewares: ['global.isAuthenticated'],
224
224
  config: {
@@ -233,7 +233,7 @@ export default {
233
233
  {
234
234
  method: 'POST',
235
235
  path: '/:id/password/reset',
236
- roles: [roles.admin],
236
+ requireCapability: 'users',
237
237
  handler: 'user.resetPasswordByAdmin',
238
238
  middlewares: ['global.isAuthenticated'],
239
239
  config: {
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../lib/api/users/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../lib/api/users/routes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../../lib/config/roles.ts"],"names":[],"mappings":";;;;;AAAA,wBAgBC"}
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../../lib/config/roles.ts"],"names":[],"mappings":";;;;;AAAA,wBAWC"}
@@ -8,11 +8,6 @@ export default [
8
8
  code: 'admin',
9
9
  name: 'Admin',
10
10
  description: 'Admin role'
11
- },
12
- {
13
- code: 'backoffice',
14
- name: 'Backoffice',
15
- description: 'Backoffice role'
16
11
  }
17
12
  ];
18
13
  //# sourceMappingURL=roles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../lib/config/roles.ts"],"names":[],"mappings":"AAAA,eAAe;IACb;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,aAAa;KAC3B;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,YAAY;KAC1B;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,iBAAiB;KAC/B;CACF,CAAA"}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../lib/config/roles.ts"],"names":[],"mappings":"AAAA,eAAe;IACb;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,aAAa;KAC3B;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,YAAY;KAC1B;CACF,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { FastifyInstance } from 'fastify';
2
+ export interface GenesisOptions {
3
+ onFatal?: (message: string) => void;
4
+ }
5
+ export declare function ensureGenesisAdmin(server: FastifyInstance, opts?: GenesisOptions): Promise<void>;
6
+ //# sourceMappingURL=genesis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genesis.d.ts","sourceRoot":"","sources":["../../../lib/loader/genesis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAU9C,MAAM,WAAW,cAAc;IAE7B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC;AAWD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD1G"}
@@ -0,0 +1,51 @@
1
+ import crypto from 'crypto';
2
+ import { includesRole } from '../util/authz.js';
3
+ function generatePassword() {
4
+ return crypto.randomBytes(24).toString('base64url') + 'aA1!';
5
+ }
6
+ export async function ensureGenesisAdmin(server, opts = {}) {
7
+ const um = server?.['userManager'];
8
+ if (!um?.isImplemented?.())
9
+ return;
10
+ if (!global.connection)
11
+ return;
12
+ if (global.config?.options?.multi_tenant?.enabled)
13
+ return;
14
+ const onFatal = opts.onFatal ||
15
+ ((message) => {
16
+ if (log?.f)
17
+ log.fatal(message);
18
+ process.exit(1);
19
+ });
20
+ const adminCode = global.roles?.admin?.code || 'admin';
21
+ const email = process.env.ADMIN_EMAIL?.trim();
22
+ if (!email) {
23
+ const count = Number(await um.countQuery({ 'roles:in': adminCode }));
24
+ if (count === 0) {
25
+ onFatal('Startup: no admin exists and ADMIN_EMAIL is not set to bootstrap one. Set ADMIN_EMAIL.');
26
+ }
27
+ return;
28
+ }
29
+ const existing = await um.retrieveUserByEmail(email);
30
+ if (existing) {
31
+ if (!includesRole(existing.roles, adminCode)) {
32
+ await um.updateUserById(existing.getId(), { roles: [...(existing.roles || []), adminCode] });
33
+ if (log?.i)
34
+ log.info(`Startup: promoted ${email} to admin (sovereign founder).`);
35
+ }
36
+ return;
37
+ }
38
+ const envPassword = process.env.ADMIN_PASSWORD;
39
+ const password = envPassword || generatePassword();
40
+ const created = await um.createUser({ email, username: email, password, roles: [adminCode] });
41
+ await um.userConfirmation(created);
42
+ if (!envPassword) {
43
+ process.stdout.write(`\n[genesis] Created sovereign founder ${email} with a generated password: ${password}\n[genesis] Rotate it after first login.\n\n`);
44
+ if (log?.w)
45
+ log.warn(`Startup: created sovereign founder ${email} with a generated password (printed to stdout).`);
46
+ }
47
+ else if (log?.i) {
48
+ log.info(`Startup: created sovereign founder ${email}.`);
49
+ }
50
+ }
51
+ //# sourceMappingURL=genesis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genesis.js","sourceRoot":"","sources":["../../../lib/loader/genesis.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
- import type { Roles } from '../../types/global.js';
1
+ import type { Role, Roles } from '../../types/global.js';
2
+ export declare const PROTECTED_ROLE_CODES: string[];
3
+ export declare function mergeRoles(roles: Roles, configRoles: Role[]): Roles;
2
4
  export declare function load(): Promise<Roles>;
3
5
  //# sourceMappingURL=roles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../../lib/loader/roles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAIxD,wBAAsB,IAAI,mBAqBzB"}
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../../lib/loader/roles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AASxD,eAAO,MAAM,oBAAoB,UAAsB,CAAA;AAMvD,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,CAoBnE;AAED,wBAAsB,IAAI,mBAiBzB"}
@@ -1,5 +1,27 @@
1
1
  import { normalizePatterns } from '../util/path.js';
2
2
  import { globSync } from 'glob';
3
+ export const PROTECTED_ROLE_CODES = ['admin', 'public'];
4
+ export function mergeRoles(roles, configRoles) {
5
+ const protectedCodes = new Set(PROTECTED_ROLE_CODES);
6
+ for (const role of configRoles || []) {
7
+ if (!role?.code)
8
+ continue;
9
+ const existing = roles[role.code];
10
+ if (existing && protectedCodes.has(role.code)) {
11
+ if (typeof role.name === 'string')
12
+ existing.name = role.name;
13
+ if (typeof role.description === 'string')
14
+ existing.description = role.description;
15
+ if (role.capabilities?.length && log?.w) {
16
+ log.warn(`Roles: capabilities on protected role '${role.code}' are ignored`);
17
+ }
18
+ }
19
+ else {
20
+ roles[role.code] = role;
21
+ }
22
+ }
23
+ return roles;
24
+ }
3
25
  export async function load() {
4
26
  const roles = {};
5
27
  const patterns = normalizePatterns(['..', 'config', 'roles.{ts,js}'], ['src', 'config', 'roles.{ts,js}']);
@@ -9,10 +31,7 @@ export async function load() {
9
31
  const files = globSync(pattern, { windowsPathsNoEscape: true });
10
32
  for (const f of files) {
11
33
  const module = await import(f);
12
- const configRoles = module.default || module;
13
- configRoles.forEach((role) => {
14
- roles[role.code] = role;
15
- });
34
+ mergeRoles(roles, (module.default || module));
16
35
  }
17
36
  }
18
37
  if (log.i)
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../lib/loader/roles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAE/B,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,KAAK,GAAU,EAAE,CAAA;IAEvB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAA;IAEzG,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAA;QAE/D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAA;YAE5C,WAAW,CAAC,OAAO,CAAC,CAAC,IAAU,EAAE,EAAE;gBACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;YACzB,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACrE,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../lib/loader/roles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAO/B,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAMvD,MAAM,UAAU,UAAU,CAAC,KAAY,EAAE,WAAmB;IAC1D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAA;IAEpD,KAAK,MAAM,IAAI,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,IAAI;YAAE,SAAQ;QAEzB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,QAAQ,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAE9C,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YAC5D,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBAAE,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;YACjF,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,IAAI,CAAC,0CAA0C,IAAI,CAAC,IAAI,eAAe,CAAC,CAAA;YAC9E,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QACzB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,KAAK,GAAU,EAAE,CAAA;IAEvB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAA;IAEzG,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAA;QAE/D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAA;YAC9B,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAW,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACrE,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { Route, ConfiguredRoute } from '../../types/global.js';
2
- export declare function processRoute(route: Route, index: number, file: string, dir: string, base: string, defaultConfig: any, authMiddlewares: string[], validRoutes: ConfiguredRoute[]): ConfiguredRoute | null;
2
+ export declare function processRoute(route: Route, index: number, file: string, dir: string, base: string, defaultConfig: any, authMiddlewares: string[], validRoutes: ConfiguredRoute[], roleErrors?: string[]): ConfiguredRoute | null;
3
3
  export declare function apply(server: any): Promise<void>;
4
4
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../lib/loader/router.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,KAAK,EAAE,eAAe,EAAe,MAAM,uBAAuB,CAAA;AAkEtF,wBAAgB,YAAY,CAC1B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,GAAG,EAClB,eAAe,EAAE,MAAM,EAAE,EACzB,WAAW,EAAE,eAAe,EAAE,GAC7B,eAAe,GAAG,IAAI,CAgIxB;AA+HD,wBAAsB,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtD"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../lib/loader/router.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,KAAK,EAAE,eAAe,EAAe,MAAM,uBAAuB,CAAA;AAgHtF,wBAAgB,YAAY,CAC1B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,GAAG,EAClB,eAAe,EAAE,MAAM,EAAE,EACzB,WAAW,EAAE,eAAe,EAAE,EAC9B,UAAU,GAAE,MAAM,EAAO,GACxB,eAAe,GAAG,IAAI,CA0HxB;AAkJD,wBAAsB,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtD"}