@volcanicminds/backend 1.0.2 → 1.0.4

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.
@@ -22,6 +22,7 @@ var __rest = (this && this.__rest) || function (s, e) {
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.currentUser = currentUser;
24
24
  exports.isAdmin = isAdmin;
25
+ exports.getRoles = getRoles;
25
26
  exports.count = count;
26
27
  exports.find = find;
27
28
  exports.findOne = findOne;
@@ -36,6 +37,10 @@ function isAdmin(req, reply) {
36
37
  const user = req.user;
37
38
  reply.send({ isAdmin: (user === null || user === void 0 ? void 0 : user.getId()) && req.hasRole(roles.admin) });
38
39
  }
40
+ function getRoles(req, reply) {
41
+ const allRoles = Object.keys(roles).map((key) => roles[key]);
42
+ reply.send(allRoles);
43
+ }
39
44
  function count(req, reply) {
40
45
  return __awaiter(this, void 0, void 0, function* () {
41
46
  return req.server['userManager'].countQuery(req.data());
@@ -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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"}
@@ -44,6 +44,24 @@ module.exports = {
44
44
  }
45
45
  }
46
46
  },
47
+ {
48
+ method: 'GET',
49
+ path: '/roles',
50
+ roles: [roles.admin],
51
+ handler: 'user.getRoles',
52
+ middlewares: ['global.isAuthenticated'],
53
+ config: {
54
+ title: 'Get all roles',
55
+ description: 'Get all roles',
56
+ response: {
57
+ 200: {
58
+ description: 'Default response',
59
+ type: 'array',
60
+ items: { $ref: 'roleSchema#' }
61
+ }
62
+ }
63
+ }
64
+ },
47
65
  {
48
66
  method: 'GET',
49
67
  path: '/:id',
@@ -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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"}
@@ -5,28 +5,59 @@ const path_1 = require("../util/path");
5
5
  const glob = require('glob');
6
6
  const path = require('path');
7
7
  function apply(server) {
8
- const patterns = (0, path_1.normalizePatterns)(['..', 'schemas', '*.{ts,js}'], ['src', 'schemas', '*.{ts,js}']);
8
+ const [baseSchemaPath, customSchemaPath] = (0, path_1.normalizePatterns)(['..', 'schemas', '*.{ts,js}'], ['src', 'schemas', '*.{ts,js}']);
9
+ const customSchemas = [];
10
+ const customSchemaIds = new Set();
9
11
  let schemaCount = 0;
10
- patterns.forEach((pattern) => {
11
- log.t && log.trace('Looking for ' + pattern);
12
- glob.sync(pattern).forEach((f) => {
12
+ log.t && log.trace('Looking for custom schemas in ' + customSchemaPath);
13
+ glob.sync(customSchemaPath).forEach((f) => {
14
+ try {
15
+ const schemaClass = require(f);
16
+ const schemaNames = Object.keys(schemaClass);
17
+ schemaNames.forEach((name) => {
18
+ const schema = schemaClass[name];
19
+ if (schema === null || schema === void 0 ? void 0 : schema.$id) {
20
+ customSchemas.push(schema);
21
+ customSchemaIds.add(schema.$id);
22
+ }
23
+ });
24
+ }
25
+ catch (e) {
26
+ log.w && log.warn(`Could not load custom schema file: ${f}`, e);
27
+ }
28
+ });
29
+ customSchemas.forEach((schema) => {
30
+ log.trace(`* Registering custom schema [${schema.$id}]`);
31
+ server.addSchema(schema);
32
+ schemaCount++;
33
+ });
34
+ log.t && log.trace('Looking for base schemas in ' + baseSchemaPath);
35
+ glob.sync(baseSchemaPath).forEach((f) => {
36
+ try {
13
37
  const schemaFileName = path.basename(f);
14
38
  const schemaClass = require(f);
15
39
  const schemaNames = Object.keys(schemaClass);
16
- schemaNames.map((name) => {
40
+ schemaNames.forEach((name) => {
17
41
  const schema = schemaClass[name];
18
- if (schema != null) {
19
- if (schema === null || schema === void 0 ? void 0 : schema.$id) {
20
- log.trace(`* Schema [${schema.$id}] loaded from ${schemaFileName}`);
21
- server.addSchema(schema);
22
- schemaCount++;
42
+ if (schema === null || schema === void 0 ? void 0 : schema.$id) {
43
+ if (customSchemaIds.has(schema.$id)) {
44
+ log.w &&
45
+ log.warn(`* Base schema [${schema.$id}] from ${schemaFileName} is overridden by a custom schema and will be ignored.`);
23
46
  }
24
47
  else {
25
- log.warn(`* Schema [${schema.$id}] not loaded from ${schemaFileName}`);
48
+ log.trace(`* Registering base schema [${schema.$id}] from ${schemaFileName}`);
49
+ server.addSchema(schema);
50
+ schemaCount++;
26
51
  }
27
52
  }
53
+ else {
54
+ log.w && log.warn(`* Schema with no $id found in ${schemaFileName}, cannot be registered.`);
55
+ }
28
56
  });
29
- });
57
+ }
58
+ catch (e) {
59
+ log.w && log.warn(`Could not load base schema file: ${f}`, e);
60
+ }
30
61
  });
31
62
  log.d && log.debug(`Schemas loaded: ${schemaCount} referenceable by $ref`);
32
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../lib/loader/schemas.ts"],"names":[],"mappings":";;AAKA,sBA2BC;AAhCD,uCAAgD;AAEhD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,SAAgB,KAAK,CAAC,MAAW;IAC/B,MAAM,QAAQ,GAAG,IAAA,wBAAiB,EAAC,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAA;IAEnG,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;YACvC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YACvC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAE5C,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACvB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAChC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACnB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,EAAE,CAAC;wBAChB,GAAG,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,GAAG,iBAAiB,cAAc,EAAE,CAAC,CAAA;wBACnE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;wBACxB,WAAW,EAAE,CAAA;oBACf,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,GAAG,qBAAqB,cAAc,EAAE,CAAC,CAAA;oBACxE,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,mBAAmB,WAAW,wBAAwB,CAAC,CAAA;AAC5E,CAAC"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../lib/loader/schemas.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAdminSchema = exports.userSchema = exports.userBodySchema = void 0;
3
+ exports.roleSchema = exports.isAdminSchema = exports.userSchema = exports.userBodySchema = void 0;
4
4
  exports.userBodySchema = {
5
5
  $id: 'userBodySchema',
6
6
  type: 'object',
@@ -44,4 +44,14 @@ exports.isAdminSchema = {
44
44
  isAdmin: { type: 'boolean' }
45
45
  }
46
46
  };
47
+ exports.roleSchema = {
48
+ $id: 'roleSchema',
49
+ type: 'object',
50
+ nullable: true,
51
+ properties: {
52
+ code: { type: 'string' },
53
+ name: { type: 'string' },
54
+ description: { type: 'string' }
55
+ }
56
+ };
47
57
  //# sourceMappingURL=user.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../lib/schemas/user.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,GAAG,EAAE,gBAAgB;IACrB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC5B,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC9B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;KACpD;CACF,CAAA;AAEY,QAAA,UAAU,GAAG;IACxB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE;QACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC5B,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC9B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QACnD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC9B;CACF,CAAA;AAEY,QAAA,aAAa,GAAG;IAC3B,GAAG,EAAE,eAAe;IACpB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE;QACV,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC7B;CACF,CAAA"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../lib/schemas/user.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,GAAG,EAAE,gBAAgB;IACrB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC5B,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC9B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;KACpD;CACF,CAAA;AAEY,QAAA,UAAU,GAAG;IACxB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE;QACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC5B,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC9B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QACnD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC9B;CACF,CAAA;AAEY,QAAA,aAAa,GAAG;IAC3B,GAAG,EAAE,eAAe;IACpB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE;QACV,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC7B;CACF,CAAA;AAEY,QAAA,UAAU,GAAG;IACxB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE;QACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAChC;CACF,CAAA"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volcanicminds/backend",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "codename": "turin",
5
5
  "license": "MIT",
6
6
  "description": "The volcanic (minds) backend",
@@ -11,6 +11,11 @@ export function isAdmin(req: FastifyRequest, reply: FastifyReply) {
11
11
  reply.send({ isAdmin: user?.getId() && req.hasRole(roles.admin) })
12
12
  }
13
13
 
14
+ export function getRoles(req: FastifyRequest, reply: FastifyReply) {
15
+ const allRoles = Object.keys(roles).map((key) => roles[key])
16
+ reply.send(allRoles)
17
+ }
18
+
14
19
  export async function count(req: FastifyRequest, reply: FastifyReply) {
15
20
  return req.server['userManager'].countQuery(req.data())
16
21
  }
@@ -43,6 +43,24 @@ module.exports = {
43
43
  }
44
44
  }
45
45
  },
46
+ {
47
+ method: 'GET',
48
+ path: '/roles',
49
+ roles: [roles.admin],
50
+ handler: 'user.getRoles',
51
+ middlewares: ['global.isAuthenticated'],
52
+ config: {
53
+ title: 'Get all roles',
54
+ description: 'Get all roles',
55
+ response: {
56
+ 200: {
57
+ description: 'Default response',
58
+ type: 'array',
59
+ items: { $ref: 'roleSchema#' }
60
+ }
61
+ }
62
+ }
63
+ },
46
64
  {
47
65
  method: 'GET',
48
66
  path: '/:id',
@@ -4,29 +4,66 @@ const glob = require('glob')
4
4
  const path = require('path')
5
5
 
6
6
  export function apply(server: any): void {
7
- const patterns = normalizePatterns(['..', 'schemas', '*.{ts,js}'], ['src', 'schemas', '*.{ts,js}'])
7
+ const [baseSchemaPath, customSchemaPath] = normalizePatterns(
8
+ ['..', 'schemas', '*.{ts,js}'],
9
+ ['src', 'schemas', '*.{ts,js}']
10
+ )
8
11
 
12
+ const customSchemas: any[] = []
13
+ const customSchemaIds = new Set()
9
14
  let schemaCount = 0
10
- patterns.forEach((pattern) => {
11
- log.t && log.trace('Looking for ' + pattern)
12
- glob.sync(pattern).forEach((f: string) => {
15
+
16
+ log.t && log.trace('Looking for custom schemas in ' + customSchemaPath)
17
+ glob.sync(customSchemaPath).forEach((f: string) => {
18
+ try {
19
+ const schemaClass = require(f)
20
+ const schemaNames = Object.keys(schemaClass)
21
+
22
+ schemaNames.forEach((name) => {
23
+ const schema = schemaClass[name]
24
+ if (schema?.$id) {
25
+ customSchemas.push(schema)
26
+ customSchemaIds.add(schema.$id)
27
+ }
28
+ })
29
+ } catch (e) {
30
+ log.w && log.warn(`Could not load custom schema file: ${f}`, e)
31
+ }
32
+ })
33
+
34
+ customSchemas.forEach((schema) => {
35
+ log.trace(`* Registering custom schema [${schema.$id}]`)
36
+ server.addSchema(schema)
37
+ schemaCount++
38
+ })
39
+
40
+ log.t && log.trace('Looking for base schemas in ' + baseSchemaPath)
41
+ glob.sync(baseSchemaPath).forEach((f: string) => {
42
+ try {
13
43
  const schemaFileName = path.basename(f)
14
44
  const schemaClass = require(f)
15
45
  const schemaNames = Object.keys(schemaClass)
16
46
 
17
- schemaNames.map((name) => {
47
+ schemaNames.forEach((name) => {
18
48
  const schema = schemaClass[name]
19
- if (schema != null) {
20
- if (schema?.$id) {
21
- log.trace(`* Schema [${schema.$id}] loaded from ${schemaFileName}`)
49
+ if (schema?.$id) {
50
+ if (customSchemaIds.has(schema.$id)) {
51
+ log.w &&
52
+ log.warn(
53
+ `* Base schema [${schema.$id}] from ${schemaFileName} is overridden by a custom schema and will be ignored.`
54
+ )
55
+ } else {
56
+ log.trace(`* Registering base schema [${schema.$id}] from ${schemaFileName}`)
22
57
  server.addSchema(schema)
23
58
  schemaCount++
24
- } else {
25
- log.warn(`* Schema [${schema.$id}] not loaded from ${schemaFileName}`)
26
59
  }
60
+ } else {
61
+ log.w && log.warn(`* Schema with no $id found in ${schemaFileName}, cannot be registered.`)
27
62
  }
28
63
  })
29
- })
64
+ } catch (e) {
65
+ log.w && log.warn(`Could not load base schema file: ${f}`, e)
66
+ }
30
67
  })
31
68
 
32
69
  log.d && log.debug(`Schemas loaded: ${schemaCount} referenceable by $ref`)
@@ -43,3 +43,14 @@ export const isAdminSchema = {
43
43
  isAdmin: { type: 'boolean' }
44
44
  }
45
45
  }
46
+
47
+ export const roleSchema = {
48
+ $id: 'roleSchema',
49
+ type: 'object',
50
+ nullable: true,
51
+ properties: {
52
+ code: { type: 'string' },
53
+ name: { type: 'string' },
54
+ description: { type: 'string' }
55
+ }
56
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volcanicminds/backend",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "codename": "turin",
5
5
  "license": "MIT",
6
6
  "description": "The volcanic (minds) backend",