@felloh-org/lambda-wrapper 1.0.11 → 1.0.15

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.
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = exports.Dependencies = exports.DEFINITIONS = void 0;
7
7
 
8
+ var _eventBridge = _interopRequireDefault(require("../service/event-bridge"));
9
+
8
10
  var _http = _interopRequireDefault(require("../service/http"));
9
11
 
10
12
  var _logger = _interopRequireDefault(require("../service/logger"));
@@ -16,6 +18,7 @@ var _warehouse = _interopRequireDefault(require("../service/warehouse"));
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
19
 
18
20
  const DEFINITIONS = {
21
+ EVENT_BRIDGE: 'EVENT_BRIDGE',
19
22
  HTTP: 'HTTP',
20
23
  LOGGER: 'LOGGER',
21
24
  REQUEST: 'REQUEST',
@@ -23,6 +26,7 @@ const DEFINITIONS = {
23
26
  };
24
27
  exports.DEFINITIONS = DEFINITIONS;
25
28
  const Dependencies = {
29
+ [DEFINITIONS.EVENT_BRIDGE]: _eventBridge.default,
26
30
  [DEFINITIONS.HTTP]: _http.default,
27
31
  [DEFINITIONS.LOGGER]: _logger.default,
28
32
  [DEFINITIONS.REQUEST]: _request.default,
@@ -19,8 +19,10 @@ var _feature = _interopRequireDefault(require("./feature"));
19
19
 
20
20
  var _organisationFeature = _interopRequireDefault(require("./organisation-feature"));
21
21
 
22
+ var _loginLink = _interopRequireDefault(require("./login-link"));
23
+
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
25
 
24
- const ENTITIES = [_organisation.default, _role.default, _userRole.default, _user.default, _userActivity.default, _feature.default, _organisationFeature.default];
26
+ const ENTITIES = [_organisation.default, _role.default, _userRole.default, _user.default, _userActivity.default, _feature.default, _organisationFeature.default, _loginLink.default];
25
27
  var _default = ENTITIES;
26
28
  exports.default = _default;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.EXPIRATION_DAYS = void 0;
7
+
8
+ var _typeorm = require("typeorm");
9
+
10
+ var _uuid = require("uuid");
11
+
12
+ var _user = _interopRequireDefault(require("../user"));
13
+
14
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
19
+
20
+ function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
21
+
22
+ function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
23
+
24
+ const EXPIRATION_DAYS = 3;
25
+ exports.EXPIRATION_DAYS = EXPIRATION_DAYS;
26
+ let LoginLink = (_dec = (0, _typeorm.Entity)({
27
+ name: 'login_link',
28
+ schema: 'user'
29
+ }), _dec2 = (0, _typeorm.PrimaryColumn)("varchar"), _dec3 = (0, _typeorm.ManyToOne)(() => _user.default), _dec4 = (0, _typeorm.JoinColumn)({
30
+ name: 'user_id',
31
+ referencedColumnName: 'id'
32
+ }), _dec5 = (0, _typeorm.CreateDateColumn)(), _dec6 = (0, _typeorm.Column)({
33
+ type: "timestamp with time zone"
34
+ }), _dec7 = (0, _typeorm.Column)({
35
+ type: "boolean",
36
+ default: false
37
+ }), _dec(_class = (_class2 = class LoginLink {
38
+ constructor() {
39
+ _initializerDefineProperty(this, "id", _descriptor, this);
40
+
41
+ _initializerDefineProperty(this, "user", _descriptor2, this);
42
+
43
+ _initializerDefineProperty(this, "created_at", _descriptor3, this);
44
+
45
+ _initializerDefineProperty(this, "expires_at", _descriptor4, this);
46
+
47
+ _initializerDefineProperty(this, "used", _descriptor5, this);
48
+ }
49
+
50
+ }, (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "id", [_dec2], {
51
+ configurable: true,
52
+ enumerable: true,
53
+ writable: true,
54
+ initializer: function () {
55
+ return (0, _uuid.v4)();
56
+ }
57
+ }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "user", [_dec3, _dec4], {
58
+ configurable: true,
59
+ enumerable: true,
60
+ writable: true,
61
+ initializer: function () {
62
+ return _user.default;
63
+ }
64
+ }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "created_at", [_dec5], {
65
+ configurable: true,
66
+ enumerable: true,
67
+ writable: true,
68
+ initializer: null
69
+ }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "expires_at", [_dec6], {
70
+ configurable: true,
71
+ enumerable: true,
72
+ writable: true,
73
+ initializer: function () {
74
+ return new Date(new Date().setDate(new Date().getDate() + EXPIRATION_DAYS));
75
+ }
76
+ }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "used", [_dec7], {
77
+ configurable: true,
78
+ enumerable: true,
79
+ writable: true,
80
+ initializer: function () {
81
+ return false;
82
+ }
83
+ })), _class2)) || _class);
84
+ exports.default = LoginLink;
@@ -38,7 +38,8 @@ let User = (_dec = (0, _typeorm.Entity)({
38
38
  length: "150"
39
39
  }), _dec6 = (0, _typeorm.Column)({
40
40
  type: "varchar",
41
- length: "50"
41
+ length: "50",
42
+ nullable: true
42
43
  }), _dec7 = (0, _typeorm.Column)({
43
44
  type: "varchar",
44
45
  length: "20"
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ /**
9
+ * Base Event
10
+ */
11
+ class BaseEvent {
12
+ /**
13
+ * BaseEvent constructor
14
+ */
15
+ constructor() {
16
+ this.base = {
17
+ Source: process.env.SERVICE_NAME,
18
+ EventBusName: process.env.EVENT_BRIDGE_ARN,
19
+ DetailType: null,
20
+ Time: new Date(),
21
+ Detail: {}
22
+ };
23
+ }
24
+ /**
25
+ * Get the base
26
+ * @returns {*|{EventBusName: string, DetailType: null, Time: Date, Source: string, Detail: {}}}
27
+ */
28
+
29
+
30
+ getBase() {
31
+ return { ...this.base,
32
+ Detail: JSON.stringify(this.base.Detail)
33
+ };
34
+ }
35
+ /**
36
+ * Set the user that initiated the action
37
+ * @param user
38
+ */
39
+
40
+
41
+ setUserBy(user) {
42
+ this.base.Detail.userBy = user;
43
+ }
44
+ /**
45
+ * Set the event type
46
+ * @param type
47
+ */
48
+
49
+
50
+ setDetailType(type) {
51
+ this.base.DetailType = type;
52
+ }
53
+ /**
54
+ * Set a parameter in the event detail
55
+ * @param key
56
+ * @param value
57
+ */
58
+
59
+
60
+ setDetailParam(key, value) {
61
+ this.base.Detail[key] = value;
62
+ }
63
+
64
+ }
65
+
66
+ var _default = BaseEvent;
67
+ exports.default = _default;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "UserPasswordChanged", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _changed.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "UserRegistration", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _registration.default;
16
+ }
17
+ });
18
+
19
+ var _registration = _interopRequireDefault(require("./user/registration"));
20
+
21
+ var _changed = _interopRequireDefault(require("./user/password/changed"));
22
+
23
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _baseEvent = _interopRequireDefault(require("../../../base-event"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ const EVENT_TYPE = 'user:password:changed';
13
+
14
+ class UserPasswordChanged extends _baseEvent.default {
15
+ constructor() {
16
+ super();
17
+ this.setDetailType(EVENT_TYPE);
18
+ this.setDetailParam('user', {});
19
+ }
20
+
21
+ }
22
+
23
+ var _default = UserPasswordChanged;
24
+ exports.default = _default;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _baseEvent = _interopRequireDefault(require("../../base-event"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ const EVENT_TYPE = 'user:registration';
13
+
14
+ class UserRegistrationEvent extends _baseEvent.default {
15
+ constructor() {
16
+ super();
17
+ this.setDetailType(EVENT_TYPE);
18
+ this.setDetailParam('user', {});
19
+ }
20
+
21
+ }
22
+
23
+ var _default = UserRegistrationEvent;
24
+ exports.default = _default;
package/dist/index.js CHANGED
@@ -99,6 +99,12 @@ Object.defineProperty(exports, "LoggerService", {
99
99
  return _logger.default;
100
100
  }
101
101
  });
102
+ Object.defineProperty(exports, "LoginLinkEntity", {
103
+ enumerable: true,
104
+ get: function () {
105
+ return _loginLink.default;
106
+ }
107
+ });
102
108
  Object.defineProperty(exports, "Model", {
103
109
  enumerable: true,
104
110
  get: function () {
@@ -255,6 +261,18 @@ Object.defineProperty(exports, "UserEntity", {
255
261
  return _user.default;
256
262
  }
257
263
  });
264
+ Object.defineProperty(exports, "UserPasswordChangedEvent", {
265
+ enumerable: true,
266
+ get: function () {
267
+ return _changed.default;
268
+ }
269
+ });
270
+ Object.defineProperty(exports, "UserRegistrationEvent", {
271
+ enumerable: true,
272
+ get: function () {
273
+ return _registration.default;
274
+ }
275
+ });
258
276
  Object.defineProperty(exports, "UserRoleEntity", {
259
277
  enumerable: true,
260
278
  get: function () {
@@ -290,6 +308,8 @@ var _feature = _interopRequireDefault(require("./entity/user/feature"));
290
308
 
291
309
  var _organisationFeature = _interopRequireDefault(require("./entity/user/organisation-feature"));
292
310
 
311
+ var _loginLink = _interopRequireDefault(require("./entity/user/login-link"));
312
+
293
313
  var _account = _interopRequireDefault(require("./entity/bank/account"));
294
314
 
295
315
  var _beneficiaryProvider = _interopRequireDefault(require("./entity/bank/beneficiary-provider"));
@@ -332,6 +352,10 @@ var _beneficiary = _interopRequireDefault(require("./entity/nuapay/beneficiary")
332
352
 
333
353
  var _transaction2 = _interopRequireDefault(require("./entity/nuapay/transaction"));
334
354
 
355
+ var _registration = _interopRequireDefault(require("./event/user/registration"));
356
+
357
+ var _changed = _interopRequireDefault(require("./event/user/password/changed"));
358
+
335
359
  var _model = _interopRequireDefault(require("./model"));
336
360
 
337
361
  var _response = _interopRequireDefault(require("./model/response"));
@@ -0,0 +1,13 @@
1
+ const { MigrationInterface, QueryRunner } = require("typeorm");
2
+
3
+ module.exports = class userNullableMobile1643195417761 {
4
+ name = 'userNullableMobile1643195417761'
5
+
6
+ async up(queryRunner) {
7
+ await queryRunner.query(`ALTER TABLE "user"."user" ALTER COLUMN "mobile" DROP NOT NULL`);
8
+ }
9
+
10
+ async down(queryRunner) {
11
+ await queryRunner.query(`ALTER TABLE "user"."user" ALTER COLUMN "mobile" SET NOT NULL`);
12
+ }
13
+ }
@@ -0,0 +1,15 @@
1
+ const { MigrationInterface, QueryRunner } = require("typeorm");
2
+
3
+ module.exports = class userLoginLink1643296114720 {
4
+ name = 'userLoginLink1643296114720'
5
+
6
+ async up(queryRunner) {
7
+ await queryRunner.query(`CREATE TABLE "user"."login_link" ("id" character varying NOT NULL, "created_at" TIMESTAMP NOT NULL DEFAULT now(), "expires_at" TIMESTAMP WITH TIME ZONE NOT NULL, "user_id" character varying, CONSTRAINT "PK_649f9177c9ef00bea8ef0b04a20" PRIMARY KEY ("id"))`);
8
+ await queryRunner.query(`ALTER TABLE "user"."login_link" ADD CONSTRAINT "FK_d49fc28faf37216c75b09d2f67e" FOREIGN KEY ("user_id") REFERENCES "user"."user"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
9
+ }
10
+
11
+ async down(queryRunner) {
12
+ await queryRunner.query(`ALTER TABLE "user"."login_link" DROP CONSTRAINT "FK_d49fc28faf37216c75b09d2f67e"`);
13
+ await queryRunner.query(`DROP TABLE "user"."login_link"`);
14
+ }
15
+ }
@@ -0,0 +1,13 @@
1
+ const { MigrationInterface, QueryRunner } = require("typeorm");
2
+
3
+ module.exports = class loginLinkUsed1643323827662 {
4
+ name = 'loginLinkUsed1643323827662'
5
+
6
+ async up(queryRunner) {
7
+ await queryRunner.query(`ALTER TABLE "user"."login_link" ADD "used" boolean NOT NULL DEFAULT false`);
8
+ }
9
+
10
+ async down(queryRunner) {
11
+ await queryRunner.query(`ALTER TABLE "user"."login_link" DROP COLUMN "used"`);
12
+ }
13
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _awsSdk = _interopRequireDefault(require("aws-sdk"));
9
+
10
+ var _dependencies = require("../config/dependencies");
11
+
12
+ var _dependencyAware = _interopRequireDefault(require("../dependency-injection/dependency-aware"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ const Eventbridge = new _awsSdk.default.EventBridge({
17
+ region: process.env.REGION
18
+ });
19
+ /**
20
+ * Event Bridge Service
21
+ */
22
+
23
+ class EventBridge extends _dependencyAware.default {
24
+ async put(eventModel) {
25
+ const Logger = this.getContainer().get(_dependencies.DEFINITIONS.LOGGER);
26
+
27
+ try {
28
+ const currentUser = JSON.parse(this.getContainer().getEvent().requestContext.authorizer.userEntity);
29
+ eventModel.setUserBy(currentUser);
30
+ } catch (error) {
31
+ Logger.info('no current user to event bridge event');
32
+ }
33
+
34
+ await Eventbridge.putEvents({
35
+ Entries: [eventModel.getBase()]
36
+ }).promise();
37
+ }
38
+
39
+ }
40
+
41
+ exports.default = EventBridge;
@@ -47,7 +47,7 @@ class Warehouse extends _dependencyAware.default {
47
47
  resourceArn: process.env.WAREHOUSE_ARN,
48
48
  region: process.env.REGION,
49
49
  entities: _entity.default,
50
- logging: true
50
+ logging: process.env.DB_LOGGING !== 'undefined' && process.env.DB_LOGGING === 'true'
51
51
  });
52
52
  }
53
53
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@felloh-org/lambda-wrapper",
3
- "version": "1.0.11",
3
+ "version": "1.0.15",
4
4
  "description": "Lambda wrapper for all Felloh Serverless Projects",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {