exodus-framework 2.0.756 → 2.0.757

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 (55) hide show
  1. package/lib/app/app.js +84 -0
  2. package/lib/app/controller.js +95 -0
  3. package/lib/app/core.js +71 -0
  4. package/lib/app/error.js +66 -0
  5. package/lib/app/index.js +72 -0
  6. package/lib/app/service.js +24 -0
  7. package/lib/app/settings.js +138 -0
  8. package/lib/app/singleton.js +29 -0
  9. package/lib/contracts/console.js +5 -0
  10. package/lib/contracts/entity.js +5 -0
  11. package/lib/contracts/http.js +50 -0
  12. package/lib/contracts/index.js +104 -0
  13. package/lib/contracts/messaging.js +25 -0
  14. package/lib/contracts/security.js +5 -0
  15. package/lib/contracts/service.js +5 -0
  16. package/lib/contracts/session.js +5 -0
  17. package/lib/contracts/settings.js +5 -0
  18. package/lib/contracts/singleton.js +5 -0
  19. package/lib/contracts/socket.js +11 -0
  20. package/lib/controllers/api/file.js +24 -0
  21. package/lib/controllers/api/index.js +13 -0
  22. package/lib/controllers/index.js +16 -0
  23. package/lib/controllers/messaging/application.js +63 -0
  24. package/lib/controllers/messaging/database.js +63 -0
  25. package/lib/controllers/messaging/environment.js +100 -0
  26. package/lib/express.d.js +5 -0
  27. package/lib/index.js +92 -0
  28. package/lib/middlewares/access.js +77 -0
  29. package/lib/middlewares/authentication.js +21 -0
  30. package/lib/middlewares/file.js +41 -0
  31. package/lib/middlewares/index.js +27 -0
  32. package/lib/models/Application.js +61 -0
  33. package/lib/models/DatabaseHost.js +62 -0
  34. package/lib/models/EnvConnection.js +41 -0
  35. package/lib/models/index.js +46 -0
  36. package/lib/routes/index.js +16 -0
  37. package/lib/routes/messaging/index.js +34 -0
  38. package/lib/services/express.js +151 -0
  39. package/lib/services/file.js +65 -0
  40. package/lib/services/index.d.ts +0 -1
  41. package/lib/services/index.d.ts.map +1 -1
  42. package/lib/services/index.js +76 -0
  43. package/lib/services/rabitmq.js +101 -0
  44. package/lib/services/redis.js +62 -0
  45. package/lib/services/security.js +229 -0
  46. package/lib/services/sequelize.js +285 -0
  47. package/lib/services/socket.js +55 -0
  48. package/lib/services/task.js +164 -0
  49. package/lib/utils/api.js +50 -0
  50. package/lib/utils/database.js +158 -0
  51. package/lib/utils/date.js +28 -0
  52. package/lib/utils/index.js +60 -0
  53. package/lib/utils/logger.js +51 -0
  54. package/lib/utils/session.js +23 -0
  55. package/package.json +1 -1
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _console = require("./console");
7
+ Object.keys(_console).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _console[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _console[key];
14
+ }
15
+ });
16
+ });
17
+ var _entity = require("./entity");
18
+ Object.keys(_entity).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _entity[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _entity[key];
25
+ }
26
+ });
27
+ });
28
+ var _http = require("./http");
29
+ Object.keys(_http).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _http[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _http[key];
36
+ }
37
+ });
38
+ });
39
+ var _messaging = require("./messaging");
40
+ Object.keys(_messaging).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _messaging[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _messaging[key];
47
+ }
48
+ });
49
+ });
50
+ var _service = require("./service");
51
+ Object.keys(_service).forEach(function (key) {
52
+ if (key === "default" || key === "__esModule") return;
53
+ if (key in exports && exports[key] === _service[key]) return;
54
+ Object.defineProperty(exports, key, {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _service[key];
58
+ }
59
+ });
60
+ });
61
+ var _session = require("./session");
62
+ Object.keys(_session).forEach(function (key) {
63
+ if (key === "default" || key === "__esModule") return;
64
+ if (key in exports && exports[key] === _session[key]) return;
65
+ Object.defineProperty(exports, key, {
66
+ enumerable: true,
67
+ get: function () {
68
+ return _session[key];
69
+ }
70
+ });
71
+ });
72
+ var _settings = require("./settings");
73
+ Object.keys(_settings).forEach(function (key) {
74
+ if (key === "default" || key === "__esModule") return;
75
+ if (key in exports && exports[key] === _settings[key]) return;
76
+ Object.defineProperty(exports, key, {
77
+ enumerable: true,
78
+ get: function () {
79
+ return _settings[key];
80
+ }
81
+ });
82
+ });
83
+ var _singleton = require("./singleton");
84
+ Object.keys(_singleton).forEach(function (key) {
85
+ if (key === "default" || key === "__esModule") return;
86
+ if (key in exports && exports[key] === _singleton[key]) return;
87
+ Object.defineProperty(exports, key, {
88
+ enumerable: true,
89
+ get: function () {
90
+ return _singleton[key];
91
+ }
92
+ });
93
+ });
94
+ var _socket = require("./socket");
95
+ Object.keys(_socket).forEach(function (key) {
96
+ if (key === "default" || key === "__esModule") return;
97
+ if (key in exports && exports[key] === _socket[key]) return;
98
+ Object.defineProperty(exports, key, {
99
+ enumerable: true,
100
+ get: function () {
101
+ return _socket[key];
102
+ }
103
+ });
104
+ });
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EMessagingQueue = void 0;
7
+ let EMessagingQueue = exports.EMessagingQueue = /*#__PURE__*/function (EMessagingQueue) {
8
+ EMessagingQueue["test"] = "exodus.queue.test";
9
+ EMessagingQueue["accountCreated"] = "exodus.account.created";
10
+ EMessagingQueue["environmentSync"] = "exodus.environment.sync";
11
+ EMessagingQueue["environmentCreated"] = "exodus.environment.created";
12
+ EMessagingQueue["environmentDeleted"] = "exodus.environment.deleted";
13
+ EMessagingQueue["environmentUpdatedToken"] = "exodus.environment.updated.token";
14
+ EMessagingQueue["environmentUpdatedDatabase"] = "exodus.environment.updated.database";
15
+ EMessagingQueue["databaseSync"] = "exodus.database.sync";
16
+ EMessagingQueue["databaseCreated"] = "exodus.database.created";
17
+ EMessagingQueue["databaseUpdate"] = "exodus.database.updated";
18
+ EMessagingQueue["databaseDeleted"] = "exodus.database.deleted";
19
+ EMessagingQueue["applicationSync"] = "exodus.application.sync";
20
+ EMessagingQueue["applicationCreated"] = "exodus.application.created";
21
+ EMessagingQueue["applicationUpdate"] = "exodus.application.updated";
22
+ EMessagingQueue["applicationDeleted"] = "exodus.application.deleted";
23
+ EMessagingQueue["smsSend"] = "exodus.sms.send";
24
+ return EMessagingQueue;
25
+ }({}); // Mapeamento de tópicos para tipos
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ESocketEvent = void 0;
7
+ let ESocketEvent = exports.ESocketEvent = /*#__PURE__*/function (ESocketEvent) {
8
+ ESocketEvent["test"] = "exodus.socket.event.test";
9
+ ESocketEvent["test2"] = "exodus.socket.event.test2";
10
+ return ESocketEvent;
11
+ }({}); // Mapeamento de tópicos para tipos
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _controller = _interopRequireDefault(require("../../app/controller"));
8
+ require("express-async-errors");
9
+ var _http = require("../../contracts/http");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ // !Tratamento de erros asyncronos
12
+
13
+ class FileController extends _controller.default {
14
+ upload = async (req, res) => {
15
+ this.send({
16
+ message: 'Salvo com sucesso',
17
+ type: 'success',
18
+ status: true,
19
+ data: req.file.filename,
20
+ code: _http.EHttpResponseCode.created
21
+ }, res);
22
+ };
23
+ }
24
+ var _default = exports.default = FileController;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "FileController", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _file.default;
10
+ }
11
+ });
12
+ var _file = _interopRequireDefault(require("./file"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _api = require("./api");
7
+ Object.keys(_api).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _api[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _api[key];
14
+ }
15
+ });
16
+ });
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _app = require("../../app");
8
+ var _models = require("../../models");
9
+ var _utils = require("../../utils");
10
+ class ApplicationController extends _app.MessagingController {
11
+ created = async (data, ack) => {
12
+ try {
13
+ await _models.Application.create(data);
14
+ } catch (error) {
15
+ new _app.ErrorHandler('Houve um erro ao tentar criar a aplicação', error);
16
+ } finally {
17
+ ack();
18
+ }
19
+ };
20
+ update = async (data, ack) => {
21
+ try {
22
+ const app = await _models.Application.findByPk(data.uuid);
23
+ if (!app) throw new Error('Aplicação não encontrada: ' + data.uuid);
24
+ await app.update(data.updated);
25
+ } catch (error) {
26
+ new _app.ErrorHandler('Houve um erro ao tentar atualizar a aplicação, check o log...', error);
27
+ } finally {
28
+ ack();
29
+ }
30
+ };
31
+ delete = async (data, ack) => {
32
+ try {
33
+ const app = await _models.Application.findByPk(data.uuid);
34
+ if (!app) throw new Error('Aplicação não encontrada: ' + data.uuid);
35
+ await app.destroy();
36
+ } catch (error) {
37
+ new _app.ErrorHandler('Houve um erro ao tentar excluír a aplicação', error);
38
+ } finally {
39
+ ack();
40
+ }
41
+ };
42
+ sync = async (data, ack) => {
43
+ try {
44
+ data.forEach(async app => {
45
+ try {
46
+ const host = await _models.Application.findByPk(app.uuid);
47
+ if (!host) {
48
+ (0, _utils.logger)().info(app, `Sincronizando nova integração do banco de dados ${app.name}`);
49
+ this.log(`Sincronizando nova integração do banco de dados ${app.name}`, 'info');
50
+ await _models.Application.create(app);
51
+ }
52
+ } catch (error) {
53
+ new _app.ErrorHandler('Houve um erro ao tentar sincronizar uma integração', error);
54
+ }
55
+ });
56
+ } catch (error) {
57
+ new _app.ErrorHandler('Houve um erro ao tentar sincronizar uma integração', error);
58
+ } finally {
59
+ ack();
60
+ }
61
+ };
62
+ }
63
+ var _default = exports.default = ApplicationController;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _app = require("../../app");
8
+ var _models = require("../../models");
9
+ var _utils = require("../../utils");
10
+ class DatabaseController extends _app.MessagingController {
11
+ created = async (data, ack) => {
12
+ try {
13
+ await _models.DatabaseHost.create(data);
14
+ } catch (error) {
15
+ new _app.ErrorHandler('Houve um erro ao tentar criar um banco de dados', error);
16
+ } finally {
17
+ ack();
18
+ }
19
+ };
20
+ update = async (data, ack) => {
21
+ try {
22
+ const host = await _models.DatabaseHost.findByPk(data.uuid);
23
+ if (!host) throw new Error('Banco de dados não encontrado');
24
+ await host.update(data.updated);
25
+ } catch (error) {
26
+ new _app.ErrorHandler('Houve um erro ao tentar atualizar um banco de dados', error);
27
+ } finally {
28
+ ack();
29
+ }
30
+ };
31
+ delete = async (data, ack) => {
32
+ try {
33
+ const host = await _models.DatabaseHost.findByPk(data.uuid);
34
+ if (!host) throw new Error('Banco de dados não encontrado');
35
+ await host.destroy();
36
+ } catch (error) {
37
+ new _app.ErrorHandler('Houve um erro ao tentar excluír um banco de dados', error);
38
+ } finally {
39
+ ack();
40
+ }
41
+ };
42
+ sync = async (data, ack) => {
43
+ try {
44
+ data.forEach(async database => {
45
+ try {
46
+ const host = await _models.DatabaseHost.findByPk(database.uuid);
47
+ if (!host) {
48
+ (0, _utils.logger)().info(database, `Sincronizando novo host ${database.host}`);
49
+ this.log(`Sincronizando novo host ${database.host}`, 'info');
50
+ await _models.DatabaseHost.create(database);
51
+ }
52
+ } catch (error) {
53
+ new _app.ErrorHandler('Houve um erro ao tentar sincronizar um novo host', error);
54
+ }
55
+ });
56
+ } catch (error) {
57
+ new _app.ErrorHandler('Houve um erro ao tentar sincronizar um novo host', error);
58
+ } finally {
59
+ ack();
60
+ }
61
+ };
62
+ }
63
+ var _default = exports.default = DatabaseController;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _app = require("../../app");
8
+ var _models = require("../../models");
9
+ var _services = require("../../services");
10
+ var _utils = require("../../utils");
11
+ class EnvironmentController extends _app.MessagingController {
12
+ created = async (data, ack) => {
13
+ try {
14
+ const db = data.database;
15
+ const token = data.envToken;
16
+ await _services.SequelizeService.singleton().createDB(db, token);
17
+ await _models.EnvDBHost.create({
18
+ envUuid: data.uuid,
19
+ hostUuid: data.database,
20
+ envToken: data.envToken
21
+ });
22
+ this.log(`New database created successfully: ${db}`);
23
+ } catch (error) {
24
+ new _app.ErrorHandler('Erro ao criar o novo banco de dados', error);
25
+ } finally {
26
+ ack();
27
+ }
28
+ };
29
+ deleted = async (data, ack) => {
30
+ try {
31
+ const token = data.token;
32
+ const db = data.database;
33
+ await _services.SequelizeService.singleton().deleteDB(db, token);
34
+ const relation = await _models.EnvDBHost.findOne({
35
+ where: {
36
+ envUuid: data.uuid
37
+ }
38
+ });
39
+ if (!relation) throw new Error('relação env-db não encontrada');
40
+ await relation.destroy();
41
+ this.log(`Database deleted successfully: ${token}`);
42
+ } catch (error) {
43
+ new _app.ErrorHandler('Erro ao deletar a relação env-db', error);
44
+ } finally {
45
+ ack();
46
+ }
47
+ };
48
+ updatedDatabase = async (data, ack) => {
49
+ try {
50
+ const relation = await _models.EnvDBHost.findOne({
51
+ where: {
52
+ envUuid: data.envUuid
53
+ }
54
+ });
55
+ if (!relation) throw new Error('relação env-db não encontrada');
56
+ await relation.update({
57
+ hostUuid: data.database
58
+ });
59
+ this.log(`A relação para o ambiente ${data.envUuid} foi atualizada, a migração deverá ser realizada de forma manual`);
60
+ } catch (error) {
61
+ new _app.ErrorHandler('Erro ao atualizar a relação EDB', error);
62
+ } finally {
63
+ ack();
64
+ }
65
+ };
66
+ sync = async (data, ack) => {
67
+ try {
68
+ data.forEach(async env => {
69
+ try {
70
+ const host = await _models.EnvDBHost.findOne({
71
+ where: {
72
+ envUuid: env.uuid
73
+ }
74
+ });
75
+ if (!host) {
76
+ (0, _utils.logger)().info(env, `Sincronizando relação env-db ${env.uuid}`);
77
+ this.log(`Sincronizando relação env-db ${env.uuid}`, 'info');
78
+ await _models.EnvDBHost.create({
79
+ envUuid: env.uuid,
80
+ hostUuid: env.database,
81
+ envToken: env.envToken
82
+ });
83
+ }
84
+ if (!(await _services.SequelizeService.singleton().hasDB(env.database, env.envToken))) {
85
+ (0, _utils.logger)().info(env, `Sincronizando novo banco de dados ${env.uuid}`);
86
+ this.log(`Sincronizando novo banco de dados ${env.uuid}`, 'info');
87
+ await _services.SequelizeService.singleton().createDB(env.database, env.envToken);
88
+ }
89
+ } catch (error) {
90
+ new _app.ErrorHandler('Houve um erro ao tentar sincronizar um novo ambiente/relação ou banco de dados', error);
91
+ }
92
+ });
93
+ } catch (error) {
94
+ new _app.ErrorHandler('Houve um erro ao tentar sincronizar um novo ambiente/relação ou banco de dados', error);
95
+ } finally {
96
+ ack();
97
+ }
98
+ };
99
+ }
100
+ var _default = exports.default = EnvironmentController;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/lib/index.js ADDED
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {};
7
+ exports.default = void 0;
8
+ var _app = require("./app");
9
+ Object.keys(_app).forEach(function (key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
12
+ if (key in exports && exports[key] === _app[key]) return;
13
+ Object.defineProperty(exports, key, {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _app[key];
17
+ }
18
+ });
19
+ });
20
+ var _contracts = require("./contracts");
21
+ Object.keys(_contracts).forEach(function (key) {
22
+ if (key === "default" || key === "__esModule") return;
23
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
24
+ if (key in exports && exports[key] === _contracts[key]) return;
25
+ Object.defineProperty(exports, key, {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _contracts[key];
29
+ }
30
+ });
31
+ });
32
+ var _controllers = require("./controllers");
33
+ Object.keys(_controllers).forEach(function (key) {
34
+ if (key === "default" || key === "__esModule") return;
35
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
36
+ if (key in exports && exports[key] === _controllers[key]) return;
37
+ Object.defineProperty(exports, key, {
38
+ enumerable: true,
39
+ get: function () {
40
+ return _controllers[key];
41
+ }
42
+ });
43
+ });
44
+ var _middlewares = require("./middlewares");
45
+ Object.keys(_middlewares).forEach(function (key) {
46
+ if (key === "default" || key === "__esModule") return;
47
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
48
+ if (key in exports && exports[key] === _middlewares[key]) return;
49
+ Object.defineProperty(exports, key, {
50
+ enumerable: true,
51
+ get: function () {
52
+ return _middlewares[key];
53
+ }
54
+ });
55
+ });
56
+ var _models = require("./models");
57
+ Object.keys(_models).forEach(function (key) {
58
+ if (key === "default" || key === "__esModule") return;
59
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
60
+ if (key in exports && exports[key] === _models[key]) return;
61
+ Object.defineProperty(exports, key, {
62
+ enumerable: true,
63
+ get: function () {
64
+ return _models[key];
65
+ }
66
+ });
67
+ });
68
+ var _services = require("./services");
69
+ Object.keys(_services).forEach(function (key) {
70
+ if (key === "default" || key === "__esModule") return;
71
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
72
+ if (key in exports && exports[key] === _services[key]) return;
73
+ Object.defineProperty(exports, key, {
74
+ enumerable: true,
75
+ get: function () {
76
+ return _services[key];
77
+ }
78
+ });
79
+ });
80
+ var _utils = require("./utils");
81
+ Object.keys(_utils).forEach(function (key) {
82
+ if (key === "default" || key === "__esModule") return;
83
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
84
+ if (key in exports && exports[key] === _utils[key]) return;
85
+ Object.defineProperty(exports, key, {
86
+ enumerable: true,
87
+ get: function () {
88
+ return _utils[key];
89
+ }
90
+ });
91
+ });
92
+ var _default = exports.default = _app.Exodus;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _dateFns = require("date-fns");
8
+ var _app = require("../app");
9
+ var _controller = _interopRequireDefault(require("../app/controller"));
10
+ var _http = require("../contracts/http");
11
+ var _models = require("../models");
12
+ var _security = _interopRequireDefault(require("../services/security"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ class AccessMiddleware extends _controller.default {
15
+ accessLevel = level => {
16
+ return (req, res, next) => {
17
+ if (!level.includes(req.auth.account.type)) {
18
+ throw new _app.HttpError({
19
+ message: 'Nível de acesso não permitido para esta rota.',
20
+ statusCode: _http.EHttpResponseCode.informationBlocked
21
+ });
22
+ }
23
+ next();
24
+ };
25
+ };
26
+ getTenant = async (req, res, next) => {
27
+ const account = req.auth?.account;
28
+ const tenantId = req.header('X-Exodus-Tenant-ID');
29
+ const applicationId = req.header('X-Exodus-Application-ID');
30
+ let envUuid = '';
31
+
32
+ /* Aplicações */
33
+ if (applicationId) {
34
+ const application = await _models.Application.findOne({
35
+ where: {
36
+ token: applicationId
37
+ }
38
+ });
39
+ if (!application) {
40
+ throw new _app.HttpError({
41
+ message: 'Token de aplicação inválido',
42
+ statusCode: _http.EHttpResponseCode.informationUnauthorized
43
+ });
44
+ } else if (!application.active) {
45
+ throw new _app.HttpError({
46
+ message: 'Token desativado',
47
+ statusCode: _http.EHttpResponseCode.informationBlocked
48
+ });
49
+ } else if ((0, _dateFns.isBefore)(application.expiresAt, new Date())) {
50
+ throw new _app.HttpError({
51
+ message: 'Token expirado',
52
+ statusCode: _http.EHttpResponseCode.informationBlocked
53
+ });
54
+ } else {
55
+ //valido
56
+ const data = await _security.default.singleton().verifySignature(applicationId, _security.default.singleton().getServicePublicKey());
57
+ if (!data) {
58
+ throw new _app.HttpError({
59
+ message: 'Token sem autênticidade.',
60
+ statusCode: _http.EHttpResponseCode.informationBlocked
61
+ });
62
+ }
63
+ envUuid = data.payload.envUuid;
64
+ }
65
+ } else if (tenantId) {
66
+ envUuid = tenantId;
67
+ }
68
+ if (account && account.type != 'ADMINISTRATOR') {
69
+ envUuid = account.envUuid;
70
+ }
71
+ req.tenant = {
72
+ id: envUuid || _app.Core.settings.getDatabase().service.database
73
+ };
74
+ next();
75
+ };
76
+ }
77
+ var _default = exports.default = AccessMiddleware;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _expressJwt = require("express-jwt");
8
+ var _app = require("../app");
9
+ var _controller = _interopRequireDefault(require("../app/controller"));
10
+ var _security = _interopRequireDefault(require("../services/security"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ class AuthenticationMiddleware extends _controller.default {
13
+ decryptToken = (0, _expressJwt.expressjwt)({
14
+ secret: async () => {
15
+ return _security.default.singleton().getServicePublicKey().toPEM(false);
16
+ },
17
+ issuer: _app.Core.settings.getAuthentication().serviceIssuer,
18
+ algorithms: ['RS256']
19
+ });
20
+ }
21
+ var _default = exports.default = AuthenticationMiddleware;