@things-factory/biz-base 10.1.121 → 10.1.122
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/CHANGELOG.md +6 -0
- package/dist-server/service/bizplace/bizplace-access.d.ts +17 -0
- package/dist-server/service/bizplace/bizplace-access.js +68 -0
- package/dist-server/service/bizplace/bizplace-access.js.map +1 -0
- package/dist-server/service/bizplace/bizplace-mutation.d.ts +2 -2
- package/dist-server/service/bizplace/bizplace-mutation.js +77 -59
- package/dist-server/service/bizplace/bizplace-mutation.js.map +1 -1
- package/dist-server/service/bizplace/bizplace-query.d.ts +1 -1
- package/dist-server/service/bizplace/bizplace-query.js +23 -25
- package/dist-server/service/bizplace/bizplace-query.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/utils/get-permitted-bizplaces.js +1 -1
- package/dist-server/utils/get-permitted-bizplaces.js.map +1 -1
- package/package.json +5 -4
- package/tests/bizplace-access.test.cjs +175 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,3 +6,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
|
6
6
|
and adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
8
|
<!-- ## [Unreleased] -->
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Enforce domain ownership for bizplace mutations and constrain reads to existing permitted and partner scopes.
|
|
13
|
+
- Reject caller-supplied IDs on bulk creation and roll back mixed-domain bulk mutations.
|
|
14
|
+
- Prevent primary-key changes and unauthorized company references in bizplace patches.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm';
|
|
2
|
+
import { Bizplace } from './bizplace';
|
|
3
|
+
import { BizplacePatch } from './bizplace-types';
|
|
4
|
+
import { Company } from '../company/company';
|
|
5
|
+
export declare function accessDenied(): never;
|
|
6
|
+
export declare function callerDomain(context: ResolverContext): import("@things-factory/shell").Domain;
|
|
7
|
+
/** Explicitly shared reads do not grant permission to mutate another domain. */
|
|
8
|
+
export declare function readableBizplaceIds(context: ResolverContext): Promise<string[]>;
|
|
9
|
+
export declare function ownedBizplace(context: ResolverContext, where: {
|
|
10
|
+
id?: string;
|
|
11
|
+
name?: string;
|
|
12
|
+
}, tx?: EntityManager): Promise<Bizplace>;
|
|
13
|
+
/** Only editable fields reach save; id/domain/audit fields stay server-owned. */
|
|
14
|
+
export declare function editableBizplace(patch: BizplacePatch): {
|
|
15
|
+
[k: string]: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function accessibleCompany(context: ResolverContext, id: string, tx?: EntityManager): Promise<Company>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.accessDenied = accessDenied;
|
|
4
|
+
exports.callerDomain = callerDomain;
|
|
5
|
+
exports.readableBizplaceIds = readableBizplaceIds;
|
|
6
|
+
exports.ownedBizplace = ownedBizplace;
|
|
7
|
+
exports.editableBizplace = editableBizplace;
|
|
8
|
+
exports.accessibleCompany = accessibleCompany;
|
|
9
|
+
const graphql_1 = require("graphql");
|
|
10
|
+
const typeorm_1 = require("typeorm");
|
|
11
|
+
const shell_1 = require("@things-factory/shell");
|
|
12
|
+
const utils_1 = require("../../utils");
|
|
13
|
+
const bizplace_1 = require("./bizplace");
|
|
14
|
+
const company_1 = require("../company/company");
|
|
15
|
+
function accessDenied() {
|
|
16
|
+
throw new graphql_1.GraphQLError('Bizplace not found or access denied.', { extensions: { code: 'FORBIDDEN' } });
|
|
17
|
+
}
|
|
18
|
+
function callerDomain(context) {
|
|
19
|
+
const { domain, user } = context.state;
|
|
20
|
+
if (!domain?.id || !user?.id)
|
|
21
|
+
accessDenied();
|
|
22
|
+
return domain;
|
|
23
|
+
}
|
|
24
|
+
/** Explicitly shared reads do not grant permission to mutate another domain. */
|
|
25
|
+
async function readableBizplaceIds(context) {
|
|
26
|
+
const domain = callerDomain(context);
|
|
27
|
+
const { user } = context.state;
|
|
28
|
+
const permitted = await (0, utils_1.getPermittedBizplaceIds)(domain, user);
|
|
29
|
+
const partners = await (0, utils_1.getPartnersBizplaces)(domain, user);
|
|
30
|
+
const companies = await (0, utils_1.getPartnersCompanyBizplaces)(domain, user, true);
|
|
31
|
+
return [...new Set([...permitted, ...partners.map(b => b?.id), ...companies.map(b => b?.id)].filter(Boolean))];
|
|
32
|
+
}
|
|
33
|
+
async function ownedBizplace(context, where, tx) {
|
|
34
|
+
const domain = callerDomain(context);
|
|
35
|
+
if (!where.id && !where.name)
|
|
36
|
+
accessDenied();
|
|
37
|
+
const row = await (0, shell_1.getRepository)(bizplace_1.Bizplace, tx).findOne({
|
|
38
|
+
where: { ...where, domain: { id: domain.id } },
|
|
39
|
+
relations: ['domain', 'company', 'creator']
|
|
40
|
+
});
|
|
41
|
+
if (!row)
|
|
42
|
+
accessDenied();
|
|
43
|
+
return row;
|
|
44
|
+
}
|
|
45
|
+
/** Only editable fields reach save; id/domain/audit fields stay server-owned. */
|
|
46
|
+
function editableBizplace(patch) {
|
|
47
|
+
const { name, description, address, postalCode, latlng, status } = patch;
|
|
48
|
+
return Object.fromEntries(Object.entries({ name, description, address, postalCode, latlng, status }).filter(([, v]) => v !== undefined));
|
|
49
|
+
}
|
|
50
|
+
async function accessibleCompany(context, id, tx) {
|
|
51
|
+
const domain = callerDomain(context);
|
|
52
|
+
if (!id)
|
|
53
|
+
accessDenied();
|
|
54
|
+
const repo = (0, shell_1.getRepository)(company_1.Company, tx);
|
|
55
|
+
const own = await repo.findOneBy({ id, domain: { id: domain.id } });
|
|
56
|
+
if (own)
|
|
57
|
+
return own;
|
|
58
|
+
// Preserve company links exposed through the existing permitted/shared bizplaces.
|
|
59
|
+
const ids = await readableBizplaceIds(context);
|
|
60
|
+
const linked = await (0, shell_1.getRepository)(bizplace_1.Bizplace, tx).findOne({
|
|
61
|
+
where: { id: (0, typeorm_1.In)(ids), company: { id } },
|
|
62
|
+
relations: ['company']
|
|
63
|
+
});
|
|
64
|
+
if (!linked?.company)
|
|
65
|
+
accessDenied();
|
|
66
|
+
return linked.company;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=bizplace-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bizplace-access.js","sourceRoot":"","sources":["../../../server/service/bizplace/bizplace-access.ts"],"names":[],"mappings":"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","sourcesContent":["import { GraphQLError } from 'graphql'\nimport { EntityManager, In } from 'typeorm'\nimport { getRepository } from '@things-factory/shell'\nimport { getPermittedBizplaceIds, getPartnersBizplaces, getPartnersCompanyBizplaces } from '../../utils'\nimport { Bizplace } from './bizplace'\nimport { BizplacePatch } from './bizplace-types'\nimport { Company } from '../company/company'\n\nexport function accessDenied(): never {\n throw new GraphQLError('Bizplace not found or access denied.', { extensions: { code: 'FORBIDDEN' } })\n}\n\nexport function callerDomain(context: ResolverContext) {\n const { domain, user } = context.state\n if (!domain?.id || !user?.id) accessDenied()\n return domain\n}\n\n/** Explicitly shared reads do not grant permission to mutate another domain. */\nexport async function readableBizplaceIds(context: ResolverContext): Promise<string[]> {\n const domain = callerDomain(context)\n const { user } = context.state\n const permitted = await getPermittedBizplaceIds(domain, user)\n const partners = await getPartnersBizplaces(domain, user)\n const companies = await getPartnersCompanyBizplaces(domain, user, true)\n return [...new Set([...permitted, ...partners.map(b => b?.id), ...companies.map(b => b?.id)].filter(Boolean))]\n}\n\nexport async function ownedBizplace(\n context: ResolverContext,\n where: { id?: string; name?: string },\n tx?: EntityManager\n) {\n const domain = callerDomain(context)\n if (!where.id && !where.name) accessDenied()\n const row = await getRepository(Bizplace, tx).findOne({\n where: { ...where, domain: { id: domain.id } },\n relations: ['domain', 'company', 'creator']\n })\n if (!row) accessDenied()\n return row\n}\n\n/** Only editable fields reach save; id/domain/audit fields stay server-owned. */\nexport function editableBizplace(patch: BizplacePatch) {\n const { name, description, address, postalCode, latlng, status } = patch\n return Object.fromEntries(\n Object.entries({ name, description, address, postalCode, latlng, status }).filter(([, v]) => v !== undefined)\n )\n}\n\nexport async function accessibleCompany(context: ResolverContext, id: string, tx?: EntityManager): Promise<Company> {\n const domain = callerDomain(context)\n if (!id) accessDenied()\n const repo = getRepository(Company, tx)\n const own = await repo.findOneBy({ id, domain: { id: domain.id } })\n if (own) return own\n // Preserve company links exposed through the existing permitted/shared bizplaces.\n const ids = await readableBizplaceIds(context)\n const linked = await getRepository(Bizplace, tx).findOne({\n where: { id: In(ids), company: { id } },\n relations: ['company']\n })\n if (!linked?.company) accessDenied()\n return linked.company\n}\n"]}
|
|
@@ -5,6 +5,6 @@ export declare class BizplaceMutation {
|
|
|
5
5
|
updateBizplace(name: string, patch: BizplacePatch, context: ResolverContext): Promise<Bizplace>;
|
|
6
6
|
updateMultipleBizplace(patches: BizplacePatch[], context: ResolverContext): Promise<Bizplace[]>;
|
|
7
7
|
updateBizplaceCheckDomain(name: string, patch: BizplacePatch, context: ResolverContext): Promise<Bizplace>;
|
|
8
|
-
deleteBizplace(id: string): Promise<Boolean>;
|
|
9
|
-
deleteBizplaces(ids: string[]): Promise<Boolean>;
|
|
8
|
+
deleteBizplace(id: string, context: ResolverContext): Promise<Boolean>;
|
|
9
|
+
deleteBizplaces(ids: string[], context: ResolverContext): Promise<Boolean>;
|
|
10
10
|
}
|
|
@@ -4,97 +4,113 @@ exports.BizplaceMutation = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const type_graphql_1 = require("type-graphql");
|
|
6
6
|
const shell_1 = require("@things-factory/shell");
|
|
7
|
+
const typeorm_1 = require("typeorm");
|
|
7
8
|
const utils_1 = require("@things-factory/utils");
|
|
8
|
-
const company_1 = require("../company/company");
|
|
9
9
|
const bizplace_1 = require("./bizplace");
|
|
10
10
|
const bizplace_types_1 = require("./bizplace-types");
|
|
11
|
+
const bizplace_access_1 = require("./bizplace-access");
|
|
11
12
|
let BizplaceMutation = class BizplaceMutation {
|
|
12
13
|
async createBizplace(bizplace, context) {
|
|
13
|
-
const
|
|
14
|
+
const domain = (0, bizplace_access_1.callerDomain)(context);
|
|
15
|
+
const { user } = context.state;
|
|
14
16
|
if (bizplace.company && bizplace.company.id) {
|
|
15
|
-
bizplace.company = await (0,
|
|
17
|
+
bizplace.company = await (0, bizplace_access_1.accessibleCompany)(context, bizplace.company.id);
|
|
16
18
|
}
|
|
17
19
|
return await (0, shell_1.getRepository)(bizplace_1.Bizplace).save({
|
|
18
|
-
...bizplace,
|
|
20
|
+
...(0, bizplace_access_1.editableBizplace)(bizplace),
|
|
21
|
+
company: bizplace.company,
|
|
19
22
|
domain,
|
|
20
23
|
creator: user,
|
|
21
24
|
updater: user
|
|
22
25
|
});
|
|
23
26
|
}
|
|
24
27
|
async updateBizplace(name, patch, context) {
|
|
25
|
-
|
|
26
|
-
const
|
|
28
|
+
(0, bizplace_access_1.callerDomain)(context);
|
|
29
|
+
const { user } = context.state;
|
|
30
|
+
const bizplace = await (0, bizplace_access_1.ownedBizplace)(context, { name });
|
|
27
31
|
if (patch.company && patch.company.id) {
|
|
28
|
-
patch.company = await (0,
|
|
32
|
+
patch.company = await (0, bizplace_access_1.accessibleCompany)(context, patch.company.id);
|
|
29
33
|
}
|
|
30
34
|
return await (0, shell_1.getRepository)(bizplace_1.Bizplace).save({
|
|
31
35
|
...bizplace,
|
|
32
|
-
...patch,
|
|
36
|
+
...(0, bizplace_access_1.editableBizplace)(patch),
|
|
37
|
+
company: patch.company === undefined ? bizplace.company : patch.company,
|
|
33
38
|
updater: user
|
|
34
39
|
});
|
|
35
40
|
}
|
|
36
41
|
async updateMultipleBizplace(patches, context) {
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
...
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
for (let i = 0; i < _updateRecords.length; i++) {
|
|
59
|
-
const newRecord = _updateRecords[i];
|
|
60
|
-
const bizplace = await bizplaceRepo.findOneBy({ id: newRecord.id });
|
|
61
|
-
if (newRecord.company && newRecord.company.id) {
|
|
62
|
-
newRecord.company = await companyRepo.findOneBy({ id: newRecord.company.id });
|
|
63
|
-
}
|
|
64
|
-
const result = await bizplaceRepo.save({
|
|
65
|
-
...bizplace,
|
|
66
|
-
...newRecord,
|
|
67
|
-
updater: context.state.user
|
|
42
|
+
const domain = (0, bizplace_access_1.callerDomain)(context);
|
|
43
|
+
const { user } = context.state;
|
|
44
|
+
return (0, shell_1.getRepository)(bizplace_1.Bizplace).manager.transaction(async (tx) => {
|
|
45
|
+
const repo = tx.getRepository(bizplace_1.Bizplace);
|
|
46
|
+
const results = [];
|
|
47
|
+
for (const patch of patches) {
|
|
48
|
+
const flag = patch.cuFlag?.toUpperCase();
|
|
49
|
+
if (flag !== '+' && flag !== 'M')
|
|
50
|
+
(0, bizplace_access_1.accessDenied)();
|
|
51
|
+
// save with a caller-supplied primary key can update an existing foreign row.
|
|
52
|
+
if (flag === '+' && patch.id)
|
|
53
|
+
(0, bizplace_access_1.accessDenied)();
|
|
54
|
+
const existing = flag === 'M' ? await (0, bizplace_access_1.ownedBizplace)(context, { id: patch.id }, tx) : undefined;
|
|
55
|
+
const company = patch.company?.id ? await (0, bizplace_access_1.accessibleCompany)(context, patch.company.id, tx) : existing?.company;
|
|
56
|
+
const result = await repo.save({
|
|
57
|
+
...existing,
|
|
58
|
+
...(0, bizplace_access_1.editableBizplace)(patch),
|
|
59
|
+
company,
|
|
60
|
+
domain,
|
|
61
|
+
creator: existing?.creator ?? user,
|
|
62
|
+
updater: user
|
|
68
63
|
});
|
|
69
|
-
results.push({ ...result, cuFlag:
|
|
64
|
+
results.push({ ...result, cuFlag: flag });
|
|
70
65
|
}
|
|
71
|
-
|
|
72
|
-
|
|
66
|
+
return results;
|
|
67
|
+
});
|
|
73
68
|
}
|
|
74
69
|
async updateBizplaceCheckDomain(name, patch, context) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
70
|
+
(0, bizplace_access_1.callerDomain)(context);
|
|
71
|
+
return (0, shell_1.getRepository)(bizplace_1.Bizplace).manager.transaction(async (tx) => {
|
|
72
|
+
const bizplace = await (0, bizplace_access_1.ownedBizplace)(context, { name }, tx);
|
|
73
|
+
const company = patch.company?.id ? await (0, bizplace_access_1.accessibleCompany)(context, patch.company.id, tx) : bizplace.company;
|
|
74
|
+
if (patch.name !== undefined && bizplace.name !== patch.name) {
|
|
75
|
+
await tx.getRepository(shell_1.Domain).save({
|
|
76
|
+
...bizplace.domain,
|
|
81
77
|
name: patch.name,
|
|
82
78
|
subdomain: (0, utils_1.slugger)(patch.name)
|
|
83
79
|
});
|
|
84
80
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
81
|
+
return tx.getRepository(bizplace_1.Bizplace).save({
|
|
82
|
+
...bizplace,
|
|
83
|
+
...(0, bizplace_access_1.editableBizplace)(patch),
|
|
84
|
+
company,
|
|
85
|
+
updater: context.state.user
|
|
86
|
+
});
|
|
90
87
|
});
|
|
91
88
|
}
|
|
92
|
-
async deleteBizplace(id) {
|
|
93
|
-
|
|
89
|
+
async deleteBizplace(id, context) {
|
|
90
|
+
const domain = (0, bizplace_access_1.callerDomain)(context);
|
|
91
|
+
if (!id)
|
|
92
|
+
(0, bizplace_access_1.accessDenied)();
|
|
93
|
+
const result = await (0, shell_1.getRepository)(bizplace_1.Bizplace).delete({ id, domain: { id: domain.id } });
|
|
94
|
+
if (!result.affected)
|
|
95
|
+
(0, bizplace_access_1.accessDenied)();
|
|
94
96
|
return true;
|
|
95
97
|
}
|
|
96
|
-
async deleteBizplaces(ids) {
|
|
97
|
-
|
|
98
|
+
async deleteBizplaces(ids, context) {
|
|
99
|
+
const domain = (0, bizplace_access_1.callerDomain)(context);
|
|
100
|
+
if (!ids.length)
|
|
101
|
+
return true;
|
|
102
|
+
const uniqueIds = [...new Set(ids)];
|
|
103
|
+
if (uniqueIds.some(id => !id))
|
|
104
|
+
(0, bizplace_access_1.accessDenied)();
|
|
105
|
+
await (0, shell_1.getRepository)(bizplace_1.Bizplace).manager.transaction(async (tx) => {
|
|
106
|
+
const repo = tx.getRepository(bizplace_1.Bizplace);
|
|
107
|
+
const where = { id: (0, typeorm_1.In)(uniqueIds), domain: { id: domain.id } };
|
|
108
|
+
if ((await repo.countBy(where)) !== uniqueIds.length)
|
|
109
|
+
(0, bizplace_access_1.accessDenied)();
|
|
110
|
+
const result = await repo.delete(where);
|
|
111
|
+
if (result.affected !== uniqueIds.length)
|
|
112
|
+
(0, bizplace_access_1.accessDenied)();
|
|
113
|
+
});
|
|
98
114
|
return true;
|
|
99
115
|
}
|
|
100
116
|
};
|
|
@@ -141,16 +157,18 @@ tslib_1.__decorate([
|
|
|
141
157
|
(0, type_graphql_1.Directive)('@privilege(category: "bizplace", privilege: "mutation")'),
|
|
142
158
|
(0, type_graphql_1.Mutation)(returns => Boolean),
|
|
143
159
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
160
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
144
161
|
tslib_1.__metadata("design:type", Function),
|
|
145
|
-
tslib_1.__metadata("design:paramtypes", [String]),
|
|
162
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
146
163
|
tslib_1.__metadata("design:returntype", Promise)
|
|
147
164
|
], BizplaceMutation.prototype, "deleteBizplace", null);
|
|
148
165
|
tslib_1.__decorate([
|
|
149
166
|
(0, type_graphql_1.Directive)('@privilege(category: "bizplace", privilege: "mutation")'),
|
|
150
167
|
(0, type_graphql_1.Mutation)(returns => Boolean),
|
|
151
168
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('ids', type => [String])),
|
|
169
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
152
170
|
tslib_1.__metadata("design:type", Function),
|
|
153
|
-
tslib_1.__metadata("design:paramtypes", [Array]),
|
|
171
|
+
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
154
172
|
tslib_1.__metadata("design:returntype", Promise)
|
|
155
173
|
], BizplaceMutation.prototype, "deleteBizplaces", null);
|
|
156
174
|
exports.BizplaceMutation = BizplaceMutation = tslib_1.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bizplace-mutation.js","sourceRoot":"","sources":["../../../server/service/bizplace/bizplace-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\n\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { slugger } from '@things-factory/utils'\n\nimport { Company } from '../company/company'\nimport { Bizplace } from './bizplace'\nimport { BizplacePatch, NewBizplace } from './bizplace-types'\n\n@Resolver(Bizplace)\nexport class BizplaceMutation {\n @Directive('@privilege(category: \"bizplace\", privilege: \"mutation\")')\n @Mutation(returns => Bizplace)\n async createBizplace(@Arg('bizplace') bizplace: NewBizplace, @Ctx() context: ResolverContext): Promise<Bizplace> {\n const { domain, user } = context.state\n if (bizplace.company && bizplace.company.id) {\n bizplace.company = await getRepository(Company).findOneBy({ id: bizplace.company.id })\n }\n\n return await getRepository(Bizplace).save({\n ...bizplace,\n domain,\n creator: user,\n updater: user\n })\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"mutation\")')\n @Mutation(returns => Bizplace)\n async updateBizplace(\n @Arg('name') name: string,\n @Arg('patch') patch: BizplacePatch,\n @Ctx() context: ResolverContext\n ): Promise<Bizplace> {\n const { domain, user } = context.state\n const bizplace = await getRepository(Bizplace).findOneBy({ domain: { id: domain.id }, name })\n\n if (patch.company && patch.company.id) {\n patch.company = await getRepository(Company).findOneBy({ id: patch.company.id })\n }\n\n return await getRepository(Bizplace).save({\n ...bizplace,\n ...patch,\n updater: user\n })\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"mutation\")')\n @Mutation(returns => [Bizplace])\n async updateMultipleBizplace(\n @Arg('patches', type => [BizplacePatch]) patches: BizplacePatch[],\n @Ctx() context: ResolverContext\n ): Promise<Bizplace[]> {\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const bizplaceRepo = getRepository(Bizplace)\n const companyRepo = getRepository(Company)\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n if (newRecord.company && newRecord.company.id) {\n newRecord.company = await companyRepo.findOneBy({ id: newRecord.company.id })\n }\n\n const result = await bizplaceRepo.save({\n domain: context.state.domain,\n creator: context.state.user,\n updater: context.state.user,\n ...newRecord\n })\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const newRecord = _updateRecords[i]\n const bizplace = await bizplaceRepo.findOneBy({ id: newRecord.id })\n\n if (newRecord.company && newRecord.company.id) {\n newRecord.company = await companyRepo.findOneBy({ id: newRecord.company.id })\n }\n\n const result = await bizplaceRepo.save({\n ...bizplace,\n ...newRecord,\n updater: context.state.user\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"mutation\")')\n @Mutation(returns => Bizplace)\n async updateBizplaceCheckDomain(\n @Arg('name') name: string,\n @Arg('patch') patch: BizplacePatch,\n @Ctx() context: ResolverContext\n ): Promise<Bizplace> {\n let bizplace: Bizplace = await getRepository(Bizplace).findOne({ where: { name }, relations: ['domain'] })\n let domain: Domain = bizplace.domain\n\n if (domain) {\n if (bizplace.name !== patch.name) {\n domain = await getRepository(Domain).save({\n ...domain,\n name: patch.name,\n subdomain: slugger(patch.name)\n })\n }\n }\n\n return await getRepository(Bizplace).save({\n ...bizplace,\n ...patch,\n updater: context.state.user\n })\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"mutation\")')\n @Mutation(returns => Boolean)\n async deleteBizplace(@Arg('id') id: string): Promise<Boolean> {\n await getRepository(Bizplace).delete(id)\n\n return true\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"mutation\")')\n @Mutation(returns => Boolean)\n async deleteBizplaces(@Arg('ids', type => [String]) ids: string[]): Promise<Boolean> {\n await getRepository(Bizplace).delete(ids)\n\n return true\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"bizplace-mutation.js","sourceRoot":"","sources":["../../../server/service/bizplace/bizplace-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\n\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { In } from 'typeorm'\nimport { slugger } from '@things-factory/utils'\n\nimport { Bizplace } from './bizplace'\nimport { BizplacePatch, NewBizplace } from './bizplace-types'\nimport { accessibleCompany, accessDenied, callerDomain, editableBizplace, ownedBizplace } from './bizplace-access'\n\n@Resolver(Bizplace)\nexport class BizplaceMutation {\n @Directive('@privilege(category: \"bizplace\", privilege: \"mutation\")')\n @Mutation(returns => Bizplace)\n async createBizplace(@Arg('bizplace') bizplace: NewBizplace, @Ctx() context: ResolverContext): Promise<Bizplace> {\n const domain = callerDomain(context)\n const { user } = context.state\n if (bizplace.company && bizplace.company.id) {\n bizplace.company = await accessibleCompany(context, bizplace.company.id)\n }\n\n return await getRepository(Bizplace).save({\n ...editableBizplace(bizplace),\n company: bizplace.company,\n domain,\n creator: user,\n updater: user\n })\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"mutation\")')\n @Mutation(returns => Bizplace)\n async updateBizplace(\n @Arg('name') name: string,\n @Arg('patch') patch: BizplacePatch,\n @Ctx() context: ResolverContext\n ): Promise<Bizplace> {\n callerDomain(context)\n const { user } = context.state\n const bizplace = await ownedBizplace(context, { name })\n\n if (patch.company && patch.company.id) {\n patch.company = await accessibleCompany(context, patch.company.id)\n }\n\n return await getRepository(Bizplace).save({\n ...bizplace,\n ...editableBizplace(patch),\n company: patch.company === undefined ? bizplace.company : patch.company,\n updater: user\n })\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"mutation\")')\n @Mutation(returns => [Bizplace])\n async updateMultipleBizplace(\n @Arg('patches', type => [BizplacePatch]) patches: BizplacePatch[],\n @Ctx() context: ResolverContext\n ): Promise<Bizplace[]> {\n const domain = callerDomain(context)\n const { user } = context.state\n return getRepository(Bizplace).manager.transaction(async tx => {\n const repo = tx.getRepository(Bizplace)\n const results: Bizplace[] = []\n for (const patch of patches) {\n const flag = patch.cuFlag?.toUpperCase()\n if (flag !== '+' && flag !== 'M') accessDenied()\n // save with a caller-supplied primary key can update an existing foreign row.\n if (flag === '+' && patch.id) accessDenied()\n const existing = flag === 'M' ? await ownedBizplace(context, { id: patch.id }, tx) : undefined\n const company = patch.company?.id ? await accessibleCompany(context, patch.company.id, tx) : existing?.company\n const result = await repo.save({\n ...existing,\n ...editableBizplace(patch),\n company,\n domain,\n creator: existing?.creator ?? user,\n updater: user\n })\n results.push({ ...result, cuFlag: flag } as Bizplace)\n }\n return results\n })\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"mutation\")')\n @Mutation(returns => Bizplace)\n async updateBizplaceCheckDomain(\n @Arg('name') name: string,\n @Arg('patch') patch: BizplacePatch,\n @Ctx() context: ResolverContext\n ): Promise<Bizplace> {\n callerDomain(context)\n return getRepository(Bizplace).manager.transaction(async tx => {\n const bizplace = await ownedBizplace(context, { name }, tx)\n const company = patch.company?.id ? await accessibleCompany(context, patch.company.id, tx) : bizplace.company\n if (patch.name !== undefined && bizplace.name !== patch.name) {\n await tx.getRepository(Domain).save({\n ...bizplace.domain,\n name: patch.name,\n subdomain: slugger(patch.name)\n })\n }\n return tx.getRepository(Bizplace).save({\n ...bizplace,\n ...editableBizplace(patch),\n company,\n updater: context.state.user\n })\n })\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"mutation\")')\n @Mutation(returns => Boolean)\n async deleteBizplace(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Boolean> {\n const domain = callerDomain(context)\n if (!id) accessDenied()\n const result = await getRepository(Bizplace).delete({ id, domain: { id: domain.id } })\n if (!result.affected) accessDenied()\n\n return true\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"mutation\")')\n @Mutation(returns => Boolean)\n async deleteBizplaces(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<Boolean> {\n const domain = callerDomain(context)\n if (!ids.length) return true\n const uniqueIds = [...new Set(ids)]\n if (uniqueIds.some(id => !id)) accessDenied()\n await getRepository(Bizplace).manager.transaction(async tx => {\n const repo = tx.getRepository(Bizplace)\n const where = { id: In(uniqueIds), domain: { id: domain.id } }\n if ((await repo.countBy(where)) !== uniqueIds.length) accessDenied()\n const result = await repo.delete(where)\n if (result.affected !== uniqueIds.length) accessDenied()\n })\n\n return true\n }\n}\n"]}
|
|
@@ -8,7 +8,7 @@ export declare class BizplaceQuery {
|
|
|
8
8
|
businessBizplace(context: ResolverContext): Promise<Bizplace>;
|
|
9
9
|
userBizplaces(email: string, context: ResolverContext): Promise<Bizplace[]>;
|
|
10
10
|
bizplaces(params: ListParam, context: ResolverContext): Promise<BizplaceList>;
|
|
11
|
-
bizplace(id: string): Promise<Bizplace>;
|
|
11
|
+
bizplace(id: string, context: ResolverContext): Promise<Bizplace>;
|
|
12
12
|
bizplaceUsers(params: ListParam, context: ResolverContext): Promise<UserList>;
|
|
13
13
|
partnersBizplaces(params: ListParam, context: ResolverContext): Promise<BizplaceList>;
|
|
14
14
|
permittedPartnersCompanyBizplaces(params: ListParam, context: ResolverContext): Promise<BizplaceList>;
|
|
@@ -10,6 +10,7 @@ const shell_1 = require("@things-factory/shell");
|
|
|
10
10
|
const utils_1 = require("../../utils");
|
|
11
11
|
const bizplace_1 = require("./bizplace");
|
|
12
12
|
const bizplace_types_1 = require("./bizplace-types");
|
|
13
|
+
const bizplace_access_1 = require("./bizplace-access");
|
|
13
14
|
let BizplaceQuery = class BizplaceQuery {
|
|
14
15
|
async customerBizplaces(context) {
|
|
15
16
|
const { domain, user } = context.state;
|
|
@@ -35,7 +36,8 @@ let BizplaceQuery = class BizplaceQuery {
|
|
|
35
36
|
const user = await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({
|
|
36
37
|
email: email != '' ? email : context.state.user.email
|
|
37
38
|
});
|
|
38
|
-
|
|
39
|
+
const allowed = new Set(await (0, bizplace_access_1.readableBizplaceIds)(context));
|
|
40
|
+
return (await (0, utils_1.getUserBizplaces)(user)).filter(b => b && allowed.has(b.id));
|
|
39
41
|
// const bizplaces = await getRepository(Bizplace).find({ domain })
|
|
40
42
|
// // const userBizplaces = user.bizplaces
|
|
41
43
|
// return bizplaces.map((bizplace: Bizplace) => {
|
|
@@ -70,8 +72,10 @@ let BizplaceQuery = class BizplaceQuery {
|
|
|
70
72
|
else {
|
|
71
73
|
if (!(bizplace_ids.length > 0))
|
|
72
74
|
convertedParams.where.id = (0, typeorm_1.In)(await (0, utils_1.getPermittedBizplaceIds)(context.state.domain, context.state.user));
|
|
73
|
-
else
|
|
74
|
-
|
|
75
|
+
else {
|
|
76
|
+
const permitted = new Set(await (0, utils_1.getPermittedBizplaceIds)(context.state.domain, context.state.user));
|
|
77
|
+
convertedParams.where.id = (0, typeorm_1.In)(bizplace_ids.filter(id => permitted.has(id)));
|
|
78
|
+
}
|
|
75
79
|
}
|
|
76
80
|
const [items, total] = await (0, shell_1.getRepository)(bizplace_1.Bizplace).findAndCount({
|
|
77
81
|
...convertedParams,
|
|
@@ -79,7 +83,9 @@ let BizplaceQuery = class BizplaceQuery {
|
|
|
79
83
|
});
|
|
80
84
|
return { items, total };
|
|
81
85
|
}
|
|
82
|
-
async bizplace(id) {
|
|
86
|
+
async bizplace(id, context) {
|
|
87
|
+
if (!(await (0, bizplace_access_1.readableBizplaceIds)(context)).includes(id))
|
|
88
|
+
(0, bizplace_access_1.accessDenied)();
|
|
83
89
|
return await (0, shell_1.getRepository)(bizplace_1.Bizplace).findOne({
|
|
84
90
|
where: { id },
|
|
85
91
|
relations: ['company', 'domain', 'users', 'users.roles', 'creator', 'updater']
|
|
@@ -104,25 +110,13 @@ let BizplaceQuery = class BizplaceQuery {
|
|
|
104
110
|
});
|
|
105
111
|
params.filters.splice(bizplaceIndex, 1);
|
|
106
112
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
partnersBizplaceIds =
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
params.filters.push({
|
|
118
|
-
name: 'id',
|
|
119
|
-
operator: 'in',
|
|
120
|
-
value: partnersBizplaceIds
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
const convertedParams = (0, shell_1.convertListParams)(params, {
|
|
124
|
-
searchables: ['name', 'description']
|
|
125
|
-
});
|
|
113
|
+
const allowed = new Set((await (0, utils_1.getPartnersBizplaces)(context.state.domain, context.state.user)).filter(Boolean).map(b => b.id));
|
|
114
|
+
if (partnersBizplaceIds.length)
|
|
115
|
+
partnersBizplaceIds = partnersBizplaceIds.filter(id => allowed.has(id));
|
|
116
|
+
else
|
|
117
|
+
partnersBizplaceIds = [...allowed];
|
|
118
|
+
const convertedParams = (0, shell_1.convertListParams)(params, { searchables: ['name', 'description'] });
|
|
119
|
+
convertedParams.where.id = (0, typeorm_1.In)(partnersBizplaceIds);
|
|
126
120
|
const [items, total] = await (0, shell_1.getRepository)(bizplace_1.Bizplace).findAndCount({
|
|
127
121
|
...convertedParams,
|
|
128
122
|
relations: ['domain', 'company', 'users', 'creator', 'updater']
|
|
@@ -147,7 +141,10 @@ let BizplaceQuery = class BizplaceQuery {
|
|
|
147
141
|
convertedParams.where.id = (0, typeorm_1.In)(partnersBizplaceIds);
|
|
148
142
|
}
|
|
149
143
|
else {
|
|
150
|
-
|
|
144
|
+
const allowed = new Set((await (0, utils_1.getPartnersCompanyBizplaces)(context.state.domain, context.state.user, true))
|
|
145
|
+
.filter(Boolean)
|
|
146
|
+
.map(b => b.id));
|
|
147
|
+
convertedParams.where.id = (0, typeorm_1.In)(partnersBizplaceIds.filter(id => allowed.has(id)));
|
|
151
148
|
}
|
|
152
149
|
const [items, total] = await (0, shell_1.getRepository)(bizplace_1.Bizplace).findAndCount({
|
|
153
150
|
...convertedParams,
|
|
@@ -195,8 +192,9 @@ tslib_1.__decorate([
|
|
|
195
192
|
(0, type_graphql_1.Directive)('@privilege(category: "bizplace", privilege: "query", domainOwnerGranted: true)'),
|
|
196
193
|
(0, type_graphql_1.Query)(returns => bizplace_1.Bizplace),
|
|
197
194
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
195
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
198
196
|
tslib_1.__metadata("design:type", Function),
|
|
199
|
-
tslib_1.__metadata("design:paramtypes", [String]),
|
|
197
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
200
198
|
tslib_1.__metadata("design:returntype", Promise)
|
|
201
199
|
], BizplaceQuery.prototype, "bizplace", null);
|
|
202
200
|
tslib_1.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bizplace-query.js","sourceRoot":"","sources":["../../../server/service/bizplace/bizplace-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, Query, Resolver } from 'type-graphql'\nimport { EntityManager, FindManyOptions, In, Not, Repository } from 'typeorm'\n\nimport { User, UserList } from '@things-factory/auth-base'\nimport { convertListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport {\n getMyBizplace,\n getPartnerBizplaceIds,\n getPartnersBizplaces,\n getPartnersCompanyBizplaces,\n getPermittedBizplaceIds,\n getUserBizplaces\n} from '../../utils'\nimport { Bizplace } from './bizplace'\nimport { BizplaceList } from './bizplace-types'\n\n@Resolver(Bizplace)\nexport class BizplaceQuery {\n @Directive('@privilege(category: \"bizplace\", privilege: \"query\")')\n @Query(returns => [Bizplace])\n async customerBizplaces(@Ctx() context: ResolverContext): Promise<Bizplace[]> {\n const { domain, user } = context.state\n return await getRepository(Bizplace).find({\n where: {\n domain: { id: domain.id },\n id: Not(In([await getMyBizplace(domain, user)]))\n },\n relations: ['domain', 'creator', 'updater']\n })\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Bizplace)\n async businessBizplace(@Ctx() context: ResolverContext): Promise<Bizplace> {\n const { domain, user } = context.state\n const myBizplace = await getMyBizplace(domain, user)\n return await getRepository(Bizplace).findOne({\n where: { id: myBizplace.id },\n relations: ['company', 'domain', 'users', 'creator', 'updater']\n })\n }\n\n /* TODO make it work */\n @Directive('@privilege(category: \"bizplace\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => [Bizplace])\n async userBizplaces(@Arg('email') email: string, @Ctx() context: ResolverContext): Promise<Bizplace[]> {\n const { domain } = context.state\n\n const user: User = await getRepository(User).findOneBy({\n email: email != '' ? email : context.state.user.email\n })\n\n return await getUserBizplaces(user)\n\n // const bizplaces = await getRepository(Bizplace).find({ domain })\n // // const userBizplaces = user.bizplaces\n // return bizplaces.map((bizplace: Bizplace) => {\n // return {\n // id: bizplace.id,\n // name: bizplace.name,\n // description: bizplace.description,\n // userBizplaceId: userBizplaces\n // .map(userBiz => userBiz.bizplace.id)\n // .slice(0, 1)\n // .shift(),\n // assigned: userBizplaces.filter((userBizplace: Bizplace) => userBizplace.id === bizplace.id).length > 0\n // }\n // })\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => BizplaceList)\n async bizplaces(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<BizplaceList> {\n let bizplace_ids = []\n let bizplaceIndex: any = params.filters.findIndex(x => x.name === 'bizplace')\n if (bizplaceIndex > -1) {\n bizplace_ids = params.filters\n .filter(x => x.name === 'bizplace')\n .map(item => {\n return item.value\n })\n params.filters.splice(bizplaceIndex, 1)\n }\n\n const convertedParams = convertListParams(params)\n\n let domainIndex: any = params.filters.findIndex(x => x.name === 'domain')\n if (domainIndex > -1) {\n convertedParams.where.id = In(await getPartnerBizplaceIds(context.state.domain, context.state.user))\n } else {\n if (!(bizplace_ids.length > 0))\n convertedParams.where.id = In(await getPermittedBizplaceIds(context.state.domain, context.state.user))\n else convertedParams.where.id = In(bizplace_ids)\n }\n\n const [items, total] = await getRepository(Bizplace).findAndCount({\n ...convertedParams,\n relations: ['domain', 'company', 'users', 'creator', 'updater']\n })\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Bizplace)\n async bizplace(@Arg('id') id: string): Promise<Bizplace> {\n return await getRepository(Bizplace).findOne({\n where: { id },\n relations: ['company', 'domain', 'users', 'users.roles', 'creator', 'updater']\n })\n }\n\n @Query(returns => UserList)\n async bizplaceUsers(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<UserList> {\n const { domain, user } = context.state\n const myBizplace: Bizplace = await getMyBizplace(domain, user)\n return await bizplaceUsers(myBizplace, {\n ...(await convertListParams(params)),\n relations: ['domain', 'domains', 'roles', 'roles.privileges', 'roles.users']\n })\n }\n\n @Query(returns => BizplaceList)\n async partnersBizplaces(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<BizplaceList> {\n let partnersBizplaceIds = []\n let bizplaceIndex: any = params.filters.findIndex(x => x.name === 'bizplace')\n if (bizplaceIndex > -1) {\n partnersBizplaceIds = params.filters\n .filter(x => x.name === 'bizplace')\n .map(item => {\n return item.value\n })\n params.filters.splice(bizplaceIndex, 1)\n }\n\n if (!(partnersBizplaceIds.length > 0)) {\n const partnersBizplaces: Bizplace[] = await getPartnersBizplaces(context.state.domain, context.state.user)\n partnersBizplaceIds = partnersBizplaces.map((bizplace: Bizplace) => bizplace.id || null)\n params.filters.push({\n name: 'id',\n operator: 'in',\n value: partnersBizplaceIds\n })\n } else {\n params.filters.push({\n name: 'id',\n operator: 'in',\n value: partnersBizplaceIds\n })\n }\n\n const convertedParams = convertListParams(params, {\n searchables: ['name', 'description']\n })\n\n const [items, total] = await getRepository(Bizplace).findAndCount({\n ...convertedParams,\n relations: ['domain', 'company', 'users', 'creator', 'updater']\n })\n\n return { items, total }\n }\n\n @Query(returns => BizplaceList)\n async permittedPartnersCompanyBizplaces(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<BizplaceList> {\n let partnersBizplaceIds = []\n let bizplaceIndex: any = params.filters.findIndex(x => x.name === 'bizplace')\n if (bizplaceIndex > -1) {\n partnersBizplaceIds = params.filters\n .filter(x => x.name === 'bizplace')\n .map(item => {\n return item.value\n })\n params.filters.splice(bizplaceIndex, 1)\n }\n\n const convertedParams = convertListParams(params)\n\n if (!(partnersBizplaceIds.length > 0)) {\n const partnersBizplaces: Bizplace[] = await getPartnersCompanyBizplaces(\n context.state.domain,\n context.state.user,\n true\n )\n partnersBizplaceIds = partnersBizplaces.map((bizplace: Bizplace) => bizplace.id || null)\n convertedParams.where.id = In(partnersBizplaceIds)\n } else {\n convertedParams.where.id = In(partnersBizplaceIds)\n }\n\n const [items, total] = await getRepository(Bizplace).findAndCount({\n ...convertedParams,\n relations: ['domain', 'company', 'users', 'creator', 'updater']\n })\n\n return { items, total }\n }\n}\n\nexport async function bizplaceUsers(\n bizplace: Bizplace,\n params: FindManyOptions<User>,\n trxMgr?: EntityManager\n): Promise<{ items: User[]; total: number }> {\n const bizplaceRepo: Repository<Bizplace> = trxMgr?.getRepository(Bizplace) || getRepository(Bizplace)\n const userRepo: Repository<User> = trxMgr?.getRepository(User) || getRepository(User)\n\n if (!bizplace?.users?.length) {\n bizplace = await bizplaceRepo.findOne({\n where: { id: bizplace.id },\n relations: ['users']\n })\n }\n const users: User[] = bizplace.users\n const userIds: string[] = users.map((user: User) => user.id)\n\n const [items, total] = await userRepo.findAndCount({\n ...params,\n where: {\n ...(params.where as any),\n id: In(userIds)\n }\n })\n\n return {\n items,\n total\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"bizplace-query.js","sourceRoot":"","sources":["../../../server/service/bizplace/bizplace-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, Query, Resolver } from 'type-graphql'\nimport { EntityManager, FindManyOptions, In, Not, Repository } from 'typeorm'\n\nimport { User, UserList } from '@things-factory/auth-base'\nimport { convertListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport {\n getMyBizplace,\n getPartnerBizplaceIds,\n getPartnersBizplaces,\n getPartnersCompanyBizplaces,\n getPermittedBizplaceIds,\n getUserBizplaces\n} from '../../utils'\nimport { Bizplace } from './bizplace'\nimport { BizplaceList } from './bizplace-types'\nimport { accessDenied, readableBizplaceIds } from './bizplace-access'\n\n@Resolver(Bizplace)\nexport class BizplaceQuery {\n @Directive('@privilege(category: \"bizplace\", privilege: \"query\")')\n @Query(returns => [Bizplace])\n async customerBizplaces(@Ctx() context: ResolverContext): Promise<Bizplace[]> {\n const { domain, user } = context.state\n return await getRepository(Bizplace).find({\n where: {\n domain: { id: domain.id },\n id: Not(In([await getMyBizplace(domain, user)]))\n },\n relations: ['domain', 'creator', 'updater']\n })\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Bizplace)\n async businessBizplace(@Ctx() context: ResolverContext): Promise<Bizplace> {\n const { domain, user } = context.state\n const myBizplace = await getMyBizplace(domain, user)\n return await getRepository(Bizplace).findOne({\n where: { id: myBizplace.id },\n relations: ['company', 'domain', 'users', 'creator', 'updater']\n })\n }\n\n /* TODO make it work */\n @Directive('@privilege(category: \"bizplace\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => [Bizplace])\n async userBizplaces(@Arg('email') email: string, @Ctx() context: ResolverContext): Promise<Bizplace[]> {\n const { domain } = context.state\n\n const user: User = await getRepository(User).findOneBy({\n email: email != '' ? email : context.state.user.email\n })\n\n const allowed = new Set(await readableBizplaceIds(context))\n return (await getUserBizplaces(user)).filter(b => b && allowed.has(b.id))\n\n // const bizplaces = await getRepository(Bizplace).find({ domain })\n // // const userBizplaces = user.bizplaces\n // return bizplaces.map((bizplace: Bizplace) => {\n // return {\n // id: bizplace.id,\n // name: bizplace.name,\n // description: bizplace.description,\n // userBizplaceId: userBizplaces\n // .map(userBiz => userBiz.bizplace.id)\n // .slice(0, 1)\n // .shift(),\n // assigned: userBizplaces.filter((userBizplace: Bizplace) => userBizplace.id === bizplace.id).length > 0\n // }\n // })\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => BizplaceList)\n async bizplaces(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<BizplaceList> {\n let bizplace_ids = []\n let bizplaceIndex: any = params.filters.findIndex(x => x.name === 'bizplace')\n if (bizplaceIndex > -1) {\n bizplace_ids = params.filters\n .filter(x => x.name === 'bizplace')\n .map(item => {\n return item.value\n })\n params.filters.splice(bizplaceIndex, 1)\n }\n\n const convertedParams = convertListParams(params)\n\n let domainIndex: any = params.filters.findIndex(x => x.name === 'domain')\n if (domainIndex > -1) {\n convertedParams.where.id = In(await getPartnerBizplaceIds(context.state.domain, context.state.user))\n } else {\n if (!(bizplace_ids.length > 0))\n convertedParams.where.id = In(await getPermittedBizplaceIds(context.state.domain, context.state.user))\n else {\n const permitted = new Set(await getPermittedBizplaceIds(context.state.domain, context.state.user))\n convertedParams.where.id = In(bizplace_ids.filter(id => permitted.has(id)))\n }\n }\n\n const [items, total] = await getRepository(Bizplace).findAndCount({\n ...convertedParams,\n relations: ['domain', 'company', 'users', 'creator', 'updater']\n })\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"bizplace\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Bizplace)\n async bizplace(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Bizplace> {\n if (!(await readableBizplaceIds(context)).includes(id)) accessDenied()\n return await getRepository(Bizplace).findOne({\n where: { id },\n relations: ['company', 'domain', 'users', 'users.roles', 'creator', 'updater']\n })\n }\n\n @Query(returns => UserList)\n async bizplaceUsers(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<UserList> {\n const { domain, user } = context.state\n const myBizplace: Bizplace = await getMyBizplace(domain, user)\n return await bizplaceUsers(myBizplace, {\n ...(await convertListParams(params)),\n relations: ['domain', 'domains', 'roles', 'roles.privileges', 'roles.users']\n })\n }\n\n @Query(returns => BizplaceList)\n async partnersBizplaces(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<BizplaceList> {\n let partnersBizplaceIds = []\n let bizplaceIndex: any = params.filters.findIndex(x => x.name === 'bizplace')\n if (bizplaceIndex > -1) {\n partnersBizplaceIds = params.filters\n .filter(x => x.name === 'bizplace')\n .map(item => {\n return item.value\n })\n params.filters.splice(bizplaceIndex, 1)\n }\n\n const allowed = new Set(\n (await getPartnersBizplaces(context.state.domain, context.state.user)).filter(Boolean).map(b => b.id)\n )\n if (partnersBizplaceIds.length) partnersBizplaceIds = partnersBizplaceIds.filter(id => allowed.has(id))\n else partnersBizplaceIds = [...allowed]\n const convertedParams = convertListParams(params, { searchables: ['name', 'description'] })\n convertedParams.where.id = In(partnersBizplaceIds)\n\n const [items, total] = await getRepository(Bizplace).findAndCount({\n ...convertedParams,\n relations: ['domain', 'company', 'users', 'creator', 'updater']\n })\n\n return { items, total }\n }\n\n @Query(returns => BizplaceList)\n async permittedPartnersCompanyBizplaces(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<BizplaceList> {\n let partnersBizplaceIds = []\n let bizplaceIndex: any = params.filters.findIndex(x => x.name === 'bizplace')\n if (bizplaceIndex > -1) {\n partnersBizplaceIds = params.filters\n .filter(x => x.name === 'bizplace')\n .map(item => {\n return item.value\n })\n params.filters.splice(bizplaceIndex, 1)\n }\n\n const convertedParams = convertListParams(params)\n\n if (!(partnersBizplaceIds.length > 0)) {\n const partnersBizplaces: Bizplace[] = await getPartnersCompanyBizplaces(\n context.state.domain,\n context.state.user,\n true\n )\n partnersBizplaceIds = partnersBizplaces.map((bizplace: Bizplace) => bizplace.id || null)\n convertedParams.where.id = In(partnersBizplaceIds)\n } else {\n const allowed = new Set(\n (await getPartnersCompanyBizplaces(context.state.domain, context.state.user, true))\n .filter(Boolean)\n .map(b => b.id)\n )\n convertedParams.where.id = In(partnersBizplaceIds.filter(id => allowed.has(id)))\n }\n\n const [items, total] = await getRepository(Bizplace).findAndCount({\n ...convertedParams,\n relations: ['domain', 'company', 'users', 'creator', 'updater']\n })\n\n return { items, total }\n }\n}\n\nexport async function bizplaceUsers(\n bizplace: Bizplace,\n params: FindManyOptions<User>,\n trxMgr?: EntityManager\n): Promise<{ items: User[]; total: number }> {\n const bizplaceRepo: Repository<Bizplace> = trxMgr?.getRepository(Bizplace) || getRepository(Bizplace)\n const userRepo: Repository<User> = trxMgr?.getRepository(User) || getRepository(User)\n\n if (!bizplace?.users?.length) {\n bizplace = await bizplaceRepo.findOne({\n where: { id: bizplace.id },\n relations: ['users']\n })\n }\n const users: User[] = bizplace.users\n const userIds: string[] = users.map((user: User) => user.id)\n\n const [items, total] = await userRepo.findAndCount({\n ...params,\n where: {\n ...(params.where as any),\n id: In(userIds)\n }\n })\n\n return {\n items,\n total\n }\n}\n"]}
|