@volcanicminds/backend 0.2.14 → 0.2.16

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.
package/dist/index.js CHANGED
@@ -99,14 +99,34 @@ function addFastifySwagger(fastify) {
99
99
  yield fastify.register(swagger_1.default, {
100
100
  swagger: {
101
101
  info: {
102
- title: SWAGGER_TITLE || 'API Documentation',
102
+ title: SWAGGER_TITLE || 'Volcanic API Documentation',
103
103
  description: SWAGGER_DESCRIPTION || 'List of available APIs and schemes to use',
104
- version: SWAGGER_VERSION || '0.1.0'
104
+ version: SWAGGER_VERSION || '0.0.1'
105
105
  },
106
106
  host: SWAGGER_HOST || 'localhost:2230',
107
- schemes: ['http', 'https'],
107
+ schemes: ['https', 'http'],
108
108
  consumes: ['application/json'],
109
109
  produces: ['application/json']
110
+ },
111
+ openapi: {
112
+ info: {
113
+ title: SWAGGER_TITLE || 'Volcanic API Documentation',
114
+ description: SWAGGER_DESCRIPTION || 'List of available APIs and schemes to use',
115
+ version: SWAGGER_VERSION || '0.0.1'
116
+ },
117
+ servers: [
118
+ {
119
+ url: SWAGGER_HOST || 'http://localhost:2230'
120
+ }
121
+ ],
122
+ components: {
123
+ securitySchemes: {
124
+ Bearer: {
125
+ type: 'http',
126
+ scheme: 'bearer'
127
+ }
128
+ }
129
+ }
110
130
  }
111
131
  });
112
132
  yield fastify.register(swagger_ui_1.default, {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -12,16 +12,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.demo = exports.login = void 0;
13
13
  function login(req, reply) {
14
14
  return __awaiter(this, void 0, void 0, function* () {
15
- const { username, password } = req.data();
15
+ const { email = '', password = '' } = req.data();
16
+ const username = email.substr(0, email.indexOf('@')) || 'jerry';
16
17
  const roleList = [username === 'admin' ? roles.admin : username === 'vminds' ? roles.backoffice : roles.public];
17
18
  const user = username !== null
18
19
  ? {
19
- sub: 306,
20
- name: username
20
+ id: 306,
21
+ name: username,
22
+ email: email,
23
+ roles: roleList
21
24
  }
22
25
  : null;
23
- const token = user !== null ? yield reply.jwtSign(user) : null;
24
- reply.send({ ok: token !== null, token, roles: roleList.map((r) => r.code) });
26
+ const token = user !== null ? yield reply.jwtSign({ sub: user.id, name: user.name, email: user.email }) : null;
27
+ reply.send(Object.assign(Object.assign({}, user), { token: token || null, roles: roleList.map((r) => r.code) }));
25
28
  });
26
29
  }
27
30
  exports.login = login;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../lib/api/auth/controller/auth.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,SAAsB,KAAK,CAAC,GAAmB,EAAE,KAAmB;;QAClE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAIzC,MAAM,QAAQ,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC/G,MAAM,IAAI,GACR,QAAQ,KAAK,IAAI;YACf,CAAC,CAAC;gBACE,GAAG,EAAE,GAAG;gBACR,IAAI,EAAE,QAAQ;aACf;YACH,CAAC,CAAC,IAAI,CAAA;QAEV,MAAM,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAG9D,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/E,CAAC;CAAA;AAlBD,sBAkBC;AAED,SAAsB,IAAI,CAAC,GAAmB,EAAE,KAAmB;;QAGjE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9B,CAAC;CAAA;AAJD,oBAIC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../lib/api/auth/controller/auth.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,SAAsB,KAAK,CAAC,GAAmB,EAAE,KAAmB;;QAClE,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAIhD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAA;QAC/D,MAAM,QAAQ,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC/G,MAAM,IAAI,GACR,QAAQ,KAAK,IAAI;YACf,CAAC,CAAE;gBACC,EAAE,EAAE,GAAG;gBACP,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,QAAQ;aACM;YACzB,CAAC,CAAC,IAAI,CAAA;QAIV,MAAM,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC9G,KAAK,CAAC,IAAI,iCAAM,IAAI,KAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAG,CAAA;IACnF,CAAC;CAAA;AArBD,sBAqBC;AAED,SAAsB,IAAI,CAAC,GAAmB,EAAE,KAAmB;;QAGjE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9B,CAAC;CAAA;AAJD,oBAIC"}
@@ -5,7 +5,6 @@ module.exports = {
5
5
  description: 'User useful functions',
6
6
  controller: 'controller',
7
7
  tags: ['auth'],
8
- enable: true,
9
8
  deprecated: false,
10
9
  version: false
11
10
  },
@@ -17,13 +16,12 @@ module.exports = {
17
16
  handler: 'auth.login',
18
17
  middlewares: [],
19
18
  config: {
20
- enable: true,
21
19
  title: 'Login',
22
- description: 'Login',
20
+ description: 'Basic login authentication',
23
21
  body: {
24
22
  type: 'object',
25
23
  properties: {
26
- username: { type: 'string' },
24
+ email: { type: 'string' },
27
25
  password: { type: 'string' }
28
26
  }
29
27
  },
@@ -32,7 +30,8 @@ module.exports = {
32
30
  description: 'Default response',
33
31
  type: 'object',
34
32
  properties: {
35
- ok: { type: 'boolean' },
33
+ id: { type: 'number' },
34
+ name: { type: 'string' },
36
35
  token: { type: 'string' },
37
36
  roles: { type: 'array' }
38
37
  }
@@ -47,9 +46,8 @@ module.exports = {
47
46
  handler: 'auth.demo',
48
47
  middlewares: ['global.isAuthenticated'],
49
48
  config: {
50
- title: 'Demo auth',
51
- description: 'Demo auth',
52
- enable: true,
49
+ title: 'For debug purpose',
50
+ description: 'Demo login authentication',
53
51
  response: {
54
52
  200: {
55
53
  description: 'Default response',
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../lib/api/auth/routes.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE;QACN,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,uBAAuB;QACpC,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,KAAK;KACf;IACD,MAAM,EAAE;QACN;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,EAAE;YACf,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,OAAO;gBACd,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC7B;iBACF;gBACD,QAAQ,EAAE;oBACR,GAAG,EAAE;wBACH,WAAW,EAAE,kBAAkB;wBAC/B,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;4BACvB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;yBACzB;qBACF;iBACF;aACF;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;YACzB,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,MAAM,EAAE;gBACN,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,WAAW;gBACxB,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACR,GAAG,EAAE;wBACH,WAAW,EAAE,kBAAkB;wBAC/B,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;yBACxB;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAA"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../lib/api/auth/routes.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE;QACN,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,uBAAuB;QACpC,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,CAAC,MAAM,CAAC;QAEd,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,KAAK;KACf;IACD,MAAM,EAAE;QACN;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,EAAE;YACf,MAAM,EAAE;gBACN,KAAK,EAAE,OAAO;gBACd,WAAW,EAAE,4BAA4B;gBACzC,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC7B;iBACF;gBACD,QAAQ,EAAE;oBACR,GAAG,EAAE;wBACH,WAAW,EAAE,kBAAkB;wBAC/B,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;yBACzB;qBACF;iBACF;aACF;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;YACzB,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,MAAM,EAAE;gBACN,KAAK,EAAE,mBAAmB;gBAC1B,WAAW,EAAE,2BAA2B;gBACxC,QAAQ,EAAE;oBACR,GAAG,EAAE;wBACH,WAAW,EAAE,kBAAkB;wBAC/B,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;yBACxB;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAA"}
@@ -5,8 +5,6 @@ module.exports = {
5
5
  description: 'User useful functions',
6
6
  controller: 'controller',
7
7
  tags: ['users'],
8
- enable: true,
9
- deprecated: false,
10
8
  version: false
11
9
  },
12
10
  routes: [
@@ -17,11 +15,8 @@ module.exports = {
17
15
  handler: 'user.user',
18
16
  middlewares: ['global.isAuthenticated'],
19
17
  config: {
20
- enable: true,
21
18
  title: 'Get current user',
22
19
  description: 'Get current user',
23
- deprecated: false,
24
- version: false,
25
20
  response: {
26
21
  403: {
27
22
  description: 'Unauthorized',
@@ -49,9 +44,6 @@ module.exports = {
49
44
  config: {
50
45
  title: 'Check if is an admin',
51
46
  description: 'Check if the current user is an admin',
52
- enable: true,
53
- deprecated: false,
54
- version: false,
55
47
  response: {
56
48
  403: {
57
49
  description: 'Unauthorized',
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../lib/api/users/routes.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE;QACN,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,uBAAuB;QACpC,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,KAAK;KACf;IACD,MAAM,EAAE;QACN;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,kBAAkB;gBACzB,WAAW,EAAE,kBAAkB;gBAC/B,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE;oBACR,GAAG,EAAE;wBACH,WAAW,EAAE,cAAc;wBAC3B,IAAI,EAAE,QAAQ;qBACf;oBACD,GAAG,EAAE;wBACH,WAAW,EAAE,kBAAkB;wBAC/B,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;yBACzB;qBACF;iBACF;aACF;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,cAAc;YACvB,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,MAAM,EAAE;gBACN,KAAK,EAAE,sBAAsB;gBAC7B,WAAW,EAAE,uCAAuC;gBACpD,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE;oBACR,GAAG,EAAE;wBACH,WAAW,EAAE,cAAc;wBAC3B,IAAI,EAAE,QAAQ;qBACf;oBACD,GAAG,EAAE;wBACH,WAAW,EAAE,kBAAkB;wBAC/B,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;yBAC7B;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAA"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../lib/api/users/routes.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE;QACN,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,uBAAuB;QACpC,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,OAAO,EAAE,KAAK;KACf;IACD,MAAM,EAAE;QACN;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,MAAM,EAAE;gBACN,KAAK,EAAE,kBAAkB;gBACzB,WAAW,EAAE,kBAAkB;gBAC/B,QAAQ,EAAE;oBACR,GAAG,EAAE;wBACH,WAAW,EAAE,cAAc;wBAC3B,IAAI,EAAE,QAAQ;qBACf;oBACD,GAAG,EAAE;wBACH,WAAW,EAAE,kBAAkB;wBAC/B,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;yBACzB;qBACF;iBACF;aACF;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,cAAc;YACvB,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,MAAM,EAAE;gBACN,KAAK,EAAE,sBAAsB;gBAC7B,WAAW,EAAE,uCAAuC;gBACpD,QAAQ,EAAE;oBACR,GAAG,EAAE;wBACH,WAAW,EAAE,cAAc;wBAC3B,IAAI,EAAE,QAAQ;qBACf;oBACD,GAAG,EAAE;wBACH,WAAW,EAAE,kBAAkB;wBAC/B,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;yBAC7B;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAA"}
@@ -19,23 +19,33 @@ module.exports = (req, reply) => __awaiter(void 0, void 0, void 0, function* ()
19
19
  req.hasRole = (r) => ((req.user && req.user.roles) || []).some((role) => (role === null || role === void 0 ? void 0 : role.code) === (r === null || r === void 0 ? void 0 : r.code));
20
20
  const auth = ((_a = req.headers) === null || _a === void 0 ? void 0 : _a.authorization) || '';
21
21
  const [prefix, token] = auth.split(' ');
22
+ const isRoutePublic = (req.routeConfig.requiredRoles || []).some((role) => role.code === roles.public.code);
22
23
  if (prefix === 'Bearer' && token != null) {
23
- const { sub: userId, name, iat, exp } = reply.server.jwt.verify(token);
24
- if (global.npmDebugServerStarted) {
25
- req.user = {
26
- id: userId || 123,
27
- name: name,
28
- email: 'jerry@george.com',
29
- password: 'pippolippo',
30
- roles: [roles.public]
31
- };
32
- log.debug('Inject demo user ' + req.user.id);
24
+ const user = {};
25
+ try {
26
+ const tokenData = reply.server.jwt.verify(token);
27
+ user.id = tokenData.sub;
28
+ user.name = tokenData.name;
29
+ user.email = tokenData.email;
30
+ if (global.npmDebugServerStarted) {
31
+ user.id = user.id || 123;
32
+ user.name = user.name || 'Jerry Seinfeld';
33
+ user.email = user.email || 'jerry@george.com';
34
+ user.roles = [roles.public, roles.backoffice];
35
+ log.debug('Inject demo user ' + user.id);
36
+ }
37
+ req.user = user;
38
+ }
39
+ catch (error) {
40
+ if (!isRoutePublic) {
41
+ throw error;
42
+ }
33
43
  }
34
44
  if (((_b = req.routeConfig.requiredRoles) === null || _b === void 0 ? void 0 : _b.length) > 0) {
35
- const { method, url, requiredRoles } = req.routeConfig;
45
+ const { method = '', url = '', requiredRoles } = req.routeConfig;
36
46
  const userRoles = ((_d = (_c = req.user) === null || _c === void 0 ? void 0 : _c.roles) === null || _d === void 0 ? void 0 : _d.map(({ code }) => code)) || [];
37
- const resolvedRole = userRoles.length > 0 ? requiredRoles.filter((r) => userRoles.includes(r.code)) : [];
38
- if (!resolvedRole.length) {
47
+ const resolvedRoles = userRoles.length > 0 ? requiredRoles.filter((r) => userRoles.includes(r.code)) : [];
48
+ if (!resolvedRoles.length) {
39
49
  log.w && log.warn(`Not allowed to call ${method.toUpperCase()} ${url}`);
40
50
  return reply
41
51
  .code(403)
@@ -1 +1 @@
1
- {"version":3,"file":"onRequest.js","sourceRoot":"","sources":["../../../lib/hooks/onRequest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onRequest.js","sourceRoot":"","sources":["../../../lib/hooks/onRequest.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  module.exports = (req, reply) => __awaiter(void 0, void 0, void 0, function* () {
12
- var _a;
13
12
  let extraMessage = '';
14
- if (log.i) {
15
- const elapsed = new Date().getTime() - (((_a = req.startedAt) === null || _a === void 0 ? void 0 : _a.getTime()) || 0);
13
+ if (log.i && req.startedAt) {
14
+ const elapsed = new Date().getTime() - req.startedAt.getTime();
16
15
  extraMessage = `(${elapsed}ms)`;
17
16
  }
18
17
  if (log.t) {
@@ -1 +1 @@
1
- {"version":3,"file":"onResponse.js","sourceRoot":"","sources":["../../../lib/hooks/onResponse.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,MAAM,CAAC,OAAO,GAAG,CAAO,GAAG,EAAE,KAAK,EAAE,EAAE;;IACpC,IAAI,YAAY,GAAW,EAAE,CAAA;IAC7B,IAAI,GAAG,CAAC,CAAC,EAAE;QACT,MAAM,OAAO,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA,MAAA,GAAG,CAAC,SAAS,0CAAE,OAAO,EAAE,KAAI,CAAC,CAAC,CAAA;QAC9E,YAAY,GAAG,IAAI,OAAO,KAAK,CAAA;KAChC;IACD,IAAI,GAAG,CAAC,CAAC,EAAE;QACT,MAAM,OAAO,GAAW,OAAO,GAAG,CAAC,WAAW,IAAI,CAAC,EAAE,CAAA;QACrD,MAAM,SAAS,GAAW,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAClF,YAAY,IAAI,IAAI,OAAO,GAAG,SAAS,SAAS,CAAA;KACjD;IAED,MAAM,OAAO,GAAW,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,YAAY,EAAE,CAAA;IACtF,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC9G,CAAC,CAAA,CAAA"}
1
+ {"version":3,"file":"onResponse.js","sourceRoot":"","sources":["../../../lib/hooks/onResponse.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,MAAM,CAAC,OAAO,GAAG,CAAO,GAAG,EAAE,KAAK,EAAE,EAAE;IACpC,IAAI,YAAY,GAAW,EAAE,CAAA;IAC7B,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE;QAC1B,MAAM,OAAO,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;QACtE,YAAY,GAAG,IAAI,OAAO,KAAK,CAAA;KAChC;IACD,IAAI,GAAG,CAAC,CAAC,EAAE;QACT,MAAM,OAAO,GAAW,OAAO,GAAG,CAAC,WAAW,IAAI,CAAC,EAAE,CAAA;QACrD,MAAM,SAAS,GAAW,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAClF,YAAY,IAAI,IAAI,OAAO,GAAG,SAAS,SAAS,CAAA;KACjD;IAED,MAAM,OAAO,GAAW,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,YAAY,EAAE,CAAA;IACtF,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC9G,CAAC,CAAA,CAAA"}
@@ -33,8 +33,13 @@ function load() {
33
33
  log.i && log.info(`Routes loaded: ${file} with ${routes.length} routes defined`);
34
34
  routes.forEach((route, index) => {
35
35
  const errors = [];
36
- const { method: methodCase, path: pathName = '/', handler, config, middlewares = [], roles = [] } = route;
37
- const { title = '', description = '', enable = defaultConfig.enable || true, deprecated = defaultConfig.deprecated || false, tags = defaultConfig.tags || false, version = defaultConfig.version || '', query, params, body, response } = config || {};
36
+ const { method: methodCase, path: pathName = '/', handler, config = {}, middlewares = [], roles: requiredRole = [] } = route;
37
+ if (!(config === null || config === void 0 ? void 0 : config.security) &&
38
+ (requiredRole.some((r) => r.code !== roles.public.code) ||
39
+ middlewares.some((m) => m === 'global.isAuthenticated'))) {
40
+ config.security = 'bearer';
41
+ }
42
+ const { title = '', description = '', enable = defaultConfig.enable || true, deprecated = defaultConfig.deprecated || false, tags = defaultConfig.tags || false, version = defaultConfig.version || '', security = defaultConfig.security || undefined, query, params, body, response } = config || {};
38
43
  const endpoint = `${dir}${pathName.replace(/\/+$/, '')}`;
39
44
  const method = methodCase.toUpperCase();
40
45
  const num = index + 1;
@@ -67,7 +72,7 @@ function load() {
67
72
  method,
68
73
  path: '/' + endpoint,
69
74
  middlewares,
70
- roles,
75
+ roles: requiredRole,
71
76
  enable,
72
77
  base,
73
78
  file: path.join(base, defaultConfig.controller, handlerParts[0]),
@@ -78,6 +83,7 @@ function load() {
78
83
  deprecated,
79
84
  tags,
80
85
  version,
86
+ security: security === 'bearer' ? [{ Bearer: [] }] : security,
81
87
  querystring: query,
82
88
  params,
83
89
  body,
@@ -103,12 +109,11 @@ function apply(server, routes) {
103
109
  routes.forEach(({ handler, method, path, middlewares, roles, enable, base, file, func, doc }) => __awaiter(this, void 0, void 0, function* () {
104
110
  if (enable) {
105
111
  log.t && log.trace(`* Add path ${method} ${path} on handle ${handler}`);
106
- const allMiddlewares = (middlewares || []).map((m) => require(normalizeMiddlewarePath(base, m)));
107
112
  server.route({
108
113
  method: method,
109
114
  path: path,
110
115
  schema: doc,
111
- preHandler: allMiddlewares,
116
+ preHandler: (middlewares || []).map((m) => require(normalizeMiddlewarePath(base, m))),
112
117
  config: {
113
118
  requiredRoles: roles || []
114
119
  },
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../lib/loader/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../lib/loader/router.ts"],"names":[],"mappings":"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"}
package/index.ts CHANGED
@@ -79,14 +79,34 @@ async function addFastifySwagger(fastify: FastifyInstance) {
79
79
  await fastify.register(swagger, {
80
80
  swagger: {
81
81
  info: {
82
- title: SWAGGER_TITLE || 'API Documentation',
82
+ title: SWAGGER_TITLE || 'Volcanic API Documentation',
83
83
  description: SWAGGER_DESCRIPTION || 'List of available APIs and schemes to use',
84
- version: SWAGGER_VERSION || '0.1.0'
84
+ version: SWAGGER_VERSION || '0.0.1'
85
85
  },
86
86
  host: SWAGGER_HOST || 'localhost:2230',
87
- schemes: ['http', 'https'],
87
+ schemes: ['https', 'http'],
88
88
  consumes: ['application/json'],
89
89
  produces: ['application/json']
90
+ },
91
+ openapi: {
92
+ info: {
93
+ title: SWAGGER_TITLE || 'Volcanic API Documentation',
94
+ description: SWAGGER_DESCRIPTION || 'List of available APIs and schemes to use',
95
+ version: SWAGGER_VERSION || '0.0.1'
96
+ },
97
+ servers: [
98
+ {
99
+ url: SWAGGER_HOST || 'http://localhost:2230'
100
+ }
101
+ ],
102
+ components: {
103
+ securitySchemes: {
104
+ Bearer: {
105
+ type: 'http',
106
+ scheme: 'bearer'
107
+ }
108
+ }
109
+ }
90
110
  }
91
111
  })
92
112
 
@@ -1,23 +1,27 @@
1
1
  import { FastifyReply, FastifyRequest } from 'fastify'
2
+ import { AuthenticatedUser } from '../../../../types/global'
2
3
 
3
4
  export async function login(req: FastifyRequest, reply: FastifyReply) {
4
- const { username, password } = req.data()
5
-
6
- // log.debug('username ' + username + ' password ' + password)
5
+ const { email = '', password = '' } = req.data()
7
6
 
7
+ // TODO: use UserManagement.find and check password
8
+ // demo code here
9
+ const username = email.substr(0, email.indexOf('@')) || 'jerry'
8
10
  const roleList = [username === 'admin' ? roles.admin : username === 'vminds' ? roles.backoffice : roles.public]
9
11
  const user =
10
12
  username !== null
11
- ? {
12
- sub: 306, // user id
13
- name: username // optional, username || email
14
- }
13
+ ? ({
14
+ id: 306, // user id
15
+ name: username, // optional
16
+ email: email,
17
+ roles: roleList
18
+ } as AuthenticatedUser)
15
19
  : null
16
20
 
17
- const token = user !== null ? await reply.jwtSign(user) : null
18
-
19
- // log.debug('token ' + token)
20
- reply.send({ ok: token !== null, token, roles: roleList.map((r) => r.code) })
21
+ // TODO: review if email is important to include in token (for a security purpose)
22
+ // https://www.iana.org/assignments/jwt/jwt.xhtml
23
+ const token = user !== null ? await reply.jwtSign({ sub: user.id, name: user.name, email: user.email }) : null
24
+ reply.send({ ...user, token: token || null, roles: roleList.map((r) => r.code) })
21
25
  }
22
26
 
23
27
  export async function demo(req: FastifyRequest, reply: FastifyReply) {
@@ -4,9 +4,9 @@ module.exports = {
4
4
  description: 'User useful functions',
5
5
  controller: 'controller',
6
6
  tags: ['auth'],
7
- enable: true,
8
- deprecated: false, // swagger
9
- version: false // swagger
7
+
8
+ deprecated: false,
9
+ version: false
10
10
  },
11
11
  routes: [
12
12
  {
@@ -16,13 +16,12 @@ module.exports = {
16
16
  handler: 'auth.login',
17
17
  middlewares: [],
18
18
  config: {
19
- enable: true,
20
- title: 'Login', // swagger summary
21
- description: 'Login', // swagger
19
+ title: 'Login',
20
+ description: 'Basic login authentication',
22
21
  body: {
23
22
  type: 'object',
24
23
  properties: {
25
- username: { type: 'string' },
24
+ email: { type: 'string' },
26
25
  password: { type: 'string' }
27
26
  }
28
27
  },
@@ -31,12 +30,13 @@ module.exports = {
31
30
  description: 'Default response',
32
31
  type: 'object',
33
32
  properties: {
34
- ok: { type: 'boolean' },
33
+ id: { type: 'number' },
34
+ name: { type: 'string' },
35
35
  token: { type: 'string' },
36
36
  roles: { type: 'array' }
37
37
  }
38
38
  }
39
- } // swagger
39
+ }
40
40
  }
41
41
  },
42
42
  {
@@ -46,9 +46,8 @@ module.exports = {
46
46
  handler: 'auth.demo',
47
47
  middlewares: ['global.isAuthenticated'],
48
48
  config: {
49
- title: 'Demo auth',
50
- description: 'Demo auth',
51
- enable: true,
49
+ title: 'For debug purpose',
50
+ description: 'Demo login authentication',
52
51
  response: {
53
52
  200: {
54
53
  description: 'Default response',
@@ -57,7 +56,7 @@ module.exports = {
57
56
  ok: { type: 'boolean' }
58
57
  }
59
58
  }
60
- } // swagger
59
+ }
61
60
  }
62
61
  }
63
62
  ]
@@ -4,9 +4,7 @@ module.exports = {
4
4
  description: 'User useful functions',
5
5
  controller: 'controller',
6
6
  tags: ['users'],
7
- enable: true,
8
- deprecated: false, // swagger
9
- version: false // swagger
7
+ version: false
10
8
  },
11
9
  routes: [
12
10
  {
@@ -16,11 +14,8 @@ module.exports = {
16
14
  handler: 'user.user',
17
15
  middlewares: ['global.isAuthenticated'],
18
16
  config: {
19
- enable: true,
20
- title: 'Get current user', // swagger summary
21
- description: 'Get current user', // swagger
22
- deprecated: false, // swagger
23
- version: false, // swagger
17
+ title: 'Get current user',
18
+ description: 'Get current user',
24
19
  response: {
25
20
  403: {
26
21
  description: 'Unauthorized',
@@ -36,7 +31,7 @@ module.exports = {
36
31
  roles: { type: 'array' }
37
32
  }
38
33
  }
39
- } // swagger
34
+ }
40
35
  }
41
36
  },
42
37
  {
@@ -48,9 +43,6 @@ module.exports = {
48
43
  config: {
49
44
  title: 'Check if is an admin',
50
45
  description: 'Check if the current user is an admin',
51
- enable: true,
52
- deprecated: false,
53
- version: false,
54
46
  response: {
55
47
  403: {
56
48
  description: 'Unauthorized',
@@ -63,7 +55,7 @@ module.exports = {
63
55
  isAdmin: { type: 'boolean' }
64
56
  }
65
57
  }
66
- } // swagger
58
+ }
67
59
  }
68
60
  }
69
61
  ]
@@ -9,38 +9,48 @@ module.exports = async (req, reply) => {
9
9
  req.roles = () => ((req.user && req.user.roles) || []).map((role: Role) => role?.code) || []
10
10
  req.hasRole = (r: Role) => ((req.user && req.user.roles) || []).some((role: Role) => role?.code === r?.code)
11
11
 
12
- // authorization
12
+ // authorization check
13
13
  const auth = req.headers?.authorization || ''
14
14
  const [prefix, token] = auth.split(' ')
15
+ const isRoutePublic = (req.routeConfig.requiredRoles || []).some((role: Role) => role.code === roles.public.code)
16
+
15
17
  if (prefix === 'Bearer' && token != null) {
16
- const { sub: userId, name, iat, exp } = reply.server.jwt.verify(token)
17
-
18
- // demo
19
- if (global.npmDebugServerStarted) {
20
- req.user = {
21
- id: userId || 123,
22
- name: name,
23
- email: 'jerry@george.com',
24
- password: 'pippolippo',
25
- // roles: [roles.admin, roles.public]
26
- roles: [roles.public]
18
+ const user: AuthenticatedUser = {} as AuthenticatedUser
19
+ try {
20
+ const tokenData = reply.server.jwt.verify(token)
21
+ user.id = tokenData.sub
22
+ user.name = tokenData.name
23
+ user.email = tokenData.email
24
+
25
+ if (global.npmDebugServerStarted) {
26
+ user.id = user.id || 123
27
+ user.name = user.name || 'Jerry Seinfeld'
28
+ user.email = user.email || 'jerry@george.com'
29
+ user.roles = [roles.public, roles.backoffice]
30
+ log.debug('Inject demo user ' + user.id)
31
+ }
32
+
33
+ //TODO: recall plugin UserManagement for find user or error
34
+
35
+ // ok, we have the full user here
36
+ req.user = user
37
+ } catch (error) {
38
+ if (!isRoutePublic) {
39
+ throw error
27
40
  }
28
- log.debug('Inject demo user ' + req.user.id)
29
41
  }
30
42
 
31
43
  if (req.routeConfig.requiredRoles?.length > 0) {
32
- const { method, url, requiredRoles } = req.routeConfig
44
+ const { method = '', url = '', requiredRoles } = req.routeConfig
33
45
  const userRoles: string[] = req.user?.roles?.map(({ code }) => code) || []
34
- const resolvedRole = userRoles.length > 0 ? requiredRoles.filter((r) => userRoles.includes(r.code)) : []
46
+ const resolvedRoles = userRoles.length > 0 ? requiredRoles.filter((r) => userRoles.includes(r.code)) : []
35
47
 
36
- if (!resolvedRole.length) {
48
+ if (!resolvedRoles.length) {
37
49
  log.w && log.warn(`Not allowed to call ${method.toUpperCase()} ${url}`)
38
50
  return reply
39
51
  .code(403)
40
52
  .send({ statusCode: 403, code: 'ROLE_NOT_ALLOWED', message: 'Not allowed to call this route' })
41
53
  }
42
54
  }
43
-
44
- // recall UserManager find / enrichment
45
55
  }
46
56
  }
@@ -1,7 +1,7 @@
1
1
  module.exports = async (req, reply) => {
2
2
  let extraMessage: string = ''
3
- if (log.i) {
4
- const elapsed: number = new Date().getTime() - (req.startedAt?.getTime() || 0)
3
+ if (log.i && req.startedAt) {
4
+ const elapsed: number = new Date().getTime() - req.startedAt.getTime()
5
5
  extraMessage = `(${elapsed}ms)`
6
6
  }
7
7
  if (log.t) {
@@ -1,4 +1,4 @@
1
- import { Route, ConfiguredRoute } from '../../types/global'
1
+ import { Route, ConfiguredRoute, RouteConfig } from '../../types/global'
2
2
  import { FastifyReply, FastifyRequest } from 'fastify'
3
3
 
4
4
  const glob = require('glob')
@@ -29,7 +29,22 @@ export function load(): ConfiguredRoute[] {
29
29
 
30
30
  routes.forEach((route: Route, index: number) => {
31
31
  const errors: string[] = []
32
- const { method: methodCase, path: pathName = '/', handler, config, middlewares = [], roles = [] } = route
32
+ const {
33
+ method: methodCase,
34
+ path: pathName = '/',
35
+ handler,
36
+ config = {} as RouteConfig,
37
+ middlewares = [],
38
+ roles: requiredRole = []
39
+ } = route
40
+
41
+ if (
42
+ !config?.security &&
43
+ (requiredRole.some((r) => r.code !== roles.public.code) ||
44
+ middlewares.some((m) => m === 'global.isAuthenticated'))
45
+ ) {
46
+ config.security = 'bearer'
47
+ }
33
48
 
34
49
  // specific route config
35
50
  const {
@@ -39,6 +54,7 @@ export function load(): ConfiguredRoute[] {
39
54
  deprecated = defaultConfig.deprecated || false,
40
55
  tags = defaultConfig.tags || false,
41
56
  version = defaultConfig.version || '',
57
+ security = defaultConfig.security || undefined,
42
58
  query,
43
59
  params,
44
60
  body,
@@ -89,7 +105,7 @@ export function load(): ConfiguredRoute[] {
89
105
  method,
90
106
  path: '/' + endpoint,
91
107
  middlewares,
92
- roles,
108
+ roles: requiredRole,
93
109
  enable,
94
110
  base,
95
111
  file: path.join(base, defaultConfig.controller, handlerParts[0]),
@@ -101,6 +117,7 @@ export function load(): ConfiguredRoute[] {
101
117
  deprecated,
102
118
  tags,
103
119
  version,
120
+ security: security === 'bearer' ? [{ Bearer: [] }] : security,
104
121
  querystring: query,
105
122
  params,
106
123
  body,
@@ -130,13 +147,11 @@ export function apply(server: any, routes: ConfiguredRoute[]): void {
130
147
  if (enable) {
131
148
  log.t && log.trace(`* Add path ${method} ${path} on handle ${handler}`)
132
149
 
133
- const allMiddlewares = (middlewares || []).map((m) => require(normalizeMiddlewarePath(base, m)))
134
-
135
150
  server.route({
136
151
  method: method,
137
152
  path: path,
138
153
  schema: doc,
139
- preHandler: allMiddlewares,
154
+ preHandler: (middlewares || []).map((m) => require(normalizeMiddlewarePath(base, m))),
140
155
  config: {
141
156
  requiredRoles: roles || []
142
157
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volcanicminds/backend",
3
- "version": "0.2.14",
3
+ "version": "0.2.16",
4
4
  "codename": "turin",
5
5
  "license": "MIT",
6
6
  "description": "The volcanic (minds) backend",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@apollo/server": "^4.1.1",
46
- "@as-integrations/fastify": "^1.1.0",
46
+ "@as-integrations/fastify": "^1.1.1",
47
47
  "@fastify/compress": "^6.1.1",
48
48
  "@fastify/cors": "^8.2.0",
49
49
  "@fastify/helmet": "^10.0.2",
@@ -53,7 +53,7 @@
53
53
  "@fastify/swagger-ui": "^1.2.0",
54
54
  "@types/node": "^18.11.9",
55
55
  "dotenv": "^16.0.3",
56
- "fastify": "^4.9.2",
56
+ "fastify": "^4.10.0",
57
57
  "glob": "^8.0.3",
58
58
  "graphql": "^16.6.0",
59
59
  "object-sizeof": "^1.6.3",
@@ -67,7 +67,7 @@
67
67
  "nodemon": "^2.0.20",
68
68
  "npm-upgrade": "^3.1.0",
69
69
  "ts-node": "^10.9.1",
70
- "typescript": "^4.8.4"
70
+ "typescript": "^4.9.3"
71
71
  },
72
72
  "repository": {
73
73
  "type": "git",
package/types/global.d.ts CHANGED
@@ -2,6 +2,8 @@ import { FastifyRequest, FastifyReply } from 'fastify'
2
2
 
3
3
  export interface AuthenticatedUser {
4
4
  id: number
5
+ name: string
6
+ email: string
5
7
  roles: Role[]
6
8
  }
7
9
 
@@ -26,9 +28,10 @@ export interface RouteConfig {
26
28
  deprecated: boolean
27
29
  tags?: string[]
28
30
  version: string
29
- params?: Data
30
- query?: Data
31
- body?: Data
31
+ security?: any
32
+ params?: any
33
+ query?: any
34
+ body?: any
32
35
  response?: any
33
36
  }
34
37
 
@@ -57,6 +60,7 @@ export interface ConfiguredRoute {
57
60
  deprecated?: boolean
58
61
  tags?: string[]
59
62
  version?: string
63
+ security?: any
60
64
  params?: any
61
65
  querystring?: any
62
66
  body?: any