@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.
- package/dist/config/dependencies.js +4 -0
- package/dist/entity/user/index.js +3 -1
- package/dist/entity/user/login-link/index.js +84 -0
- package/dist/entity/user/user/index.js +2 -1
- package/dist/event/base-event/index.js +67 -0
- package/dist/event/index.js +23 -0
- package/dist/event/user/password/changed/index.js +24 -0
- package/dist/event/user/registration/index.js +24 -0
- package/dist/index.js +24 -0
- package/dist/migration/user/1643195417761-user-nullable-mobile.js +13 -0
- package/dist/migration/user/1643296114720-user-login-link.js +15 -0
- package/dist/migration/user/1643323827662-login-link-used.js +13 -0
- package/dist/service/event-bridge.js +41 -0
- package/dist/service/warehouse.js +1 -1
- package/package.json +1 -1
|
@@ -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;
|
|
@@ -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
|
|