@qrvey/assets-sharing 0.0.2 → 0.0.3
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/cjs/context.js +2 -0
- package/dist/cjs/context.js.map +1 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/{sharing/interfaces/details.interface.js → quser/entities/types/user.type.js} +1 -1
- package/dist/cjs/quser/entities/types/user.type.js.map +1 -0
- package/dist/cjs/quser/entities/user.js +22 -0
- package/dist/cjs/quser/entities/user.js.map +1 -0
- package/dist/cjs/quser/implementations/user.model.js +24 -0
- package/dist/cjs/quser/implementations/user.model.js.map +1 -0
- package/dist/cjs/quser/implementations/user.repository.js +19 -0
- package/dist/cjs/quser/implementations/user.repository.js.map +1 -0
- package/dist/cjs/quser/interfaces/userRepository.interface.js +3 -0
- package/dist/cjs/quser/interfaces/userRepository.interface.js.map +1 -0
- package/dist/cjs/quser/services/fromTokenToUser.js +49 -0
- package/dist/cjs/quser/services/fromTokenToUser.js.map +1 -0
- package/dist/cjs/sharing/interfaces/detailsRepository.interface.js +3 -0
- package/dist/cjs/sharing/interfaces/detailsRepository.interface.js.map +1 -0
- package/dist/esm/index.mjs +106 -18
- package/dist/esm/index.mjs.map +1 -1
- package/dist/types/index.d.ts +16 -1
- package/package.json +1 -1
- package/src/context.ts +4 -1
- package/src/index.ts +5 -0
- package/src/quser/entities/types/user.type.ts +19 -0
- package/src/quser/entities/user.ts +27 -0
- package/src/quser/implementations/user.model.ts +23 -0
- package/src/quser/implementations/user.repository.ts +21 -0
- package/src/quser/interfaces/userRepository.interface.ts +5 -0
- package/src/quser/services/fromTokenToUser.ts +43 -0
- package/src/sharing/implementations/details.repository.ts +1 -1
- package/src/sharing/services/checkUserAccessLevel.ts +1 -1
- package/src/sharing/services/list.ts +1 -1
- package/src/sharing/services/upsert.ts +1 -1
- package/dist/cjs/sharing/interfaces/details.interface.js.map +0 -1
- /package/src/sharing/interfaces/{details.interface.ts → detailsRepository.interface.ts} +0 -0
package/dist/cjs/context.js
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Context = void 0;
|
|
4
4
|
const tsyringe_1 = require("tsyringe");
|
|
5
|
+
const user_repository_1 = require("./quser/implementations/user.repository");
|
|
5
6
|
const details_repository_1 = require("./sharing/implementations/details.repository");
|
|
6
7
|
const sharing_repository_1 = require("./sharing/implementations/sharing.repository");
|
|
7
8
|
tsyringe_1.container.register('SharingRepository', sharing_repository_1.SharingRepository);
|
|
8
9
|
tsyringe_1.container.register('SharingDetailsRepository', details_repository_1.SharingDetailsRepository);
|
|
10
|
+
tsyringe_1.container.register('UserRepository', user_repository_1.UserRepository);
|
|
9
11
|
exports.Context = tsyringe_1.container;
|
|
10
12
|
//# sourceMappingURL=context.js.map
|
package/dist/cjs/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AAErC,qFAAwF;AACxF,qFAAiF;AAIjF,oBAAS,CAAC,QAAQ,CACd,mBAAmB,EACnB,sCAAiB,CACpB,CAAC;AACF,oBAAS,CAAC,QAAQ,CACd,0BAA0B,EAC1B,6CAAwB,CAC3B,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AAErC,6EAAyE;AAEzE,qFAAwF;AACxF,qFAAiF;AAIjF,oBAAS,CAAC,QAAQ,CACd,mBAAmB,EACnB,sCAAiB,CACpB,CAAC;AACF,oBAAS,CAAC,QAAQ,CACd,0BAA0B,EAC1B,6CAAwB,CAC3B,CAAC;AACF,oBAAS,CAAC,QAAQ,CAA0B,gBAAgB,EAAE,gCAAc,CAAC,CAAC;AAEjE,QAAA,OAAO,GAAG,oBAAS,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SHARE_TYPE = exports.SHARED_ORIGIN = exports.ORGANIZATION_QRVEY = exports.ASSET_TYPE = exports.ACCESS_LEVEL = exports.checkUserAccessLevel = exports.api = void 0;
|
|
3
|
+
exports.SHARE_TYPE = exports.SHARED_ORIGIN = exports.ORGANIZATION_QRVEY = exports.ASSET_TYPE = exports.ACCESS_LEVEL = exports.fromTokenToUser = exports.checkUserAccessLevel = exports.api = void 0;
|
|
4
4
|
require("reflect-metadata");
|
|
5
5
|
const context_1 = require("./context");
|
|
6
|
+
const fromTokenToUser_1 = require("./quser/services/fromTokenToUser");
|
|
6
7
|
const checkUserAccessLevel_1 = require("./sharing/services/checkUserAccessLevel");
|
|
7
8
|
const delete_1 = require("./sharing/services/delete");
|
|
8
9
|
const list_1 = require("./sharing/services/list");
|
|
@@ -14,6 +15,8 @@ exports.api = {
|
|
|
14
15
|
};
|
|
15
16
|
const checkUserAccessLevel = (...args) => context_1.Context.resolve(checkUserAccessLevel_1.CheckUserAccessLevel).execute(...args);
|
|
16
17
|
exports.checkUserAccessLevel = checkUserAccessLevel;
|
|
18
|
+
const fromTokenToUser = (...args) => context_1.Context.resolve(fromTokenToUser_1.FromTokenToUser).execute(...args);
|
|
19
|
+
exports.fromTokenToUser = fromTokenToUser;
|
|
17
20
|
var constants_1 = require("./common/constants");
|
|
18
21
|
Object.defineProperty(exports, "ACCESS_LEVEL", { enumerable: true, get: function () { return constants_1.ACCESS_LEVEL; } });
|
|
19
22
|
Object.defineProperty(exports, "ASSET_TYPE", { enumerable: true, get: function () { return constants_1.ASSET_TYPE; } });
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,uCAAoC;AACpC,kFAA+E;AAC/E,sDAA0D;AAC1D,kDAAsD;AACtD,sDAA0D;AAE7C,QAAA,GAAG,GAAG;IACf,MAAM,EAAE,CAAC,GAAG,IAA0C,EAAE,EAAE,CACtD,iBAAO,CAAC,OAAO,CAAC,sBAAa,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACnD,IAAI,EAAE,CAAC,GAAG,IAAwC,EAAE,EAAE,CAClD,iBAAO,CAAC,OAAO,CAAC,kBAAW,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACjD,MAAM,EAAE,CAAC,GAAG,IAA0C,EAAE,EAAE,CACtD,iBAAO,CAAC,OAAO,CAAC,sBAAa,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACtD,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAChC,GAAG,IAAiD,EACtD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,2CAAoB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAF/C,QAAA,oBAAoB,wBAE2B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,uCAAoC;AACpC,sEAAmE;AACnE,kFAA+E;AAC/E,sDAA0D;AAC1D,kDAAsD;AACtD,sDAA0D;AAE7C,QAAA,GAAG,GAAG;IACf,MAAM,EAAE,CAAC,GAAG,IAA0C,EAAE,EAAE,CACtD,iBAAO,CAAC,OAAO,CAAC,sBAAa,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACnD,IAAI,EAAE,CAAC,GAAG,IAAwC,EAAE,EAAE,CAClD,iBAAO,CAAC,OAAO,CAAC,kBAAW,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACjD,MAAM,EAAE,CAAC,GAAG,IAA0C,EAAE,EAAE,CACtD,iBAAO,CAAC,OAAO,CAAC,sBAAa,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACtD,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAChC,GAAG,IAAiD,EACtD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,2CAAoB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAF/C,QAAA,oBAAoB,wBAE2B;AAErD,MAAM,eAAe,GAAG,CAC3B,GAAG,IAA4C,EACjD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,iCAAe,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAF1C,QAAA,eAAe,mBAE2B;AAEvD,gDAM4B;AALxB,yGAAA,YAAY,OAAA;AACZ,uGAAA,UAAU,OAAA;AACV,+GAAA,kBAAkB,OAAA;AAClB,0GAAA,aAAa,OAAA;AACb,uGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.type.js","sourceRoot":"","sources":["../../../../../src/quser/entities/types/user.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.User = void 0;
|
|
4
|
+
class User {
|
|
5
|
+
constructor(params) {
|
|
6
|
+
this.userId = params.userid;
|
|
7
|
+
this.email = params.email;
|
|
8
|
+
this.groups = params.groups;
|
|
9
|
+
this.organization = params.organization;
|
|
10
|
+
}
|
|
11
|
+
get getEmail() {
|
|
12
|
+
return this.email;
|
|
13
|
+
}
|
|
14
|
+
get getGroups() {
|
|
15
|
+
return this.groups;
|
|
16
|
+
}
|
|
17
|
+
get getOrganization() {
|
|
18
|
+
return this.organization;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.User = User;
|
|
22
|
+
//# sourceMappingURL=user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../src/quser/entities/user.ts"],"names":[],"mappings":";;;AAEA,MAAa,IAAI;IAMb,YAAY,MAAgB;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAC5C,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;CACJ;AAxBD,oBAwBC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserModel = void 0;
|
|
4
|
+
const data_persistence_1 = require("@qrvey/data-persistence");
|
|
5
|
+
const constants_1 = require("../../common/constants");
|
|
6
|
+
class UserModel extends data_persistence_1.CrudSchema {
|
|
7
|
+
}
|
|
8
|
+
exports.UserModel = UserModel;
|
|
9
|
+
UserModel.table = {
|
|
10
|
+
name: `${constants_1.DATABASE_INFO.SERVER_PREFIX}Users`,
|
|
11
|
+
alias: 'qv_users',
|
|
12
|
+
};
|
|
13
|
+
UserModel.columns = {
|
|
14
|
+
userid: {
|
|
15
|
+
type: 'string',
|
|
16
|
+
primary: true,
|
|
17
|
+
columnId: true,
|
|
18
|
+
},
|
|
19
|
+
groups: {
|
|
20
|
+
type: 'array',
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
UserModel.schema = constants_1.DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
|
|
24
|
+
//# sourceMappingURL=user.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.model.js","sourceRoot":"","sources":["../../../../src/quser/implementations/user.model.ts"],"names":[],"mappings":";;;AAAA,8DAAqD;AAErD,sDAAuD;AAEvD,MAAa,SAAU,SAAQ,6BAAU;;AAAzC,8BAkBC;AAjBU,eAAK,GAAG;IACX,IAAI,EAAE,GAAG,yBAAa,CAAC,aAAa,OAAO;IAC3C,KAAK,EAAE,UAAU;CACpB,CAAC;AAEK,iBAAO,GAAG;IACb,MAAM,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;KACjB;IACD,MAAM,EAAE;QACJ,IAAI,EAAE,OAAO;KAChB;CACJ,CAAC;AAEK,gBAAM,GAAG,yBAAa,CAAC,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserRepository = void 0;
|
|
4
|
+
const user_model_1 = require("./user.model");
|
|
5
|
+
const base_1 = require("../../common/persistence/base");
|
|
6
|
+
class UserRepository extends base_1.BaseRepository {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(user_model_1.UserModel);
|
|
9
|
+
}
|
|
10
|
+
async getOne(identifier) {
|
|
11
|
+
const params = {
|
|
12
|
+
filters: [this.filter('userid', identifier)],
|
|
13
|
+
};
|
|
14
|
+
const response = await super.findItem(params);
|
|
15
|
+
return response;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.UserRepository = UserRepository;
|
|
19
|
+
//# sourceMappingURL=user.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.repository.js","sourceRoot":"","sources":["../../../../src/quser/implementations/user.repository.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,wDAA+D;AAI/D,MAAa,cACT,SAAQ,qBAAc;IAGtB;QACI,KAAK,CAAC,sBAAS,CAAC,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB;QAC3B,MAAM,MAAM,GAAG;YACX,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SAC/C,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,QAAoB,CAAC;IAChC,CAAC;CACJ;AAfD,wCAeC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userRepository.interface.js","sourceRoot":"","sources":["../../../../src/quser/interfaces/userRepository.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
9
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.FromTokenToUser = void 0;
|
|
13
|
+
const tsyringe_1 = require("tsyringe");
|
|
14
|
+
const constants_1 = require("../../common/constants");
|
|
15
|
+
const user_1 = require("../entities/user");
|
|
16
|
+
let FromTokenToUser = class FromTokenToUser {
|
|
17
|
+
constructor(userRepository) {
|
|
18
|
+
this.userRepository = userRepository;
|
|
19
|
+
}
|
|
20
|
+
async execute({ body, }) {
|
|
21
|
+
if (body === null || body === void 0 ? void 0 : body.clientId) {
|
|
22
|
+
return {
|
|
23
|
+
userId: body.clientId,
|
|
24
|
+
roles: body.roles || [],
|
|
25
|
+
orgId: body.orgId || '',
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const current = await this.userRepository.getOne(body.userId);
|
|
29
|
+
if (!current) {
|
|
30
|
+
return {
|
|
31
|
+
userId: '',
|
|
32
|
+
roles: [],
|
|
33
|
+
orgId: '',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const user = new user_1.User(current);
|
|
37
|
+
return {
|
|
38
|
+
userId: body.userId,
|
|
39
|
+
roles: user.getGroups,
|
|
40
|
+
orgId: constants_1.ORGANIZATION_QRVEY,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
exports.FromTokenToUser = FromTokenToUser;
|
|
45
|
+
exports.FromTokenToUser = FromTokenToUser = __decorate([
|
|
46
|
+
(0, tsyringe_1.injectable)(),
|
|
47
|
+
__param(0, (0, tsyringe_1.inject)('UserRepository'))
|
|
48
|
+
], FromTokenToUser);
|
|
49
|
+
//# sourceMappingURL=fromTokenToUser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fromTokenToUser.js","sourceRoot":"","sources":["../../../../src/quser/services/fromTokenToUser.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA8C;AAE9C,sDAA4D;AAE5D,2CAAwC;AAIjC,IAAM,eAAe,GAArB,MAAM,eAAe;IACxB,YAEqB,cAAuC;QAAvC,mBAAc,GAAd,cAAc,CAAyB;IACzD,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,EACjB,IAAI,GAGP;QACG,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAE,CAAC;YACjB,OAAO;gBACH,MAAM,EAAE,IAAI,CAAC,QAAQ;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;aAC1B,CAAC;QACN,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO;gBACH,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE;aACZ,CAAC;QACN,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,KAAK,EAAE,8BAAkB;SAC5B,CAAC;IACN,CAAC;CACJ,CAAA;AAlCY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,qBAAU,GAAE;IAGJ,WAAA,IAAA,iBAAM,EAAC,gBAAgB,CAAC,CAAA;GAFpB,eAAe,CAkC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detailsRepository.interface.js","sourceRoot":"","sources":["../../../../src/sharing/interfaces/detailsRepository.interface.ts"],"names":[],"mappings":""}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -67,7 +67,54 @@ var ACCESS_LEVEL = /* @__PURE__ */ ((ACCESS_LEVEL3) => {
|
|
|
67
67
|
})(ACCESS_LEVEL || {});
|
|
68
68
|
var LIMIT_PER_PAGE = 10;
|
|
69
69
|
|
|
70
|
-
// src/
|
|
70
|
+
// src/quser/implementations/user.model.ts
|
|
71
|
+
var UserModel = class extends CrudSchema {
|
|
72
|
+
};
|
|
73
|
+
UserModel.table = {
|
|
74
|
+
name: `${DATABASE_INFO.SERVER_PREFIX}Users`,
|
|
75
|
+
alias: "qv_users"
|
|
76
|
+
};
|
|
77
|
+
UserModel.columns = {
|
|
78
|
+
userid: {
|
|
79
|
+
type: "string",
|
|
80
|
+
primary: true,
|
|
81
|
+
columnId: true
|
|
82
|
+
},
|
|
83
|
+
groups: {
|
|
84
|
+
type: "array"
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
UserModel.schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
|
|
88
|
+
var poolClient;
|
|
89
|
+
function getPoolClient() {
|
|
90
|
+
if (!poolClient)
|
|
91
|
+
poolClient = getDbPool();
|
|
92
|
+
return poolClient;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// src/common/persistence/base.ts
|
|
96
|
+
var BaseRepository = class extends CrudService {
|
|
97
|
+
constructor(schema) {
|
|
98
|
+
super(schema, getPoolClient());
|
|
99
|
+
}
|
|
100
|
+
filter(attribute, value) {
|
|
101
|
+
return buildFilter(attribute, value);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// src/quser/implementations/user.repository.ts
|
|
106
|
+
var UserRepository = class extends BaseRepository {
|
|
107
|
+
constructor() {
|
|
108
|
+
super(UserModel);
|
|
109
|
+
}
|
|
110
|
+
async getOne(identifier) {
|
|
111
|
+
const params = {
|
|
112
|
+
filters: [this.filter("userid", identifier)]
|
|
113
|
+
};
|
|
114
|
+
const response = await super.findItem(params);
|
|
115
|
+
return response;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
71
118
|
var SharingDetailsModel = class extends CrudSchema {
|
|
72
119
|
};
|
|
73
120
|
SharingDetailsModel.table = {
|
|
@@ -154,22 +201,6 @@ SharingDetailsModel.indexes = {
|
|
|
154
201
|
};
|
|
155
202
|
SharingDetailsModel.schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
|
|
156
203
|
SharingDetailsModel.usePool = true;
|
|
157
|
-
var poolClient;
|
|
158
|
-
function getPoolClient() {
|
|
159
|
-
if (!poolClient)
|
|
160
|
-
poolClient = getDbPool();
|
|
161
|
-
return poolClient;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// src/common/persistence/base.ts
|
|
165
|
-
var BaseRepository = class extends CrudService {
|
|
166
|
-
constructor(schema) {
|
|
167
|
-
super(schema, getPoolClient());
|
|
168
|
-
}
|
|
169
|
-
filter(attribute, value) {
|
|
170
|
-
return buildFilter(attribute, value);
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
204
|
|
|
174
205
|
// src/sharing/implementations/details.repository.ts
|
|
175
206
|
var SharingDetailsRepository = class extends BaseRepository {
|
|
@@ -292,7 +323,63 @@ container.register(
|
|
|
292
323
|
"SharingDetailsRepository",
|
|
293
324
|
SharingDetailsRepository
|
|
294
325
|
);
|
|
326
|
+
container.register("UserRepository", UserRepository);
|
|
295
327
|
var Context = container;
|
|
328
|
+
|
|
329
|
+
// src/quser/entities/user.ts
|
|
330
|
+
var User = class {
|
|
331
|
+
constructor(params) {
|
|
332
|
+
this.userId = params.userid;
|
|
333
|
+
this.email = params.email;
|
|
334
|
+
this.groups = params.groups;
|
|
335
|
+
this.organization = params.organization;
|
|
336
|
+
}
|
|
337
|
+
get getEmail() {
|
|
338
|
+
return this.email;
|
|
339
|
+
}
|
|
340
|
+
get getGroups() {
|
|
341
|
+
return this.groups;
|
|
342
|
+
}
|
|
343
|
+
get getOrganization() {
|
|
344
|
+
return this.organization;
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
// src/quser/services/fromTokenToUser.ts
|
|
349
|
+
var FromTokenToUser = class {
|
|
350
|
+
constructor(userRepository) {
|
|
351
|
+
this.userRepository = userRepository;
|
|
352
|
+
}
|
|
353
|
+
async execute({
|
|
354
|
+
body
|
|
355
|
+
}) {
|
|
356
|
+
if (body == null ? void 0 : body.clientId) {
|
|
357
|
+
return {
|
|
358
|
+
userId: body.clientId,
|
|
359
|
+
roles: body.roles || [],
|
|
360
|
+
orgId: body.orgId || ""
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
const current = await this.userRepository.getOne(body.userId);
|
|
364
|
+
if (!current) {
|
|
365
|
+
return {
|
|
366
|
+
userId: "",
|
|
367
|
+
roles: [],
|
|
368
|
+
orgId: ""
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
const user = new User(current);
|
|
372
|
+
return {
|
|
373
|
+
userId: body.userId,
|
|
374
|
+
roles: user.getGroups,
|
|
375
|
+
orgId: ORGANIZATION_QRVEY
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
};
|
|
379
|
+
FromTokenToUser = __decorateClass([
|
|
380
|
+
injectable(),
|
|
381
|
+
__decorateParam(0, inject("UserRepository"))
|
|
382
|
+
], FromTokenToUser);
|
|
296
383
|
var SharingDetail = class _SharingDetail {
|
|
297
384
|
constructor(params) {
|
|
298
385
|
this.sharingDetailsId = params.sharingDetailsId;
|
|
@@ -625,7 +712,8 @@ var api = {
|
|
|
625
712
|
delete: (...args) => Context.resolve(DeleteSharing).execute(...args)
|
|
626
713
|
};
|
|
627
714
|
var checkUserAccessLevel = (...args) => Context.resolve(CheckUserAccessLevel).execute(...args);
|
|
715
|
+
var fromTokenToUser = (...args) => Context.resolve(FromTokenToUser).execute(...args);
|
|
628
716
|
|
|
629
|
-
export { ACCESS_LEVEL, ASSET_TYPE, ORGANIZATION_QRVEY, SHARED_ORIGIN, SHARE_TYPE, api, checkUserAccessLevel };
|
|
717
|
+
export { ACCESS_LEVEL, ASSET_TYPE, ORGANIZATION_QRVEY, SHARED_ORIGIN, SHARE_TYPE, api, checkUserAccessLevel, fromTokenToUser };
|
|
630
718
|
//# sourceMappingURL=out.js.map
|
|
631
719
|
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/context.ts","../../src/sharing/implementations/details.model.ts","../../src/common/constants.ts","../../src/common/persistence/base.ts","../../src/common/persistence/poolClient.ts","../../src/sharing/implementations/details.repository.ts","../../src/sharing/implementations/sharing.model.ts","../../src/sharing/implementations/sharing.repository.ts","../../src/sharing/services/checkUserAccessLevel.ts","../../src/sharing/entities/details.ts","../../src/sharing/services/delete.ts","../../src/sharing/services/list.ts","../../src/sharing/services/upsert.ts","../../src/sharing/entities/sharing.ts"],"names":["ASSET_TYPE","SHARED_ORIGIN","SHARE_TYPE","ACCESS_LEVEL","CrudSchema","inject","injectable"],"mappings":"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","sourcesContent":["import 'reflect-metadata';\nimport { Context } from './context';\nimport { CheckUserAccessLevel } from './sharing/services/checkUserAccessLevel';\nimport { DeleteSharing } from './sharing/services/delete';\nimport { ListSharing } from './sharing/services/list';\nimport { UpsertSharing } from './sharing/services/upsert';\n\nexport const api = {\n upsert: (...args: Parameters<UpsertSharing['execute']>) =>\n Context.resolve(UpsertSharing).execute(...args),\n list: (...args: Parameters<ListSharing['execute']>) =>\n Context.resolve(ListSharing).execute(...args),\n delete: (...args: Parameters<DeleteSharing['execute']>) =>\n Context.resolve(DeleteSharing).execute(...args),\n};\n\nexport const checkUserAccessLevel = (\n ...args: Parameters<CheckUserAccessLevel['execute']>\n) => Context.resolve(CheckUserAccessLevel).execute(...args);\n\nexport {\n ACCESS_LEVEL,\n ASSET_TYPE,\n ORGANIZATION_QRVEY,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from './common/constants';\n\nexport { GetSharingList } from './sharing/entities/types/details.type';\n","import { container } from 'tsyringe';\n\nimport { SharingDetailsRepository } from './sharing/implementations/details.repository';\nimport { SharingRepository } from './sharing/implementations/sharing.repository';\nimport { type SharingDetailsRepositoryInterface } from './sharing/interfaces/details.interface';\nimport { type SharingRepositoryInterface } from './sharing/interfaces/sharingRepository.interface';\n\ncontainer.register<SharingRepositoryInterface>(\n 'SharingRepository',\n SharingRepository,\n);\ncontainer.register<SharingDetailsRepositoryInterface>(\n 'SharingDetailsRepository',\n SharingDetailsRepository,\n);\n\nexport const Context = container;\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class SharingDetailsModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_sharing_details`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing_details`,\n };\n\n static columns = {\n sharing_details_id: { type: 'string', primary: true },\n asset_id: { type: 'string' },\n access_level: { type: 'numeric' },\n org_id: { type: 'string' },\n shared_with: { type: 'string' },\n shared_type: { type: 'string' },\n shared_email: { type: 'string' },\n share_origin: { type: 'string' },\n created_at: { type: 'date' },\n updated_at: { type: 'date' },\n deleted_at: { type: 'date' },\n };\n\n static indexes = {\n sharingDetailsOrgId: {\n name: 'sharing_details_org_id_index',\n columns: [\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsSharedWithAccessLevel: {\n name: 'sharing_details_shared_with_access_level_index',\n columns: [\n 'shared_with',\n 'access_level',\n 'asset_id',\n 'sharing_details_id',\n 'org_id',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAccessLevelSharedWithOrgId: {\n name: 'sharing_details_access_level_shared_with_org_id_index',\n columns: [\n 'access_level',\n 'shared_with',\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAccessLevelOrgId: {\n name: 'sharing_details_access_level_org_id_index',\n columns: [\n 'access_level',\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAssetId: {\n name: 'sharing_details_asset_id_index',\n columns: [\n 'asset_id',\n 'sharing_details_id',\n 'org_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static usePool = true;\n}\n","export const ENVIRONMENT = {\n SERVER_PREFIX: process.env.SERVER_PREFIX,\n TABLE_PREFIX: process.env.TABLE_PREFIX,\n};\n\nexport const DATABASE_INFO = {\n DATA_PERSISTENCE_SCHEMA: 'admin',\n SERVER_PREFIX: ENVIRONMENT.SERVER_PREFIX,\n TABLE_PREFIX: ENVIRONMENT.TABLE_PREFIX,\n};\n\nexport const ORGANIZATION_QRVEY = 'org:0';\n\nexport enum ASSET_TYPE {\n DX = 'DX',\n}\n\nexport enum SHARED_ORIGIN {\n INTERNAL = 'INTERNAL',\n EXTERNAL = 'EXTERNAL',\n}\n\nexport enum SHARE_TYPE {\n USER = 'USER',\n ROLE = 'ROLE',\n ORGANIZATION = 'ORGANIZATION',\n}\n\nexport enum ACCESS_LEVEL {\n NONE = 0,\n CAN_USE = 1,\n CAN_EDIT = 2,\n ADMIN = 4,\n}\n\nexport const LIMIT_PER_PAGE = 10;\n","import { CrudService, buildFilter } from '@qrvey/data-persistence';\n\nimport { getPoolClient } from './poolClient';\n\nexport class BaseRepository extends CrudService<any> {\n constructor(schema: any) {\n super(schema, getPoolClient());\n }\n\n filter(attribute: string, value: any) {\n return buildFilter(attribute, value);\n }\n}\n","import { getDbPool } from '@qrvey/data-persistence';\n\nlet poolClient: any;\nexport function getPoolClient() {\n if (!poolClient) poolClient = getDbPool();\n return poolClient;\n}\n","import { SharingDetailsModel } from './details.model';\nimport { ListInput, ListOutput, Pagination } from '../../common/common.type';\nimport { LIMIT_PER_PAGE } from '../../common/constants';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { SharingDetailsTable } from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/details.interface';\n\nexport class SharingDetailsRepository\n extends BaseRepository\n implements SharingDetailsRepositoryInterface\n{\n constructor() {\n super(SharingDetailsModel);\n }\n\n async getOne(sharingDetailId: string): Promise<SharingDetailsTable | null> {\n const params = {\n filters: [this.filter('sharing_details_id', sharingDetailId)],\n };\n const response = await super.findItem(params);\n return response as SharingDetailsTable;\n }\n\n async getList(\n options: ListInput<{ assetId: string }>,\n ): Promise<ListOutput<SharingDetailsTable>> {\n const assetIndex = SharingDetailsModel.indexes.sharingDetailsAssetId;\n const pagination = this.getPagination(options.pagination);\n const params: {\n pagination: any;\n index: any;\n filters?: any;\n sorting?: any;\n } = {\n pagination,\n index: {\n indexName: assetIndex.name,\n columns: assetIndex.columns,\n },\n };\n\n const filterList = [this.filter('asset_id', options.data.assetId)];\n if (options.filters) {\n options.filters.forEach((filter) => {\n filterList.push(this.filter(filter.column, filter.value));\n });\n }\n params.filters = filterList;\n\n if (options.sorting) params.sorting = options.sorting;\n\n const response = await super.find(params);\n return response as ListOutput<SharingDetailsTable>;\n }\n\n async create(details: SharingDetailsTable): Promise<SharingDetailsTable> {\n const response = (await super.create(details)) as SharingDetailsTable;\n return response;\n }\n\n async patch(\n sharingDetailId: string,\n details: SharingDetailsTable,\n ): Promise<boolean> {\n await super.update(\n [this.filter('sharing_details_id', sharingDetailId)],\n details,\n );\n return true;\n }\n\n async delete(sharingDetailId: string): Promise<boolean> {\n await super.remove([\n this.filter('sharing_details_id', sharingDetailId),\n ]);\n return true;\n }\n\n private getPagination(options?: Pagination): Pagination {\n return {\n limit: options?.limit ?? LIMIT_PER_PAGE,\n from: options?.from ?? undefined,\n };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class SharingModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_sharing`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing`,\n };\n\n static columns = {\n asset_id: { type: 'string', primary: true },\n asset_type: { type: 'string' },\n created_at: { type: 'date' },\n updated_at: { type: 'date' },\n deleted_at: { type: 'date' },\n qvAttributes: { type: 'object' },\n };\n\n static indexes = {\n sharingAssetIdAssetType: {\n name: 'sharing_asset_id_asset_type_index',\n columns: ['asset_id', 'asset_type'],\n },\n sharingAssetType: {\n name: 'sharing_asset_type_index',\n columns: ['asset_type'],\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static usePool = true;\n}\n","import { SharingModel } from './sharing.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { SharingTable } from '../entities/types/sharing.type';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport class SharingRepository\n extends BaseRepository\n implements SharingRepositoryInterface\n{\n constructor() {\n super(SharingModel);\n }\n\n async getOne(assetId: string): Promise<SharingTable | null> {\n const params = {\n filters: [this.filter('asset_id', assetId)],\n };\n const response = await super.findItem(params);\n return response as SharingTable;\n }\n\n async create(sharing: SharingTable): Promise<SharingTable> {\n const response = (await super.create(sharing)) as SharingTable;\n return response;\n }\n\n async patch(assetId: string, sharing: SharingTable): Promise<boolean> {\n await super.update([this.filter('asset_id', assetId)], sharing);\n return true;\n }\n\n async delete(assetId: string): Promise<boolean> {\n await super.remove([this.filter('asset_id', assetId)]);\n return true;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ACCESS_LEVEL } from '../../common/constants';\nimport { SharingDetail } from '../entities/details';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/details.interface';\n\n@injectable()\nexport class CheckUserAccessLevel {\n constructor(\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n userId,\n orgId,\n assetId,\n }: {\n userId: string;\n orgId: string;\n assetId: string;\n }): Promise<{ level: ACCESS_LEVEL; levelAsText: string }> {\n const details = await this.detailsRepository.getList({\n data: { assetId },\n filters: [\n { column: 'shared_with', value: userId },\n { column: 'org_id', value: orgId },\n ],\n sorting: [{ column: 'access_level', direction: 'DESC' }],\n pagination: { limit: 1 },\n });\n if (details.items.length === 0)\n return { level: ACCESS_LEVEL.NONE, levelAsText: 'NONE' };\n const currentDetail = SharingDetail.parse(details.items[0]);\n return {\n level: currentDetail.getAccessLevel,\n levelAsText: currentDetail.getAccessLevelAsText,\n };\n }\n}\n","import { getId } from '@qrvey/id-generator';\n\nimport {\n BaseSharingDetails,\n CreateSharingDetails,\n ResponseSharingDetails,\n SharingDetailsTable,\n UpdateSharingDetails,\n} from './types/details.type';\nimport {\n ACCESS_LEVEL,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from '../../common/constants';\n\nexport class SharingDetail {\n private sharingDetailsId: string;\n private assetId: string;\n private accessLevel: ACCESS_LEVEL;\n private accessLevelAsText: string;\n private orgId: string;\n private sharedWith: string;\n private sharedType: SHARE_TYPE;\n private sharedOrigin: SHARED_ORIGIN;\n private sharedEmail?: string;\n private createdAt: string;\n private updatedAt: string;\n private deletedAt?: string;\n\n constructor(params: BaseSharingDetails) {\n this.sharingDetailsId = params.sharingDetailsId;\n this.assetId = params.assetId;\n this.accessLevel = params.accessLevel;\n this.accessLevelAsText = this.convertAccessLevelToText(\n params.accessLevel,\n );\n this.orgId = params.orgId;\n this.sharedWith = params.sharedWith;\n this.sharedType = params.sharedType;\n this.sharedEmail = params.sharedEmail;\n this.sharedOrigin = params.sharedOrigin;\n this.createdAt = params.createdAt;\n this.updatedAt = params.updatedAt;\n this.deletedAt = params.deletedAt;\n }\n\n static create(params: CreateSharingDetails): SharingDetail {\n const now = new Date().toISOString();\n const obj: BaseSharingDetails = {\n ...params,\n sharingDetailsId: params.sharedId ?? getId(),\n createdAt: now,\n updatedAt: now,\n };\n return new SharingDetail(obj);\n }\n\n static parse(params: SharingDetailsTable): SharingDetail {\n return new SharingDetail({\n sharingDetailsId: params.sharing_details_id,\n assetId: params.asset_id,\n accessLevel: params.access_level as ACCESS_LEVEL,\n orgId: params.org_id,\n sharedWith: params.shared_with,\n sharedType: params.shared_type as SHARE_TYPE,\n sharedEmail: params.shared_email,\n sharedOrigin: params.share_origin as SHARED_ORIGIN,\n createdAt: params.created_at,\n updatedAt: params.updated_at,\n deletedAt: params.deleted_at,\n });\n }\n\n update(params: UpdateSharingDetails) {\n if (params.accessLevel) this.accessLevel = params.accessLevel;\n if (params.sharedEmail) this.sharedEmail = params.sharedEmail;\n this.updatedAt = new Date().toISOString();\n }\n\n toTable(): SharingDetailsTable {\n return {\n sharing_details_id: this.sharingDetailsId,\n asset_id: this.assetId,\n access_level: this.accessLevel,\n org_id: this.orgId,\n shared_with: this.sharedWith,\n shared_type: this.sharedType,\n shared_email: this.sharedEmail,\n share_origin: this.sharedOrigin,\n created_at: this.createdAt,\n updated_at: this.updatedAt,\n deleted_at: this.deletedAt,\n };\n }\n\n toPlain(): BaseSharingDetails {\n return {\n sharingDetailsId: this.sharingDetailsId,\n assetId: this.assetId,\n accessLevel: this.accessLevel,\n orgId: this.orgId,\n sharedWith: this.sharedWith,\n sharedType: this.sharedType,\n sharedEmail: this.sharedEmail,\n sharedOrigin: this.sharedOrigin,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n deletedAt: this.deletedAt,\n };\n }\n\n toJSON(): ResponseSharingDetails {\n return {\n sharedId: this.sharingDetailsId,\n assetId: this.assetId,\n accessLevel: this.accessLevel,\n accessLevelAsText: this.accessLevelAsText,\n orgId: this.orgId,\n sharedWith: this.sharedWith,\n sharedType: this.sharedType,\n sharedEmail: this.sharedEmail,\n sharedOrigin: this.sharedOrigin,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n };\n }\n\n public get getSharingDetailsId(): string {\n return this.sharingDetailsId;\n }\n\n public get getAccessLevel(): ACCESS_LEVEL {\n return this.accessLevel;\n }\n\n public get getAccessLevelAsText(): string {\n return this.accessLevelAsText;\n }\n\n private convertAccessLevelToText(level: number): string {\n return ACCESS_LEVEL[level] ?? 'UNKNOWN';\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport interface Delete {\n assetId: string;\n}\n\n@injectable()\nexport class DeleteSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n ) {}\n\n public async execute({ body }: { body: Delete }): Promise<boolean | null> {\n const { assetId } = body;\n const sharing = await this.sharingRepository.getOne(assetId);\n\n if (!sharing) return null;\n const detailSharing = await this.sharingRepository.delete(assetId);\n return detailSharing;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { SharingDetail } from '../entities/details';\nimport {\n GetSharingList,\n ListSharingDetails,\n SharingDetailsTable,\n} from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/details.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\n@injectable()\nexport class ListSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: GetSharingList;\n }): Promise<ListSharingDetails | null> {\n const {\n data: { assetId },\n pagination,\n } = body;\n const sharing = await this.sharingRepository.getOne(assetId);\n\n if (!sharing) return null;\n const detailSharing = await this.detailsRepository.getList({\n data: { assetId },\n pagination,\n });\n const items = detailSharing.items.map((item) =>\n SharingDetail.parse(item as SharingDetailsTable).toJSON(),\n );\n return {\n ...detailSharing,\n items,\n };\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport {\n ACCESS_LEVEL,\n ASSET_TYPE,\n ORGANIZATION_QRVEY,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from '../../common/constants';\nimport { SharingDetail } from '../entities/details';\nimport { Sharing } from '../entities/sharing';\nimport { ResponseSharingDetails } from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/details.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport interface UpsertInterface {\n assetId: string;\n assetType: ASSET_TYPE;\n add?: Array<{\n sharedId?: string;\n sharedWith: string;\n sharedOrigin: SHARED_ORIGIN;\n accessLevel: ACCESS_LEVEL;\n orgId?: string;\n sharedEmail?: string;\n sharedType: SHARE_TYPE;\n }>;\n remove?: Array<{\n sharedId: string;\n }>;\n}\n\n@injectable()\nexport class UpsertSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UpsertInterface;\n }): Promise<ResponseSharingDetails[]> {\n const assetId = body.assetId;\n const sharing = await this.sharingRepository.getOne(assetId);\n let currentSharing: Sharing;\n if (sharing) {\n currentSharing = Sharing.parse(sharing);\n } else {\n const createSharing = {\n assetId: body.assetId,\n assetType: body.assetType,\n };\n currentSharing = Sharing.create(createSharing);\n await this.sharingRepository.create(currentSharing.toTable());\n }\n\n let updatedList: SharingDetail[] = [];\n if (body.add) updatedList = await this.addDetails(assetId, body.add);\n if (body.remove) await this.removeDetails(body.remove);\n\n currentSharing.update();\n await this.sharingRepository.patch(\n currentSharing.getAssetId,\n currentSharing.toTable(),\n );\n return updatedList.map((detail) => detail.toJSON());\n }\n\n private async addDetails(\n assetId: string,\n list: Required<UpsertInterface>['add'],\n ): Promise<SharingDetail[]> {\n const sharingList: SharingDetail[] = [];\n for (const detail of list) {\n let currentDetail: SharingDetail;\n const sharingDetail = !detail.sharedId\n ? null\n : await this.detailsRepository.getOne(detail.sharedId);\n if (sharingDetail) {\n currentDetail = SharingDetail.parse(sharingDetail);\n currentDetail.update(detail);\n await this.detailsRepository.patch(\n currentDetail.getSharingDetailsId,\n currentDetail.toTable(),\n );\n } else {\n const createDetails = {\n assetId: assetId,\n orgId: detail.orgId ?? ORGANIZATION_QRVEY, //TODO If shareOrigin is INTERNAL then `ORGANIZATION_QRVEY` else fail\n ...detail,\n };\n currentDetail = SharingDetail.create(createDetails);\n await this.detailsRepository.create(currentDetail.toTable());\n }\n sharingList.push(currentDetail);\n }\n return sharingList;\n }\n\n private async removeDetails(\n list: Required<UpsertInterface>['remove'],\n ): Promise<void> {\n for (const detail of list) {\n await this.detailsRepository.delete(detail.sharedId);\n }\n }\n}\n","import {\n BaseSharing,\n CreateSharing,\n ResponseSharing,\n SharingTable,\n} from './types/sharing.type';\nimport { ASSET_TYPE } from '../../common/constants';\n\nexport class Sharing {\n private assetId: string;\n private assetType: ASSET_TYPE;\n private createdAt: string;\n private updatedAt: string;\n private deletedAt?: string;\n\n constructor(params: BaseSharing) {\n this.assetId = params.assetId;\n this.assetType = params.assetType;\n this.createdAt = params.createdAt;\n this.updatedAt = params.updatedAt;\n this.deletedAt = params.deletedAt;\n }\n\n static create(params: CreateSharing): Sharing {\n const now = new Date().toISOString();\n const obj: BaseSharing = {\n ...params,\n createdAt: now,\n updatedAt: now,\n };\n return new Sharing(obj);\n }\n\n static parse(params: SharingTable): Sharing {\n return new Sharing({\n assetId: params.asset_id,\n assetType: params.asset_type as ASSET_TYPE,\n createdAt: params.created_at,\n updatedAt: params.updated_at,\n deletedAt: params.deleted_at,\n });\n }\n\n update() {\n this.updatedAt = new Date().toISOString();\n }\n\n toTable(): SharingTable {\n return {\n asset_id: this.assetId,\n asset_type: this.assetType,\n created_at: this.createdAt,\n updated_at: this.updatedAt,\n deleted_at: this.deletedAt,\n };\n }\n\n toPlain(): BaseSharing {\n return {\n assetId: this.assetId,\n assetType: this.assetType,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n deletedAt: this.deletedAt,\n };\n }\n\n toJSON(): ResponseSharing {\n return {\n assetId: this.assetId,\n assetType: this.assetType,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n };\n }\n\n public get getAssetId(): string {\n return this.assetId;\n }\n\n public get getAssetType(): string {\n return this.assetType;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/context.ts","../../src/quser/implementations/user.model.ts","../../src/common/constants.ts","../../src/common/persistence/base.ts","../../src/common/persistence/poolClient.ts","../../src/quser/implementations/user.repository.ts","../../src/sharing/implementations/details.model.ts","../../src/sharing/implementations/details.repository.ts","../../src/sharing/implementations/sharing.model.ts","../../src/sharing/implementations/sharing.repository.ts","../../src/quser/services/fromTokenToUser.ts","../../src/quser/entities/user.ts","../../src/sharing/services/checkUserAccessLevel.ts","../../src/sharing/entities/details.ts","../../src/sharing/services/delete.ts","../../src/sharing/services/list.ts","../../src/sharing/services/upsert.ts","../../src/sharing/entities/sharing.ts"],"names":["ASSET_TYPE","SHARED_ORIGIN","SHARE_TYPE","ACCESS_LEVEL","CrudSchema","inject","injectable"],"mappings":"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","sourcesContent":["import 'reflect-metadata';\nimport { Context } from './context';\nimport { FromTokenToUser } from './quser/services/fromTokenToUser';\nimport { CheckUserAccessLevel } from './sharing/services/checkUserAccessLevel';\nimport { DeleteSharing } from './sharing/services/delete';\nimport { ListSharing } from './sharing/services/list';\nimport { UpsertSharing } from './sharing/services/upsert';\n\nexport const api = {\n upsert: (...args: Parameters<UpsertSharing['execute']>) =>\n Context.resolve(UpsertSharing).execute(...args),\n list: (...args: Parameters<ListSharing['execute']>) =>\n Context.resolve(ListSharing).execute(...args),\n delete: (...args: Parameters<DeleteSharing['execute']>) =>\n Context.resolve(DeleteSharing).execute(...args),\n};\n\nexport const checkUserAccessLevel = (\n ...args: Parameters<CheckUserAccessLevel['execute']>\n) => Context.resolve(CheckUserAccessLevel).execute(...args);\n\nexport const fromTokenToUser = (\n ...args: Parameters<FromTokenToUser['execute']>\n) => Context.resolve(FromTokenToUser).execute(...args);\n\nexport {\n ACCESS_LEVEL,\n ASSET_TYPE,\n ORGANIZATION_QRVEY,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from './common/constants';\n\nexport { GetSharingList } from './sharing/entities/types/details.type';\n","import { container } from 'tsyringe';\n\nimport { UserRepository } from './quser/implementations/user.repository';\nimport { type UserRepositoryInterface } from './quser/interfaces/userRepository.interface';\nimport { SharingDetailsRepository } from './sharing/implementations/details.repository';\nimport { SharingRepository } from './sharing/implementations/sharing.repository';\nimport { type SharingDetailsRepositoryInterface } from './sharing/interfaces/detailsRepository.interface';\nimport { type SharingRepositoryInterface } from './sharing/interfaces/sharingRepository.interface';\n\ncontainer.register<SharingRepositoryInterface>(\n 'SharingRepository',\n SharingRepository,\n);\ncontainer.register<SharingDetailsRepositoryInterface>(\n 'SharingDetailsRepository',\n SharingDetailsRepository,\n);\ncontainer.register<UserRepositoryInterface>('UserRepository', UserRepository);\n\nexport const Context = container;\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class UserModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}Users`,\n alias: 'qv_users',\n };\n\n static columns = {\n userid: {\n type: 'string',\n primary: true,\n columnId: true,\n },\n groups: {\n type: 'array',\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n}\n","export const ENVIRONMENT = {\n SERVER_PREFIX: process.env.SERVER_PREFIX,\n TABLE_PREFIX: process.env.TABLE_PREFIX,\n};\n\nexport const DATABASE_INFO = {\n DATA_PERSISTENCE_SCHEMA: 'admin',\n SERVER_PREFIX: ENVIRONMENT.SERVER_PREFIX,\n TABLE_PREFIX: ENVIRONMENT.TABLE_PREFIX,\n};\n\nexport const ORGANIZATION_QRVEY = 'org:0';\n\nexport enum ASSET_TYPE {\n DX = 'DX',\n}\n\nexport enum SHARED_ORIGIN {\n INTERNAL = 'INTERNAL',\n EXTERNAL = 'EXTERNAL',\n}\n\nexport enum SHARE_TYPE {\n USER = 'USER',\n ROLE = 'ROLE',\n ORGANIZATION = 'ORGANIZATION',\n}\n\nexport enum ACCESS_LEVEL {\n NONE = 0,\n CAN_USE = 1,\n CAN_EDIT = 2,\n ADMIN = 4,\n}\n\nexport const LIMIT_PER_PAGE = 10;\n","import { CrudService, buildFilter } from '@qrvey/data-persistence';\n\nimport { getPoolClient } from './poolClient';\n\nexport class BaseRepository extends CrudService<any> {\n constructor(schema: any) {\n super(schema, getPoolClient());\n }\n\n filter(attribute: string, value: any) {\n return buildFilter(attribute, value);\n }\n}\n","import { getDbPool } from '@qrvey/data-persistence';\n\nlet poolClient: any;\nexport function getPoolClient() {\n if (!poolClient) poolClient = getDbPool();\n return poolClient;\n}\n","import { UserModel } from './user.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { BaseUser } from '../entities/types/user.type';\nimport { UserRepositoryInterface } from '../interfaces/userRepository.interface';\n\nexport class UserRepository\n extends BaseRepository\n implements UserRepositoryInterface\n{\n constructor() {\n super(UserModel);\n }\n\n async getOne(identifier: string): Promise<BaseUser | null> {\n const params = {\n filters: [this.filter('userid', identifier)],\n };\n const response = await super.findItem(params);\n return response as BaseUser;\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class SharingDetailsModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_sharing_details`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing_details`,\n };\n\n static columns = {\n sharing_details_id: { type: 'string', primary: true },\n asset_id: { type: 'string' },\n access_level: { type: 'numeric' },\n org_id: { type: 'string' },\n shared_with: { type: 'string' },\n shared_type: { type: 'string' },\n shared_email: { type: 'string' },\n share_origin: { type: 'string' },\n created_at: { type: 'date' },\n updated_at: { type: 'date' },\n deleted_at: { type: 'date' },\n };\n\n static indexes = {\n sharingDetailsOrgId: {\n name: 'sharing_details_org_id_index',\n columns: [\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsSharedWithAccessLevel: {\n name: 'sharing_details_shared_with_access_level_index',\n columns: [\n 'shared_with',\n 'access_level',\n 'asset_id',\n 'sharing_details_id',\n 'org_id',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAccessLevelSharedWithOrgId: {\n name: 'sharing_details_access_level_shared_with_org_id_index',\n columns: [\n 'access_level',\n 'shared_with',\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAccessLevelOrgId: {\n name: 'sharing_details_access_level_org_id_index',\n columns: [\n 'access_level',\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAssetId: {\n name: 'sharing_details_asset_id_index',\n columns: [\n 'asset_id',\n 'sharing_details_id',\n 'org_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static usePool = true;\n}\n","import { SharingDetailsModel } from './details.model';\nimport { ListInput, ListOutput, Pagination } from '../../common/common.type';\nimport { LIMIT_PER_PAGE } from '../../common/constants';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { SharingDetailsTable } from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\n\nexport class SharingDetailsRepository\n extends BaseRepository\n implements SharingDetailsRepositoryInterface\n{\n constructor() {\n super(SharingDetailsModel);\n }\n\n async getOne(sharingDetailId: string): Promise<SharingDetailsTable | null> {\n const params = {\n filters: [this.filter('sharing_details_id', sharingDetailId)],\n };\n const response = await super.findItem(params);\n return response as SharingDetailsTable;\n }\n\n async getList(\n options: ListInput<{ assetId: string }>,\n ): Promise<ListOutput<SharingDetailsTable>> {\n const assetIndex = SharingDetailsModel.indexes.sharingDetailsAssetId;\n const pagination = this.getPagination(options.pagination);\n const params: {\n pagination: any;\n index: any;\n filters?: any;\n sorting?: any;\n } = {\n pagination,\n index: {\n indexName: assetIndex.name,\n columns: assetIndex.columns,\n },\n };\n\n const filterList = [this.filter('asset_id', options.data.assetId)];\n if (options.filters) {\n options.filters.forEach((filter) => {\n filterList.push(this.filter(filter.column, filter.value));\n });\n }\n params.filters = filterList;\n\n if (options.sorting) params.sorting = options.sorting;\n\n const response = await super.find(params);\n return response as ListOutput<SharingDetailsTable>;\n }\n\n async create(details: SharingDetailsTable): Promise<SharingDetailsTable> {\n const response = (await super.create(details)) as SharingDetailsTable;\n return response;\n }\n\n async patch(\n sharingDetailId: string,\n details: SharingDetailsTable,\n ): Promise<boolean> {\n await super.update(\n [this.filter('sharing_details_id', sharingDetailId)],\n details,\n );\n return true;\n }\n\n async delete(sharingDetailId: string): Promise<boolean> {\n await super.remove([\n this.filter('sharing_details_id', sharingDetailId),\n ]);\n return true;\n }\n\n private getPagination(options?: Pagination): Pagination {\n return {\n limit: options?.limit ?? LIMIT_PER_PAGE,\n from: options?.from ?? undefined,\n };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class SharingModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_sharing`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing`,\n };\n\n static columns = {\n asset_id: { type: 'string', primary: true },\n asset_type: { type: 'string' },\n created_at: { type: 'date' },\n updated_at: { type: 'date' },\n deleted_at: { type: 'date' },\n qvAttributes: { type: 'object' },\n };\n\n static indexes = {\n sharingAssetIdAssetType: {\n name: 'sharing_asset_id_asset_type_index',\n columns: ['asset_id', 'asset_type'],\n },\n sharingAssetType: {\n name: 'sharing_asset_type_index',\n columns: ['asset_type'],\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static usePool = true;\n}\n","import { SharingModel } from './sharing.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { SharingTable } from '../entities/types/sharing.type';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport class SharingRepository\n extends BaseRepository\n implements SharingRepositoryInterface\n{\n constructor() {\n super(SharingModel);\n }\n\n async getOne(assetId: string): Promise<SharingTable | null> {\n const params = {\n filters: [this.filter('asset_id', assetId)],\n };\n const response = await super.findItem(params);\n return response as SharingTable;\n }\n\n async create(sharing: SharingTable): Promise<SharingTable> {\n const response = (await super.create(sharing)) as SharingTable;\n return response;\n }\n\n async patch(assetId: string, sharing: SharingTable): Promise<boolean> {\n await super.update([this.filter('asset_id', assetId)], sharing);\n return true;\n }\n\n async delete(assetId: string): Promise<boolean> {\n await super.remove([this.filter('asset_id', assetId)]);\n return true;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ORGANIZATION_QRVEY } from '../../common/constants';\nimport { ParamsFromTokenToUser, UserToken } from '../entities/types/user.type';\nimport { User } from '../entities/user';\nimport { UserRepositoryInterface } from '../interfaces/userRepository.interface';\n\n@injectable()\nexport class FromTokenToUser {\n constructor(\n @inject('UserRepository')\n private readonly userRepository: UserRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UserToken;\n }): Promise<ParamsFromTokenToUser> {\n if (body?.clientId) {\n return {\n userId: body.clientId,\n roles: body.roles || [],\n orgId: body.orgId || '',\n };\n }\n const current = await this.userRepository.getOne(body.userId);\n if (!current) {\n return {\n userId: '',\n roles: [],\n orgId: '',\n };\n }\n\n const user = new User(current);\n return {\n userId: body.userId,\n roles: user.getGroups,\n orgId: ORGANIZATION_QRVEY,\n };\n }\n}\n","import { BaseUser } from './types/user.type';\n\nexport class User {\n private userId: string;\n private email: string;\n private groups: string[];\n private organization: string;\n\n constructor(params: BaseUser) {\n this.userId = params.userid;\n this.email = params.email;\n this.groups = params.groups;\n this.organization = params.organization;\n }\n\n public get getEmail(): string {\n return this.email;\n }\n\n public get getGroups(): string[] {\n return this.groups;\n }\n\n public get getOrganization(): string {\n return this.organization;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ACCESS_LEVEL } from '../../common/constants';\nimport { SharingDetail } from '../entities/details';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\n\n@injectable()\nexport class CheckUserAccessLevel {\n constructor(\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n userId,\n orgId,\n assetId,\n }: {\n userId: string;\n orgId: string;\n assetId: string;\n }): Promise<{ level: ACCESS_LEVEL; levelAsText: string }> {\n const details = await this.detailsRepository.getList({\n data: { assetId },\n filters: [\n { column: 'shared_with', value: userId },\n { column: 'org_id', value: orgId },\n ],\n sorting: [{ column: 'access_level', direction: 'DESC' }],\n pagination: { limit: 1 },\n });\n if (details.items.length === 0)\n return { level: ACCESS_LEVEL.NONE, levelAsText: 'NONE' };\n const currentDetail = SharingDetail.parse(details.items[0]);\n return {\n level: currentDetail.getAccessLevel,\n levelAsText: currentDetail.getAccessLevelAsText,\n };\n }\n}\n","import { getId } from '@qrvey/id-generator';\n\nimport {\n BaseSharingDetails,\n CreateSharingDetails,\n ResponseSharingDetails,\n SharingDetailsTable,\n UpdateSharingDetails,\n} from './types/details.type';\nimport {\n ACCESS_LEVEL,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from '../../common/constants';\n\nexport class SharingDetail {\n private sharingDetailsId: string;\n private assetId: string;\n private accessLevel: ACCESS_LEVEL;\n private accessLevelAsText: string;\n private orgId: string;\n private sharedWith: string;\n private sharedType: SHARE_TYPE;\n private sharedOrigin: SHARED_ORIGIN;\n private sharedEmail?: string;\n private createdAt: string;\n private updatedAt: string;\n private deletedAt?: string;\n\n constructor(params: BaseSharingDetails) {\n this.sharingDetailsId = params.sharingDetailsId;\n this.assetId = params.assetId;\n this.accessLevel = params.accessLevel;\n this.accessLevelAsText = this.convertAccessLevelToText(\n params.accessLevel,\n );\n this.orgId = params.orgId;\n this.sharedWith = params.sharedWith;\n this.sharedType = params.sharedType;\n this.sharedEmail = params.sharedEmail;\n this.sharedOrigin = params.sharedOrigin;\n this.createdAt = params.createdAt;\n this.updatedAt = params.updatedAt;\n this.deletedAt = params.deletedAt;\n }\n\n static create(params: CreateSharingDetails): SharingDetail {\n const now = new Date().toISOString();\n const obj: BaseSharingDetails = {\n ...params,\n sharingDetailsId: params.sharedId ?? getId(),\n createdAt: now,\n updatedAt: now,\n };\n return new SharingDetail(obj);\n }\n\n static parse(params: SharingDetailsTable): SharingDetail {\n return new SharingDetail({\n sharingDetailsId: params.sharing_details_id,\n assetId: params.asset_id,\n accessLevel: params.access_level as ACCESS_LEVEL,\n orgId: params.org_id,\n sharedWith: params.shared_with,\n sharedType: params.shared_type as SHARE_TYPE,\n sharedEmail: params.shared_email,\n sharedOrigin: params.share_origin as SHARED_ORIGIN,\n createdAt: params.created_at,\n updatedAt: params.updated_at,\n deletedAt: params.deleted_at,\n });\n }\n\n update(params: UpdateSharingDetails) {\n if (params.accessLevel) this.accessLevel = params.accessLevel;\n if (params.sharedEmail) this.sharedEmail = params.sharedEmail;\n this.updatedAt = new Date().toISOString();\n }\n\n toTable(): SharingDetailsTable {\n return {\n sharing_details_id: this.sharingDetailsId,\n asset_id: this.assetId,\n access_level: this.accessLevel,\n org_id: this.orgId,\n shared_with: this.sharedWith,\n shared_type: this.sharedType,\n shared_email: this.sharedEmail,\n share_origin: this.sharedOrigin,\n created_at: this.createdAt,\n updated_at: this.updatedAt,\n deleted_at: this.deletedAt,\n };\n }\n\n toPlain(): BaseSharingDetails {\n return {\n sharingDetailsId: this.sharingDetailsId,\n assetId: this.assetId,\n accessLevel: this.accessLevel,\n orgId: this.orgId,\n sharedWith: this.sharedWith,\n sharedType: this.sharedType,\n sharedEmail: this.sharedEmail,\n sharedOrigin: this.sharedOrigin,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n deletedAt: this.deletedAt,\n };\n }\n\n toJSON(): ResponseSharingDetails {\n return {\n sharedId: this.sharingDetailsId,\n assetId: this.assetId,\n accessLevel: this.accessLevel,\n accessLevelAsText: this.accessLevelAsText,\n orgId: this.orgId,\n sharedWith: this.sharedWith,\n sharedType: this.sharedType,\n sharedEmail: this.sharedEmail,\n sharedOrigin: this.sharedOrigin,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n };\n }\n\n public get getSharingDetailsId(): string {\n return this.sharingDetailsId;\n }\n\n public get getAccessLevel(): ACCESS_LEVEL {\n return this.accessLevel;\n }\n\n public get getAccessLevelAsText(): string {\n return this.accessLevelAsText;\n }\n\n private convertAccessLevelToText(level: number): string {\n return ACCESS_LEVEL[level] ?? 'UNKNOWN';\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport interface Delete {\n assetId: string;\n}\n\n@injectable()\nexport class DeleteSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n ) {}\n\n public async execute({ body }: { body: Delete }): Promise<boolean | null> {\n const { assetId } = body;\n const sharing = await this.sharingRepository.getOne(assetId);\n\n if (!sharing) return null;\n const detailSharing = await this.sharingRepository.delete(assetId);\n return detailSharing;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { SharingDetail } from '../entities/details';\nimport {\n GetSharingList,\n ListSharingDetails,\n SharingDetailsTable,\n} from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\n@injectable()\nexport class ListSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: GetSharingList;\n }): Promise<ListSharingDetails | null> {\n const {\n data: { assetId },\n pagination,\n } = body;\n const sharing = await this.sharingRepository.getOne(assetId);\n\n if (!sharing) return null;\n const detailSharing = await this.detailsRepository.getList({\n data: { assetId },\n pagination,\n });\n const items = detailSharing.items.map((item) =>\n SharingDetail.parse(item as SharingDetailsTable).toJSON(),\n );\n return {\n ...detailSharing,\n items,\n };\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport {\n ACCESS_LEVEL,\n ASSET_TYPE,\n ORGANIZATION_QRVEY,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from '../../common/constants';\nimport { SharingDetail } from '../entities/details';\nimport { Sharing } from '../entities/sharing';\nimport { ResponseSharingDetails } from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport interface UpsertInterface {\n assetId: string;\n assetType: ASSET_TYPE;\n add?: Array<{\n sharedId?: string;\n sharedWith: string;\n sharedOrigin: SHARED_ORIGIN;\n accessLevel: ACCESS_LEVEL;\n orgId?: string;\n sharedEmail?: string;\n sharedType: SHARE_TYPE;\n }>;\n remove?: Array<{\n sharedId: string;\n }>;\n}\n\n@injectable()\nexport class UpsertSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UpsertInterface;\n }): Promise<ResponseSharingDetails[]> {\n const assetId = body.assetId;\n const sharing = await this.sharingRepository.getOne(assetId);\n let currentSharing: Sharing;\n if (sharing) {\n currentSharing = Sharing.parse(sharing);\n } else {\n const createSharing = {\n assetId: body.assetId,\n assetType: body.assetType,\n };\n currentSharing = Sharing.create(createSharing);\n await this.sharingRepository.create(currentSharing.toTable());\n }\n\n let updatedList: SharingDetail[] = [];\n if (body.add) updatedList = await this.addDetails(assetId, body.add);\n if (body.remove) await this.removeDetails(body.remove);\n\n currentSharing.update();\n await this.sharingRepository.patch(\n currentSharing.getAssetId,\n currentSharing.toTable(),\n );\n return updatedList.map((detail) => detail.toJSON());\n }\n\n private async addDetails(\n assetId: string,\n list: Required<UpsertInterface>['add'],\n ): Promise<SharingDetail[]> {\n const sharingList: SharingDetail[] = [];\n for (const detail of list) {\n let currentDetail: SharingDetail;\n const sharingDetail = !detail.sharedId\n ? null\n : await this.detailsRepository.getOne(detail.sharedId);\n if (sharingDetail) {\n currentDetail = SharingDetail.parse(sharingDetail);\n currentDetail.update(detail);\n await this.detailsRepository.patch(\n currentDetail.getSharingDetailsId,\n currentDetail.toTable(),\n );\n } else {\n const createDetails = {\n assetId: assetId,\n orgId: detail.orgId ?? ORGANIZATION_QRVEY, //TODO If shareOrigin is INTERNAL then `ORGANIZATION_QRVEY` else fail\n ...detail,\n };\n currentDetail = SharingDetail.create(createDetails);\n await this.detailsRepository.create(currentDetail.toTable());\n }\n sharingList.push(currentDetail);\n }\n return sharingList;\n }\n\n private async removeDetails(\n list: Required<UpsertInterface>['remove'],\n ): Promise<void> {\n for (const detail of list) {\n await this.detailsRepository.delete(detail.sharedId);\n }\n }\n}\n","import {\n BaseSharing,\n CreateSharing,\n ResponseSharing,\n SharingTable,\n} from './types/sharing.type';\nimport { ASSET_TYPE } from '../../common/constants';\n\nexport class Sharing {\n private assetId: string;\n private assetType: ASSET_TYPE;\n private createdAt: string;\n private updatedAt: string;\n private deletedAt?: string;\n\n constructor(params: BaseSharing) {\n this.assetId = params.assetId;\n this.assetType = params.assetType;\n this.createdAt = params.createdAt;\n this.updatedAt = params.updatedAt;\n this.deletedAt = params.deletedAt;\n }\n\n static create(params: CreateSharing): Sharing {\n const now = new Date().toISOString();\n const obj: BaseSharing = {\n ...params,\n createdAt: now,\n updatedAt: now,\n };\n return new Sharing(obj);\n }\n\n static parse(params: SharingTable): Sharing {\n return new Sharing({\n assetId: params.asset_id,\n assetType: params.asset_type as ASSET_TYPE,\n createdAt: params.created_at,\n updatedAt: params.updated_at,\n deletedAt: params.deleted_at,\n });\n }\n\n update() {\n this.updatedAt = new Date().toISOString();\n }\n\n toTable(): SharingTable {\n return {\n asset_id: this.assetId,\n asset_type: this.assetType,\n created_at: this.createdAt,\n updated_at: this.updatedAt,\n deleted_at: this.deletedAt,\n };\n }\n\n toPlain(): BaseSharing {\n return {\n assetId: this.assetId,\n assetType: this.assetType,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n deletedAt: this.deletedAt,\n };\n }\n\n toJSON(): ResponseSharing {\n return {\n assetId: this.assetId,\n assetType: this.assetType,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n };\n }\n\n public get getAssetId(): string {\n return this.assetId;\n }\n\n public get getAssetType(): string {\n return this.assetType;\n }\n}\n"]}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
interface UserToken {
|
|
2
|
+
userId: string;
|
|
3
|
+
clientId?: string;
|
|
4
|
+
roles?: string[];
|
|
5
|
+
orgId?: string;
|
|
6
|
+
}
|
|
7
|
+
interface ParamsFromTokenToUser {
|
|
8
|
+
userId: string;
|
|
9
|
+
roles: string[];
|
|
10
|
+
orgId: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
1
13
|
declare const ORGANIZATION_QRVEY = "org:0";
|
|
2
14
|
declare enum ASSET_TYPE {
|
|
3
15
|
DX = "DX"
|
|
@@ -104,5 +116,8 @@ declare const checkUserAccessLevel: (args_0: {
|
|
|
104
116
|
level: ACCESS_LEVEL;
|
|
105
117
|
levelAsText: string;
|
|
106
118
|
}>;
|
|
119
|
+
declare const fromTokenToUser: (args_0: {
|
|
120
|
+
body: UserToken;
|
|
121
|
+
}) => Promise<ParamsFromTokenToUser>;
|
|
107
122
|
|
|
108
|
-
export { ACCESS_LEVEL, ASSET_TYPE, type GetSharingList, ORGANIZATION_QRVEY, SHARED_ORIGIN, SHARE_TYPE, api, checkUserAccessLevel };
|
|
123
|
+
export { ACCESS_LEVEL, ASSET_TYPE, type GetSharingList, ORGANIZATION_QRVEY, SHARED_ORIGIN, SHARE_TYPE, api, checkUserAccessLevel, fromTokenToUser };
|
package/package.json
CHANGED
package/src/context.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { container } from 'tsyringe';
|
|
2
2
|
|
|
3
|
+
import { UserRepository } from './quser/implementations/user.repository';
|
|
4
|
+
import { type UserRepositoryInterface } from './quser/interfaces/userRepository.interface';
|
|
3
5
|
import { SharingDetailsRepository } from './sharing/implementations/details.repository';
|
|
4
6
|
import { SharingRepository } from './sharing/implementations/sharing.repository';
|
|
5
|
-
import { type SharingDetailsRepositoryInterface } from './sharing/interfaces/
|
|
7
|
+
import { type SharingDetailsRepositoryInterface } from './sharing/interfaces/detailsRepository.interface';
|
|
6
8
|
import { type SharingRepositoryInterface } from './sharing/interfaces/sharingRepository.interface';
|
|
7
9
|
|
|
8
10
|
container.register<SharingRepositoryInterface>(
|
|
@@ -13,5 +15,6 @@ container.register<SharingDetailsRepositoryInterface>(
|
|
|
13
15
|
'SharingDetailsRepository',
|
|
14
16
|
SharingDetailsRepository,
|
|
15
17
|
);
|
|
18
|
+
container.register<UserRepositoryInterface>('UserRepository', UserRepository);
|
|
16
19
|
|
|
17
20
|
export const Context = container;
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
2
|
import { Context } from './context';
|
|
3
|
+
import { FromTokenToUser } from './quser/services/fromTokenToUser';
|
|
3
4
|
import { CheckUserAccessLevel } from './sharing/services/checkUserAccessLevel';
|
|
4
5
|
import { DeleteSharing } from './sharing/services/delete';
|
|
5
6
|
import { ListSharing } from './sharing/services/list';
|
|
@@ -18,6 +19,10 @@ export const checkUserAccessLevel = (
|
|
|
18
19
|
...args: Parameters<CheckUserAccessLevel['execute']>
|
|
19
20
|
) => Context.resolve(CheckUserAccessLevel).execute(...args);
|
|
20
21
|
|
|
22
|
+
export const fromTokenToUser = (
|
|
23
|
+
...args: Parameters<FromTokenToUser['execute']>
|
|
24
|
+
) => Context.resolve(FromTokenToUser).execute(...args);
|
|
25
|
+
|
|
21
26
|
export {
|
|
22
27
|
ACCESS_LEVEL,
|
|
23
28
|
ASSET_TYPE,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface BaseUser {
|
|
2
|
+
userid: string;
|
|
3
|
+
email: string;
|
|
4
|
+
groups: string[];
|
|
5
|
+
organization: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface UserToken {
|
|
9
|
+
userId: string;
|
|
10
|
+
clientId?: string;
|
|
11
|
+
roles?: string[];
|
|
12
|
+
orgId?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface ParamsFromTokenToUser {
|
|
16
|
+
userId: string;
|
|
17
|
+
roles: string[];
|
|
18
|
+
orgId: string;
|
|
19
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { BaseUser } from './types/user.type';
|
|
2
|
+
|
|
3
|
+
export class User {
|
|
4
|
+
private userId: string;
|
|
5
|
+
private email: string;
|
|
6
|
+
private groups: string[];
|
|
7
|
+
private organization: string;
|
|
8
|
+
|
|
9
|
+
constructor(params: BaseUser) {
|
|
10
|
+
this.userId = params.userid;
|
|
11
|
+
this.email = params.email;
|
|
12
|
+
this.groups = params.groups;
|
|
13
|
+
this.organization = params.organization;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public get getEmail(): string {
|
|
17
|
+
return this.email;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public get getGroups(): string[] {
|
|
21
|
+
return this.groups;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public get getOrganization(): string {
|
|
25
|
+
return this.organization;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CrudSchema } from '@qrvey/data-persistence';
|
|
2
|
+
|
|
3
|
+
import { DATABASE_INFO } from '../../common/constants';
|
|
4
|
+
|
|
5
|
+
export class UserModel extends CrudSchema {
|
|
6
|
+
static table = {
|
|
7
|
+
name: `${DATABASE_INFO.SERVER_PREFIX}Users`,
|
|
8
|
+
alias: 'qv_users',
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
static columns = {
|
|
12
|
+
userid: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
primary: true,
|
|
15
|
+
columnId: true,
|
|
16
|
+
},
|
|
17
|
+
groups: {
|
|
18
|
+
type: 'array',
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { UserModel } from './user.model';
|
|
2
|
+
import { BaseRepository } from '../../common/persistence/base';
|
|
3
|
+
import { BaseUser } from '../entities/types/user.type';
|
|
4
|
+
import { UserRepositoryInterface } from '../interfaces/userRepository.interface';
|
|
5
|
+
|
|
6
|
+
export class UserRepository
|
|
7
|
+
extends BaseRepository
|
|
8
|
+
implements UserRepositoryInterface
|
|
9
|
+
{
|
|
10
|
+
constructor() {
|
|
11
|
+
super(UserModel);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
async getOne(identifier: string): Promise<BaseUser | null> {
|
|
15
|
+
const params = {
|
|
16
|
+
filters: [this.filter('userid', identifier)],
|
|
17
|
+
};
|
|
18
|
+
const response = await super.findItem(params);
|
|
19
|
+
return response as BaseUser;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { inject, injectable } from 'tsyringe';
|
|
2
|
+
|
|
3
|
+
import { ORGANIZATION_QRVEY } from '../../common/constants';
|
|
4
|
+
import { ParamsFromTokenToUser, UserToken } from '../entities/types/user.type';
|
|
5
|
+
import { User } from '../entities/user';
|
|
6
|
+
import { UserRepositoryInterface } from '../interfaces/userRepository.interface';
|
|
7
|
+
|
|
8
|
+
@injectable()
|
|
9
|
+
export class FromTokenToUser {
|
|
10
|
+
constructor(
|
|
11
|
+
@inject('UserRepository')
|
|
12
|
+
private readonly userRepository: UserRepositoryInterface,
|
|
13
|
+
) {}
|
|
14
|
+
|
|
15
|
+
public async execute({
|
|
16
|
+
body,
|
|
17
|
+
}: {
|
|
18
|
+
body: UserToken;
|
|
19
|
+
}): Promise<ParamsFromTokenToUser> {
|
|
20
|
+
if (body?.clientId) {
|
|
21
|
+
return {
|
|
22
|
+
userId: body.clientId,
|
|
23
|
+
roles: body.roles || [],
|
|
24
|
+
orgId: body.orgId || '',
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const current = await this.userRepository.getOne(body.userId);
|
|
28
|
+
if (!current) {
|
|
29
|
+
return {
|
|
30
|
+
userId: '',
|
|
31
|
+
roles: [],
|
|
32
|
+
orgId: '',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const user = new User(current);
|
|
37
|
+
return {
|
|
38
|
+
userId: body.userId,
|
|
39
|
+
roles: user.getGroups,
|
|
40
|
+
orgId: ORGANIZATION_QRVEY,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -3,7 +3,7 @@ import { ListInput, ListOutput, Pagination } from '../../common/common.type';
|
|
|
3
3
|
import { LIMIT_PER_PAGE } from '../../common/constants';
|
|
4
4
|
import { BaseRepository } from '../../common/persistence/base';
|
|
5
5
|
import { SharingDetailsTable } from '../entities/types/details.type';
|
|
6
|
-
import { SharingDetailsRepositoryInterface } from '../interfaces/
|
|
6
|
+
import { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';
|
|
7
7
|
|
|
8
8
|
export class SharingDetailsRepository
|
|
9
9
|
extends BaseRepository
|
|
@@ -2,7 +2,7 @@ import { inject, injectable } from 'tsyringe';
|
|
|
2
2
|
|
|
3
3
|
import { ACCESS_LEVEL } from '../../common/constants';
|
|
4
4
|
import { SharingDetail } from '../entities/details';
|
|
5
|
-
import { SharingDetailsRepositoryInterface } from '../interfaces/
|
|
5
|
+
import { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';
|
|
6
6
|
|
|
7
7
|
@injectable()
|
|
8
8
|
export class CheckUserAccessLevel {
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
ListSharingDetails,
|
|
7
7
|
SharingDetailsTable,
|
|
8
8
|
} from '../entities/types/details.type';
|
|
9
|
-
import { SharingDetailsRepositoryInterface } from '../interfaces/
|
|
9
|
+
import { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';
|
|
10
10
|
import { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';
|
|
11
11
|
|
|
12
12
|
@injectable()
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import { SharingDetail } from '../entities/details';
|
|
11
11
|
import { Sharing } from '../entities/sharing';
|
|
12
12
|
import { ResponseSharingDetails } from '../entities/types/details.type';
|
|
13
|
-
import { SharingDetailsRepositoryInterface } from '../interfaces/
|
|
13
|
+
import { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';
|
|
14
14
|
import { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';
|
|
15
15
|
|
|
16
16
|
export interface UpsertInterface {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"details.interface.js","sourceRoot":"","sources":["../../../../src/sharing/interfaces/details.interface.ts"],"names":[],"mappings":""}
|
|
File without changes
|