@dosgato/api 0.0.2
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/LICENSE +21 -0
- package/README.md +74 -0
- package/dist/access/access.model.d.ts +2 -0
- package/dist/access/access.model.js +14 -0
- package/dist/access/access.model.js.map +1 -0
- package/dist/access/access.resolver.d.ts +15 -0
- package/dist/access/access.resolver.js +133 -0
- package/dist/access/access.resolver.js.map +1 -0
- package/dist/asset/asset.database.d.ts +12 -0
- package/dist/asset/asset.database.js +116 -0
- package/dist/asset/asset.database.js.map +1 -0
- package/dist/asset/asset.model.d.ts +81 -0
- package/dist/asset/asset.model.js +271 -0
- package/dist/asset/asset.model.js.map +1 -0
- package/dist/asset/asset.resolver.d.ts +32 -0
- package/dist/asset/asset.resolver.js +325 -0
- package/dist/asset/asset.resolver.js.map +1 -0
- package/dist/asset/asset.service.d.ts +35 -0
- package/dist/asset/asset.service.js +225 -0
- package/dist/asset/asset.service.js.map +1 -0
- package/dist/assetfolder/assetfolder.database.d.ts +7 -0
- package/dist/assetfolder/assetfolder.database.js +85 -0
- package/dist/assetfolder/assetfolder.database.js.map +1 -0
- package/dist/assetfolder/assetfolder.model.d.ts +56 -0
- package/dist/assetfolder/assetfolder.model.js +160 -0
- package/dist/assetfolder/assetfolder.model.js.map +1 -0
- package/dist/assetfolder/assetfolder.resolver.d.ts +25 -0
- package/dist/assetfolder/assetfolder.resolver.js +255 -0
- package/dist/assetfolder/assetfolder.resolver.js.map +1 -0
- package/dist/assetfolder/assetfolder.service.d.ts +39 -0
- package/dist/assetfolder/assetfolder.service.js +355 -0
- package/dist/assetfolder/assetfolder.service.js.map +1 -0
- package/dist/assetrule/assetrule.database.d.ts +5 -0
- package/dist/assetrule/assetrule.database.js +161 -0
- package/dist/assetrule/assetrule.database.js.map +1 -0
- package/dist/assetrule/assetrule.model.d.ts +71 -0
- package/dist/assetrule/assetrule.model.js +221 -0
- package/dist/assetrule/assetrule.model.js.map +1 -0
- package/dist/assetrule/assetrule.resolver.d.ts +12 -0
- package/dist/assetrule/assetrule.resolver.js +100 -0
- package/dist/assetrule/assetrule.resolver.js.map +1 -0
- package/dist/assetrule/assetrule.service.d.ts +26 -0
- package/dist/assetrule/assetrule.service.js +184 -0
- package/dist/assetrule/assetrule.service.js.map +1 -0
- package/dist/createdb.d.ts +2 -0
- package/dist/createdb.js +541 -0
- package/dist/createdb.js.map +1 -0
- package/dist/data/data.database.d.ts +7 -0
- package/dist/data/data.database.js +265 -0
- package/dist/data/data.database.js.map +1 -0
- package/dist/data/data.indexing.d.ts +2 -0
- package/dist/data/data.indexing.js +23 -0
- package/dist/data/data.indexing.js.map +1 -0
- package/dist/data/data.model.d.ts +69 -0
- package/dist/data/data.model.js +206 -0
- package/dist/data/data.model.js.map +1 -0
- package/dist/data/data.resolver.d.ts +36 -0
- package/dist/data/data.resolver.js +384 -0
- package/dist/data/data.resolver.js.map +1 -0
- package/dist/data/data.service.d.ts +41 -0
- package/dist/data/data.service.js +374 -0
- package/dist/data/data.service.js.map +1 -0
- package/dist/datafolder/datafolder.database.d.ts +7 -0
- package/dist/datafolder/datafolder.database.js +72 -0
- package/dist/datafolder/datafolder.database.js.map +1 -0
- package/dist/datafolder/datafolder.model.d.ts +48 -0
- package/dist/datafolder/datafolder.model.js +139 -0
- package/dist/datafolder/datafolder.model.js.map +1 -0
- package/dist/datafolder/datafolder.resolver.d.ts +24 -0
- package/dist/datafolder/datafolder.resolver.js +243 -0
- package/dist/datafolder/datafolder.resolver.js.map +1 -0
- package/dist/datafolder/datafolder.service.d.ts +32 -0
- package/dist/datafolder/datafolder.service.js +223 -0
- package/dist/datafolder/datafolder.service.js.map +1 -0
- package/dist/dataroot/dataroot.model.d.ts +19 -0
- package/dist/dataroot/dataroot.model.js +72 -0
- package/dist/dataroot/dataroot.model.js.map +1 -0
- package/dist/dataroot/dataroot.resolver.d.ts +11 -0
- package/dist/dataroot/dataroot.resolver.js +87 -0
- package/dist/dataroot/dataroot.resolver.js.map +1 -0
- package/dist/dataroot/dataroot.service.d.ts +12 -0
- package/dist/dataroot/dataroot.service.js +62 -0
- package/dist/dataroot/dataroot.service.js.map +1 -0
- package/dist/datarule/datarule.database.d.ts +5 -0
- package/dist/datarule/datarule.database.js +144 -0
- package/dist/datarule/datarule.database.js.map +1 -0
- package/dist/datarule/datarule.model.d.ts +55 -0
- package/dist/datarule/datarule.model.js +200 -0
- package/dist/datarule/datarule.model.js.map +1 -0
- package/dist/datarule/datarule.resolver.d.ts +13 -0
- package/dist/datarule/datarule.resolver.js +114 -0
- package/dist/datarule/datarule.resolver.js.map +1 -0
- package/dist/datarule/datarule.service.d.ts +27 -0
- package/dist/datarule/datarule.service.js +191 -0
- package/dist/datarule/datarule.service.js.map +1 -0
- package/dist/fixtures.d.ts +1 -0
- package/dist/fixtures.js +697 -0
- package/dist/fixtures.js.map +1 -0
- package/dist/fixturetemplates.d.ts +110 -0
- package/dist/fixturetemplates.js +178 -0
- package/dist/fixturetemplates.js.map +1 -0
- package/dist/globalrule/globalrule.database.d.ts +5 -0
- package/dist/globalrule/globalrule.database.js +65 -0
- package/dist/globalrule/globalrule.database.js.map +1 -0
- package/dist/globalrule/globalrule.model.d.ts +34 -0
- package/dist/globalrule/globalrule.model.js +120 -0
- package/dist/globalrule/globalrule.model.js.map +1 -0
- package/dist/globalrule/globalrule.resolver.d.ts +11 -0
- package/dist/globalrule/globalrule.resolver.js +85 -0
- package/dist/globalrule/globalrule.resolver.js.map +1 -0
- package/dist/globalrule/globalrule.service.d.ts +18 -0
- package/dist/globalrule/globalrule.service.js +111 -0
- package/dist/globalrule/globalrule.service.js.map +1 -0
- package/dist/group/group.database.d.ts +41 -0
- package/dist/group/group.database.js +190 -0
- package/dist/group/group.database.js.map +1 -0
- package/dist/group/group.model.d.ts +19 -0
- package/dist/group/group.model.js +70 -0
- package/dist/group/group.model.js.map +1 -0
- package/dist/group/group.resolver.d.ts +27 -0
- package/dist/group/group.resolver.js +275 -0
- package/dist/group/group.resolver.js.map +1 -0
- package/dist/group/group.service.d.ts +46 -0
- package/dist/group/group.service.js +384 -0
- package/dist/group/group.service.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +109 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +88 -0
- package/dist/internal.js +89 -0
- package/dist/internal.js.map +1 -0
- package/dist/migrations.d.ts +2 -0
- package/dist/migrations.js +41 -0
- package/dist/migrations.js.map +1 -0
- package/dist/organization/organization.database.d.ts +2 -0
- package/dist/organization/organization.database.js +16 -0
- package/dist/organization/organization.database.js.map +1 -0
- package/dist/organization/organization.model.d.ts +5 -0
- package/dist/organization/organization.model.js +35 -0
- package/dist/organization/organization.model.js.map +1 -0
- package/dist/organization/organization.resolver.d.ts +6 -0
- package/dist/organization/organization.resolver.js +43 -0
- package/dist/organization/organization.resolver.js.map +1 -0
- package/dist/organization/organization.service.d.ts +12 -0
- package/dist/organization/organization.service.js +35 -0
- package/dist/organization/organization.service.js.map +1 -0
- package/dist/page/page.database.d.ts +10 -0
- package/dist/page/page.database.js +269 -0
- package/dist/page/page.database.js.map +1 -0
- package/dist/page/page.indexing.d.ts +3 -0
- package/dist/page/page.indexing.js +26 -0
- package/dist/page/page.indexing.js.map +1 -0
- package/dist/page/page.migrations.d.ts +13 -0
- package/dist/page/page.migrations.js +55 -0
- package/dist/page/page.migrations.js.map +1 -0
- package/dist/page/page.model.d.ts +88 -0
- package/dist/page/page.model.js +272 -0
- package/dist/page/page.model.js.map +1 -0
- package/dist/page/page.resolver.d.ts +48 -0
- package/dist/page/page.resolver.js +542 -0
- package/dist/page/page.resolver.js.map +1 -0
- package/dist/page/page.service.d.ts +59 -0
- package/dist/page/page.service.js +399 -0
- package/dist/page/page.service.js.map +1 -0
- package/dist/page/page.util.d.ts +3 -0
- package/dist/page/page.util.js +16 -0
- package/dist/page/page.util.js.map +1 -0
- package/dist/page/page.validation.d.ts +2 -0
- package/dist/page/page.validation.js +21 -0
- package/dist/page/page.validation.js.map +1 -0
- package/dist/pagerule/pagerule.database.d.ts +5 -0
- package/dist/pagerule/pagerule.database.js +212 -0
- package/dist/pagerule/pagerule.database.js.map +1 -0
- package/dist/pagerule/pagerule.model.d.ts +71 -0
- package/dist/pagerule/pagerule.model.js +272 -0
- package/dist/pagerule/pagerule.model.js.map +1 -0
- package/dist/pagerule/pagerule.resolver.d.ts +13 -0
- package/dist/pagerule/pagerule.resolver.js +114 -0
- package/dist/pagerule/pagerule.resolver.js.map +1 -0
- package/dist/pagerule/pagerule.service.d.ts +23 -0
- package/dist/pagerule/pagerule.service.js +180 -0
- package/dist/pagerule/pagerule.service.js.map +1 -0
- package/dist/pagetree/pagetree.database.d.ts +13 -0
- package/dist/pagetree/pagetree.database.js +84 -0
- package/dist/pagetree/pagetree.database.js.map +1 -0
- package/dist/pagetree/pagetree.model.d.ts +43 -0
- package/dist/pagetree/pagetree.model.js +146 -0
- package/dist/pagetree/pagetree.model.js.map +1 -0
- package/dist/pagetree/pagetree.resolver.d.ts +23 -0
- package/dist/pagetree/pagetree.resolver.js +238 -0
- package/dist/pagetree/pagetree.resolver.js.map +1 -0
- package/dist/pagetree/pagetree.service.d.ts +25 -0
- package/dist/pagetree/pagetree.service.js +221 -0
- package/dist/pagetree/pagetree.service.js.map +1 -0
- package/dist/role/role.database.d.ts +17 -0
- package/dist/role/role.database.js +74 -0
- package/dist/role/role.database.js.map +1 -0
- package/dist/role/role.model.d.ts +26 -0
- package/dist/role/role.model.js +84 -0
- package/dist/role/role.model.js.map +1 -0
- package/dist/role/role.resolver.d.ts +27 -0
- package/dist/role/role.resolver.js +294 -0
- package/dist/role/role.resolver.js.map +1 -0
- package/dist/role/role.service.d.ts +33 -0
- package/dist/role/role.service.js +265 -0
- package/dist/role/role.service.js.map +1 -0
- package/dist/run.d.ts +1 -0
- package/dist/run.js +29 -0
- package/dist/run.js.map +1 -0
- package/dist/scalars/datetime.d.ts +2 -0
- package/dist/scalars/datetime.js +19 -0
- package/dist/scalars/datetime.js.map +1 -0
- package/dist/scalars/index.d.ts +3 -0
- package/dist/scalars/index.js +4 -0
- package/dist/scalars/index.js.map +1 -0
- package/dist/scalars/jsondata.d.ts +2 -0
- package/dist/scalars/jsondata.js +15 -0
- package/dist/scalars/jsondata.js.map +1 -0
- package/dist/scalars/urlsafestring.d.ts +4 -0
- package/dist/scalars/urlsafestring.js +28 -0
- package/dist/scalars/urlsafestring.js.map +1 -0
- package/dist/site/site.database.d.ts +15 -0
- package/dist/site/site.database.js +164 -0
- package/dist/site/site.database.js.map +1 -0
- package/dist/site/site.model.d.ts +62 -0
- package/dist/site/site.model.js +197 -0
- package/dist/site/site.model.js.map +1 -0
- package/dist/site/site.resolver.d.ts +30 -0
- package/dist/site/site.resolver.js +326 -0
- package/dist/site/site.resolver.js.map +1 -0
- package/dist/site/site.service.d.ts +35 -0
- package/dist/site/site.service.js +199 -0
- package/dist/site/site.service.js.map +1 -0
- package/dist/siterule/siterule.database.d.ts +5 -0
- package/dist/siterule/siterule.database.js +139 -0
- package/dist/siterule/siterule.database.js.map +1 -0
- package/dist/siterule/siterule.model.d.ts +53 -0
- package/dist/siterule/siterule.model.js +203 -0
- package/dist/siterule/siterule.model.js.map +1 -0
- package/dist/siterule/siterule.resolver.d.ts +12 -0
- package/dist/siterule/siterule.resolver.js +100 -0
- package/dist/siterule/siterule.resolver.js.map +1 -0
- package/dist/siterule/siterule.service.d.ts +23 -0
- package/dist/siterule/siterule.service.js +148 -0
- package/dist/siterule/siterule.service.js.map +1 -0
- package/dist/template/template.database.d.ts +15 -0
- package/dist/template/template.database.js +61 -0
- package/dist/template/template.database.js.map +1 -0
- package/dist/template/template.model.d.ts +32 -0
- package/dist/template/template.model.js +124 -0
- package/dist/template/template.model.js.map +1 -0
- package/dist/template/template.resolver.d.ts +22 -0
- package/dist/template/template.resolver.js +216 -0
- package/dist/template/template.resolver.js.map +1 -0
- package/dist/template/template.service.d.ts +27 -0
- package/dist/template/template.service.js +192 -0
- package/dist/template/template.service.js.map +1 -0
- package/dist/templaterule/templaterule.database.d.ts +5 -0
- package/dist/templaterule/templaterule.database.js +80 -0
- package/dist/templaterule/templaterule.database.js.map +1 -0
- package/dist/templaterule/templaterule.model.d.ts +38 -0
- package/dist/templaterule/templaterule.model.js +136 -0
- package/dist/templaterule/templaterule.model.js.map +1 -0
- package/dist/templaterule/templaterule.resolver.d.ts +12 -0
- package/dist/templaterule/templaterule.resolver.js +100 -0
- package/dist/templaterule/templaterule.resolver.js.map +1 -0
- package/dist/templaterule/templaterule.service.d.ts +19 -0
- package/dist/templaterule/templaterule.service.js +123 -0
- package/dist/templaterule/templaterule.service.js.map +1 -0
- package/dist/user/user.database.d.ts +22 -0
- package/dist/user/user.database.js +116 -0
- package/dist/user/user.database.js.map +1 -0
- package/dist/user/user.model.d.ts +42 -0
- package/dist/user/user.model.js +122 -0
- package/dist/user/user.model.js.map +1 -0
- package/dist/user/user.resolver.d.ts +16 -0
- package/dist/user/user.resolver.js +140 -0
- package/dist/user/user.resolver.js.map +1 -0
- package/dist/user/user.service.d.ts +29 -0
- package/dist/user/user.service.js +195 -0
- package/dist/user/user.service.js.map +1 -0
- package/dist/util/authservice.d.ts +28 -0
- package/dist/util/authservice.js +131 -0
- package/dist/util/authservice.js.map +1 -0
- package/dist/util/dates.d.ts +2 -0
- package/dist/util/dates.js +4 -0
- package/dist/util/dates.js.map +1 -0
- package/dist/util/filehandler.d.ts +15 -0
- package/dist/util/filehandler.js +48 -0
- package/dist/util/filehandler.js.map +1 -0
- package/dist/util/index.d.ts +13 -0
- package/dist/util/index.js +26 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/indexing.d.ts +12 -0
- package/dist/util/indexing.js +74 -0
- package/dist/util/indexing.js.map +1 -0
- package/dist/util/migrations.d.ts +15 -0
- package/dist/util/migrations.js +2 -0
- package/dist/util/migrations.js.map +1 -0
- package/dist/util/mutationlogger.d.ts +1 -0
- package/dist/util/mutationlogger.js +9 -0
- package/dist/util/mutationlogger.js.map +1 -0
- package/dist/util/registry.d.ts +25 -0
- package/dist/util/registry.js +66 -0
- package/dist/util/registry.js.map +1 -0
- package/dist/util/rules.d.ts +6 -0
- package/dist/util/rules.js +31 -0
- package/dist/util/rules.js.map +1 -0
- package/dist/util/sharedtypes.d.ts +3 -0
- package/dist/util/sharedtypes.js +2 -0
- package/dist/util/sharedtypes.js.map +1 -0
- package/dist/util/stopwords.d.ts +1 -0
- package/dist/util/stopwords.js +152 -0
- package/dist/util/stopwords.js.map +1 -0
- package/dist/version/version.model.d.ts +11 -0
- package/dist/version/version.model.js +46 -0
- package/dist/version/version.model.js.map +1 -0
- package/dist/version/version.resolver.d.ts +6 -0
- package/dist/version/version.resolver.js +45 -0
- package/dist/version/version.resolver.js.map +1 -0
- package/dist/versionedservice/service.d.ts +148 -0
- package/dist/versionedservice/service.js +547 -0
- package/dist/versionedservice/service.js.map +1 -0
- package/dist/versionedservice/types.d.ts +87 -0
- package/dist/versionedservice/types.js +11 -0
- package/dist/versionedservice/types.js.map +1 -0
- package/package.json +50 -0
- package/readme/DosGato.mwb +0 -0
- package/readme/DosGato.mwb.bak +0 -0
- package/readme/upgradeflow2.png +0 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { Context } from '@txstate-mws/graphql-server';
|
|
14
|
+
import { Resolver, Ctx, FieldResolver, Root, Mutation, Arg } from 'type-graphql';
|
|
15
|
+
import { Role, RoleService, GlobalRule, GlobalRulePermissions, CreateGlobalRuleInput, GlobalRuleResponse, GlobalRuleService, UpdateGlobalRuleInput } from '../internal.js';
|
|
16
|
+
let GlobalRuleResolver = class GlobalRuleResolver {
|
|
17
|
+
async role(ctx, globalrule) {
|
|
18
|
+
return await ctx.svc(RoleService).getRoleForRule(globalrule.roleId);
|
|
19
|
+
}
|
|
20
|
+
permissions(globalrule) {
|
|
21
|
+
return globalrule;
|
|
22
|
+
}
|
|
23
|
+
async createGlobalRule(ctx, args) {
|
|
24
|
+
return await ctx.svc(GlobalRuleService).create(args);
|
|
25
|
+
}
|
|
26
|
+
async updateGlobalRule(ctx, args) {
|
|
27
|
+
return await ctx.svc(GlobalRuleService).update(args);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
__decorate([
|
|
31
|
+
FieldResolver(returns => Role),
|
|
32
|
+
__param(0, Ctx()),
|
|
33
|
+
__param(1, Root()),
|
|
34
|
+
__metadata("design:type", Function),
|
|
35
|
+
__metadata("design:paramtypes", [Context, GlobalRule]),
|
|
36
|
+
__metadata("design:returntype", Promise)
|
|
37
|
+
], GlobalRuleResolver.prototype, "role", null);
|
|
38
|
+
__decorate([
|
|
39
|
+
FieldResolver(returns => GlobalRulePermissions, {
|
|
40
|
+
description: `Reveal the simplified results after all authorization rules are taken into account
|
|
41
|
+
for the current user. Makes it easy to light up, disable, or hide buttons in the UI.`
|
|
42
|
+
}),
|
|
43
|
+
__param(0, Root()),
|
|
44
|
+
__metadata("design:type", Function),
|
|
45
|
+
__metadata("design:paramtypes", [GlobalRule]),
|
|
46
|
+
__metadata("design:returntype", void 0)
|
|
47
|
+
], GlobalRuleResolver.prototype, "permissions", null);
|
|
48
|
+
__decorate([
|
|
49
|
+
Mutation(returns => GlobalRuleResponse),
|
|
50
|
+
__param(0, Ctx()),
|
|
51
|
+
__param(1, Arg('args', type => CreateGlobalRuleInput)),
|
|
52
|
+
__metadata("design:type", Function),
|
|
53
|
+
__metadata("design:paramtypes", [Context, CreateGlobalRuleInput]),
|
|
54
|
+
__metadata("design:returntype", Promise)
|
|
55
|
+
], GlobalRuleResolver.prototype, "createGlobalRule", null);
|
|
56
|
+
__decorate([
|
|
57
|
+
Mutation(returns => GlobalRuleResponse),
|
|
58
|
+
__param(0, Ctx()),
|
|
59
|
+
__param(1, Arg('args', type => UpdateGlobalRuleInput)),
|
|
60
|
+
__metadata("design:type", Function),
|
|
61
|
+
__metadata("design:paramtypes", [Context, UpdateGlobalRuleInput]),
|
|
62
|
+
__metadata("design:returntype", Promise)
|
|
63
|
+
], GlobalRuleResolver.prototype, "updateGlobalRule", null);
|
|
64
|
+
GlobalRuleResolver = __decorate([
|
|
65
|
+
Resolver(of => GlobalRule)
|
|
66
|
+
], GlobalRuleResolver);
|
|
67
|
+
export { GlobalRuleResolver };
|
|
68
|
+
let GlobalRulePermissionsResolver = class GlobalRulePermissionsResolver {
|
|
69
|
+
async write(ctx, rule) {
|
|
70
|
+
return await ctx.svc(GlobalRuleService).mayWrite(rule);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
__decorate([
|
|
74
|
+
FieldResolver(returns => Boolean, { description: 'User may edit the grants on this rule.' }),
|
|
75
|
+
__param(0, Ctx()),
|
|
76
|
+
__param(1, Root()),
|
|
77
|
+
__metadata("design:type", Function),
|
|
78
|
+
__metadata("design:paramtypes", [Context, GlobalRule]),
|
|
79
|
+
__metadata("design:returntype", Promise)
|
|
80
|
+
], GlobalRulePermissionsResolver.prototype, "write", null);
|
|
81
|
+
GlobalRulePermissionsResolver = __decorate([
|
|
82
|
+
Resolver(of => GlobalRulePermissions)
|
|
83
|
+
], GlobalRulePermissionsResolver);
|
|
84
|
+
export { GlobalRulePermissionsResolver };
|
|
85
|
+
//# sourceMappingURL=globalrule.resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalrule.resolver.js","sourceRoot":"","sources":["../../src/globalrule/globalrule.resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAChF,OAAO,EACL,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB,EAAE,qBAAqB,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,qBAAqB,EAC7D,MAAM,gBAAgB,CAAA;AAGvB,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;IAE7B,KAAK,CAAC,IAAI,CAAS,GAAY,EAAU,UAAsB;QAC7D,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACrE,CAAC;IAMD,WAAW,CAAU,UAAsB;QACzC,OAAO,UAAU,CAAA;IACnB,CAAC;IAGD,KAAK,CAAC,gBAAgB,CAAS,GAAY,EAA8C,IAA2B;QAClH,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtD,CAAC;IAGD,KAAK,CAAC,gBAAgB,CAAS,GAAY,EAA8C,IAA2B;QAClH,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtD,CAAC;CACF,CAAA;AArBC;IADC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC;IAClB,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;;qCAAhB,OAAO,EAAsB,UAAU;;8CAE9D;AAMD;IAJC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,EAAE;QAC/C,WAAW,EAAE;2FAC0E;KACxF,CAAC;IACY,WAAA,IAAI,EAAE,CAAA;;qCAAa,UAAU;;qDAE1C;AAGD;IADC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,CAAC;IACf,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAA;;qCAApD,OAAO,EAAoD,qBAAqB;;0DAEnH;AAGD;IADC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,CAAC;IACf,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAA;;qCAApD,OAAO,EAAoD,qBAAqB;;0DAEnH;AAtBU,kBAAkB;IAD9B,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;GACd,kBAAkB,CAuB9B;SAvBY,kBAAkB;AA0B/B,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAExC,KAAK,CAAC,KAAK,CAAS,GAAY,EAAU,IAAgB;QACxD,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACxD,CAAC;CACF,CAAA;AAHC;IADC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE,CAAC;IAC/E,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;;qCAAhB,OAAO,EAAgB,UAAU;;0DAEzD;AAJU,6BAA6B;IADzC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC;GACzB,6BAA6B,CAKzC;SALY,6BAA6B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseService, ValidatedResponse } from '@txstate-mws/graphql-server';
|
|
2
|
+
import { GlobalRule, DosGatoService, CreateGlobalRuleInput, UpdateGlobalRuleInput } from '../internal.js';
|
|
3
|
+
export declare class GlobalRuleServiceInternal extends BaseService {
|
|
4
|
+
findById(ruleId: string): Promise<GlobalRule | undefined>;
|
|
5
|
+
findByRoleId(roleId: string): Promise<GlobalRule[]>;
|
|
6
|
+
}
|
|
7
|
+
export declare class GlobalRuleService extends DosGatoService<GlobalRule> {
|
|
8
|
+
raw: GlobalRuleServiceInternal;
|
|
9
|
+
findById(ruleId: string): Promise<GlobalRule | undefined>;
|
|
10
|
+
findByRoleId(roleId: string): Promise<GlobalRule[]>;
|
|
11
|
+
create(args: CreateGlobalRuleInput): Promise<ValidatedResponse>;
|
|
12
|
+
update(args: UpdateGlobalRuleInput): Promise<ValidatedResponse>;
|
|
13
|
+
delete(ruleId: string): Promise<ValidatedResponse>;
|
|
14
|
+
applies(rule: GlobalRule): Promise<boolean>;
|
|
15
|
+
tooPowerful(rule: GlobalRule): Promise<boolean>;
|
|
16
|
+
mayWrite(rule: GlobalRule): Promise<boolean>;
|
|
17
|
+
mayView(rule: GlobalRule): Promise<boolean>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { OneToManyLoader, PrimaryKeyLoader } from 'dataloader-factory';
|
|
2
|
+
import { BaseService, ValidatedResponse } from '@txstate-mws/graphql-server';
|
|
3
|
+
import { getGlobalRules, GlobalRule, DosGatoService, tooPowerfulHelper, RoleService, createGlobalRule, GlobalRuleResponse, updateGlobalRule, deleteGlobalRule, RoleServiceInternal } from '../internal.js';
|
|
4
|
+
const globalRulesByIdLoader = new PrimaryKeyLoader({
|
|
5
|
+
fetch: async (ids) => {
|
|
6
|
+
return await getGlobalRules({ ids });
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
const globalRulesByRoleLoader = new OneToManyLoader({
|
|
10
|
+
fetch: async (roleIds) => {
|
|
11
|
+
return await getGlobalRules({ roleIds });
|
|
12
|
+
},
|
|
13
|
+
extractKey: (r) => r.roleId
|
|
14
|
+
});
|
|
15
|
+
export class GlobalRuleServiceInternal extends BaseService {
|
|
16
|
+
async findById(ruleId) {
|
|
17
|
+
return await this.loaders.get(globalRulesByIdLoader).load(ruleId);
|
|
18
|
+
}
|
|
19
|
+
async findByRoleId(roleId) {
|
|
20
|
+
return await this.loaders.get(globalRulesByRoleLoader).load(roleId);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class GlobalRuleService extends DosGatoService {
|
|
24
|
+
constructor() {
|
|
25
|
+
super(...arguments);
|
|
26
|
+
this.raw = this.svc(GlobalRuleServiceInternal);
|
|
27
|
+
}
|
|
28
|
+
async findById(ruleId) {
|
|
29
|
+
return await this.removeUnauthorized(await this.raw.findById(ruleId));
|
|
30
|
+
}
|
|
31
|
+
async findByRoleId(roleId) {
|
|
32
|
+
return await this.removeUnauthorized(await this.raw.findByRoleId(roleId));
|
|
33
|
+
}
|
|
34
|
+
async create(args) {
|
|
35
|
+
const role = await this.svc(RoleServiceInternal).findById(args.roleId);
|
|
36
|
+
if (!role)
|
|
37
|
+
throw new Error('Role to be modified does not exist.');
|
|
38
|
+
if (!await this.svc(RoleService).mayCreateRules(role))
|
|
39
|
+
throw new Error('You are not permitted to add rules to this role.');
|
|
40
|
+
const newRule = new GlobalRule({ roleId: args.roleId, ...args.grants });
|
|
41
|
+
if (await this.tooPowerful(newRule))
|
|
42
|
+
return ValidatedResponse.error('The proposed rule would have more privilege than you currently have, so you cannot create it.');
|
|
43
|
+
try {
|
|
44
|
+
const ruleId = await createGlobalRule(args);
|
|
45
|
+
this.loaders.clear();
|
|
46
|
+
const rule = await this.raw.findById(String(ruleId));
|
|
47
|
+
return new GlobalRuleResponse({ globalRule: rule, success: true });
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
console.error(err);
|
|
51
|
+
throw new Error('An unknown error occurred while creating the global rule.');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async update(args) {
|
|
55
|
+
const rule = await this.raw.findById(args.ruleId);
|
|
56
|
+
if (!rule)
|
|
57
|
+
throw new Error('Rule to be updated does not exist.');
|
|
58
|
+
if (!await this.mayWrite(rule))
|
|
59
|
+
throw new Error('Current user is not permitted to update this global rule.');
|
|
60
|
+
const updatedGrants = { ...rule.grants, ...args.grants };
|
|
61
|
+
const newRule = new GlobalRule({
|
|
62
|
+
id: '0',
|
|
63
|
+
roleId: rule.roleId,
|
|
64
|
+
...updatedGrants
|
|
65
|
+
});
|
|
66
|
+
if (await this.tooPowerful(newRule))
|
|
67
|
+
return ValidatedResponse.error('The updated rule would have more privilege than you currently have, so you cannot create it.');
|
|
68
|
+
try {
|
|
69
|
+
await updateGlobalRule(args);
|
|
70
|
+
this.loaders.clear();
|
|
71
|
+
const updatedRule = await this.raw.findById(args.ruleId);
|
|
72
|
+
return new GlobalRuleResponse({ globalRule: updatedRule, success: true });
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
console.error(err);
|
|
76
|
+
throw new Error('An error occurred while updating the global rule.');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async delete(ruleId) {
|
|
80
|
+
const rule = await this.raw.findById(ruleId);
|
|
81
|
+
if (!rule)
|
|
82
|
+
throw new Error('Rule to be deleted does not exist.');
|
|
83
|
+
if (!(await this.mayWrite(rule)))
|
|
84
|
+
throw new Error('Current user is not permitted to delete this global rule.');
|
|
85
|
+
try {
|
|
86
|
+
await deleteGlobalRule(ruleId);
|
|
87
|
+
this.loaders.clear();
|
|
88
|
+
return new ValidatedResponse({ success: true });
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
throw new Error('An error occurred while deleting the global rule.');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async applies(rule) {
|
|
95
|
+
return true; // global rules always apply but we provide this function to match coding style of other rules
|
|
96
|
+
}
|
|
97
|
+
async tooPowerful(rule) {
|
|
98
|
+
return tooPowerfulHelper(rule, await this.currentGlobalRules(), () => true);
|
|
99
|
+
}
|
|
100
|
+
async mayWrite(rule) {
|
|
101
|
+
const role = await this.svc(RoleService).findById(rule.id);
|
|
102
|
+
return await this.svc(RoleService).mayUpdate(role);
|
|
103
|
+
}
|
|
104
|
+
async mayView(rule) {
|
|
105
|
+
if (await this.haveGlobalPerm('manageUsers'))
|
|
106
|
+
return true;
|
|
107
|
+
const role = await this.svc(RoleServiceInternal).findById(rule.roleId);
|
|
108
|
+
return !!role;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=globalrule.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalrule.service.js","sourceRoot":"","sources":["../../src/globalrule/globalrule.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Cache } from 'txstate-utils';
|
|
2
|
+
import { Group, GroupFilter } from '../internal.js';
|
|
3
|
+
declare class HierarchyGroup extends Group {
|
|
4
|
+
children: HierarchyGroup[];
|
|
5
|
+
parents: HierarchyGroup[];
|
|
6
|
+
ancestorIds(seen?: Set<string>): Set<string>;
|
|
7
|
+
descendantIds(seen?: Set<string>): Set<string>;
|
|
8
|
+
constructor(row: any);
|
|
9
|
+
}
|
|
10
|
+
export declare const groupHierarchyCache: Cache<undefined, {
|
|
11
|
+
[keys: string]: HierarchyGroup;
|
|
12
|
+
}, undefined>;
|
|
13
|
+
export declare function getGroups(filter?: GroupFilter): Promise<Group[]>;
|
|
14
|
+
export declare function getGroupsWithUser(userIds: string[]): Promise<{
|
|
15
|
+
key: any;
|
|
16
|
+
value: Group;
|
|
17
|
+
}[]>;
|
|
18
|
+
export declare function getGroupsWithSite(siteIds: string[]): Promise<{
|
|
19
|
+
key: any;
|
|
20
|
+
value: Group;
|
|
21
|
+
}[]>;
|
|
22
|
+
export declare function getGroupsWithManager(managerIds: string[], direct?: boolean): Promise<{
|
|
23
|
+
key: any;
|
|
24
|
+
value: Group;
|
|
25
|
+
}[]>;
|
|
26
|
+
export declare function getGroupsWithRole(roleIds: string[], filter?: GroupFilter): Promise<{
|
|
27
|
+
key: string;
|
|
28
|
+
value: Group;
|
|
29
|
+
}[]>;
|
|
30
|
+
export declare function createGroup(name: string): Promise<number>;
|
|
31
|
+
export declare function updateGroup(id: string, name: string): Promise<number>;
|
|
32
|
+
export declare function deleteGroup(id: string): Promise<void>;
|
|
33
|
+
export declare function addUserToGroups(groupIds: string[], userId: number): Promise<number>;
|
|
34
|
+
export declare function removeUserFromGroups(groupIds: string[], userId: number): Promise<number>;
|
|
35
|
+
export declare function setUserGroups(userId: number, groupIds: string[]): Promise<number>;
|
|
36
|
+
export declare function setGroupManager(groupId: string, userId: number, manager: boolean): Promise<void>;
|
|
37
|
+
export declare function addGroupSite(groupId: string, siteId: string): Promise<number>;
|
|
38
|
+
export declare function removeGroupSite(groupId: string, siteId: string): Promise<number>;
|
|
39
|
+
export declare function addSubgroup(parentId: string, childId: string): Promise<number>;
|
|
40
|
+
export declare function removeSubgroup(parentId: string, childId: string): Promise<number>;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import db from 'mysql2-async/db';
|
|
2
|
+
import { Cache, hashify, unique } from 'txstate-utils';
|
|
3
|
+
import { Group } from '../internal.js';
|
|
4
|
+
class HierarchyGroup extends Group {
|
|
5
|
+
constructor(row) {
|
|
6
|
+
super(row);
|
|
7
|
+
this.children = [];
|
|
8
|
+
this.parents = [];
|
|
9
|
+
}
|
|
10
|
+
ancestorIds(seen = new Set()) {
|
|
11
|
+
for (const p of this.parents) {
|
|
12
|
+
if (!seen.has(p.id)) {
|
|
13
|
+
seen.add(p.id);
|
|
14
|
+
p.ancestorIds(seen);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return seen;
|
|
18
|
+
}
|
|
19
|
+
descendantIds(seen = new Set()) {
|
|
20
|
+
for (const c of this.children) {
|
|
21
|
+
if (!seen.has(c.id)) {
|
|
22
|
+
seen.add(c.id);
|
|
23
|
+
c.descendantIds(seen);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return seen;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export const groupHierarchyCache = new Cache(async () => {
|
|
30
|
+
const [relationships, groups] = await Promise.all([
|
|
31
|
+
db.getall('SELECT * FROM groups_groups'),
|
|
32
|
+
db.getall(`
|
|
33
|
+
SELECT DISTINCT g.* FROM groups g
|
|
34
|
+
INNER JOIN groups_groups gg ON g.id=gg.childId OR g.id=gg.parentId
|
|
35
|
+
`)
|
|
36
|
+
]);
|
|
37
|
+
const groupNodes = groups.map(g => new HierarchyGroup(g));
|
|
38
|
+
const groupMap = hashify(groupNodes, 'id');
|
|
39
|
+
for (const r of relationships) {
|
|
40
|
+
groupMap[r.childId].parents.push(groupMap[r.parentId]);
|
|
41
|
+
groupMap[r.parentId].children.push(groupMap[r.childId]);
|
|
42
|
+
}
|
|
43
|
+
return groupMap;
|
|
44
|
+
}, {
|
|
45
|
+
freshseconds: 60,
|
|
46
|
+
staleseconds: 600
|
|
47
|
+
});
|
|
48
|
+
function processFilters(filter) {
|
|
49
|
+
const binds = [];
|
|
50
|
+
const where = [];
|
|
51
|
+
const joins = new Map();
|
|
52
|
+
if (filter?.ids?.length) {
|
|
53
|
+
where.push(`groups.id IN (${db.in(binds, filter.ids)})`);
|
|
54
|
+
}
|
|
55
|
+
if (filter?.managerIds?.length) {
|
|
56
|
+
joins.set('managerIds', `
|
|
57
|
+
LEFT JOIN (SELECT gm.groupId, users.* FROM groups_managers gm INNER JOIN users ON gm.userId=users.id) gmu ON groups.id = gmu.groupId
|
|
58
|
+
LEFT JOIN (SELECT gs.groupId, users.* FROM groups_sites gs INNER JOIN sites_managers sm ON gs.siteId=sm.siteId INNER JOIN users ON sm.userId=users.id) gsu ON groups.id = gsu.groupId
|
|
59
|
+
`);
|
|
60
|
+
where.push(`gmu.login IN (${db.in(binds, filter.managerIds)}) OR gsu.login IN (${db.in(binds, filter.managerIds)})`);
|
|
61
|
+
}
|
|
62
|
+
if (filter?.root) {
|
|
63
|
+
where.push('groups.id NOT IN (SELECT childId FROM groups_groups)');
|
|
64
|
+
}
|
|
65
|
+
return { binds, where, joins };
|
|
66
|
+
}
|
|
67
|
+
export async function getGroups(filter) {
|
|
68
|
+
const { binds, where, joins } = processFilters(filter);
|
|
69
|
+
let query = 'SELECT * FROM groups';
|
|
70
|
+
if (joins.size) {
|
|
71
|
+
query += Array.from(joins.values()).join('\n');
|
|
72
|
+
}
|
|
73
|
+
if (where.length) {
|
|
74
|
+
query += ` WHERE (${where.join(') AND (')})`;
|
|
75
|
+
}
|
|
76
|
+
const groups = await db.getall(query, binds);
|
|
77
|
+
return groups.map(g => new Group(g));
|
|
78
|
+
}
|
|
79
|
+
export async function getGroupsWithUser(userIds) {
|
|
80
|
+
const binds = [];
|
|
81
|
+
const rows = await db.getall(`
|
|
82
|
+
SELECT users.login, groups.* FROM groups
|
|
83
|
+
INNER JOIN users_groups ON groups.id = users_groups.groupId
|
|
84
|
+
INNER JOIN users ON users.id = users_groups.userId
|
|
85
|
+
WHERE users.login IN (${db.in(binds, userIds)})`, binds);
|
|
86
|
+
return rows.map(row => ({ key: row.login, value: new Group(row) }));
|
|
87
|
+
}
|
|
88
|
+
export async function getGroupsWithSite(siteIds) {
|
|
89
|
+
const binds = [];
|
|
90
|
+
const rows = await db.getall(`
|
|
91
|
+
SELECT gs.siteId, groups.* FROM groups
|
|
92
|
+
INNER JOIN groups_sites gs ON groups.id = gs.groupId
|
|
93
|
+
WHERE gs.siteId IN (${db.in(binds, siteIds)})`, binds);
|
|
94
|
+
return rows.map(row => ({ key: row.siteId, value: new Group(row) }));
|
|
95
|
+
}
|
|
96
|
+
export async function getGroupsWithManager(managerIds, direct) {
|
|
97
|
+
if (!managerIds.length)
|
|
98
|
+
return [];
|
|
99
|
+
const [directGroups, siteGroups] = await Promise.all([
|
|
100
|
+
db.getall(`SELECT g.*, u.login
|
|
101
|
+
FROM groups g
|
|
102
|
+
INNER JOIN groups_managers gm ON gm.groupId=g.id
|
|
103
|
+
INNER JOIN users u ON u.id=gm.userId
|
|
104
|
+
WHERE u.login IN (${db.in([], managerIds)})`, managerIds),
|
|
105
|
+
db.getall(`SELECT g.*, u.login
|
|
106
|
+
FROM groups g
|
|
107
|
+
INNER JOIN groups_sites gs ON gs.groupId=g.id
|
|
108
|
+
INNER JOIN sites_managers sm ON sm.siteId=gs.siteId
|
|
109
|
+
INNER JOIN users u ON u.id=sm.userId
|
|
110
|
+
WHERE u.login IN (${db.in([], managerIds)})`, managerIds)
|
|
111
|
+
]);
|
|
112
|
+
const all = !direct ? siteGroups : [];
|
|
113
|
+
if (direct !== false)
|
|
114
|
+
all.push(...directGroups);
|
|
115
|
+
return unique(all, row => [row.id, row.login])
|
|
116
|
+
.map(row => ({ key: row.login, value: new Group(row) }));
|
|
117
|
+
}
|
|
118
|
+
export async function getGroupsWithRole(roleIds, filter) {
|
|
119
|
+
const { binds, where, joins } = processFilters(filter);
|
|
120
|
+
if (!joins.has('groups_roles')) {
|
|
121
|
+
joins.set('groups_roles', 'INNER JOIN groups_roles on groups.id = groups_roles.groupId');
|
|
122
|
+
}
|
|
123
|
+
where.push(`groups_roles.roleId IN (${db.in(binds, roleIds)})`);
|
|
124
|
+
console.log(`SELECT groups.*, groups_roles.roleId as roleId
|
|
125
|
+
FROM groups
|
|
126
|
+
${Array.from(joins.values()).join('\n')}
|
|
127
|
+
WHERE (${where.join(') AND (')})`);
|
|
128
|
+
const groups = await db.getall(`SELECT groups.*, groups_roles.roleId as roleId
|
|
129
|
+
FROM groups
|
|
130
|
+
${Array.from(joins.values()).join('\n')}
|
|
131
|
+
WHERE (${where.join(') AND (')})`, binds);
|
|
132
|
+
return groups.map(row => ({ key: String(row.roleId), value: new Group(row) }));
|
|
133
|
+
}
|
|
134
|
+
export async function createGroup(name) {
|
|
135
|
+
const groupId = await db.insert('INSERT INTO groups (name) VALUES (?)', [name]);
|
|
136
|
+
return groupId;
|
|
137
|
+
}
|
|
138
|
+
export async function updateGroup(id, name) {
|
|
139
|
+
return await db.update('UPDATE groups SET name = ? WHERE id = ?', [name, id]);
|
|
140
|
+
}
|
|
141
|
+
export async function deleteGroup(id) {
|
|
142
|
+
return await db.transaction(async (db) => {
|
|
143
|
+
await Promise.all([
|
|
144
|
+
db.delete('DELETE FROM groups_roles WHERE groupId = ?', [id]),
|
|
145
|
+
db.delete('DELETE FROM groups_groups WHERE parentId = ? OR childId = ?', [id, id]),
|
|
146
|
+
db.delete('DELETE FROM users_groups WHERE groupId = ?', [id])
|
|
147
|
+
]);
|
|
148
|
+
await db.delete('DELETE FROM groups where id = ?', [id]);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
export async function addUserToGroups(groupIds, userId) {
|
|
152
|
+
const binds = [];
|
|
153
|
+
for (const id of groupIds) {
|
|
154
|
+
binds.push(userId, id);
|
|
155
|
+
}
|
|
156
|
+
return await db.insert(`INSERT INTO users_groups (userId, groupId) VALUES ${groupIds.map(g => '(?,?)').join(',')}`, binds);
|
|
157
|
+
}
|
|
158
|
+
export async function removeUserFromGroups(groupIds, userId) {
|
|
159
|
+
const binds = [userId];
|
|
160
|
+
return await db.delete(`DELETE FROM users_groups WHERE userId = ? AND groupId IN (${db.in(binds, groupIds)})`, binds);
|
|
161
|
+
}
|
|
162
|
+
export async function setUserGroups(userId, groupIds) {
|
|
163
|
+
const binds = [];
|
|
164
|
+
for (const id of groupIds) {
|
|
165
|
+
binds.push(userId, id);
|
|
166
|
+
}
|
|
167
|
+
return await db.transaction(async (db) => {
|
|
168
|
+
await db.delete('DELETE FROM users_groups WHERE userId = ?', [userId]);
|
|
169
|
+
return await db.insert(`INSERT INTO users_groups (userId, groupId) VALUES ${groupIds.map(g => '(?,?)').join(',')}`, binds);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
export async function setGroupManager(groupId, userId, manager) {
|
|
173
|
+
if (manager)
|
|
174
|
+
await db.update('INSERT IGNORE INTO groups_managers (groupId, userId) VALUES (?, ?)', [groupId, userId]);
|
|
175
|
+
else
|
|
176
|
+
await db.delete('DELETE FROM groups_managers WHERE groupId=? AND userId=?', [groupId, userId]);
|
|
177
|
+
}
|
|
178
|
+
export async function addGroupSite(groupId, siteId) {
|
|
179
|
+
return await db.update('INSERT IGNORE INTO groups_sites (groupId, siteId) VALUES (?, ?)', [groupId, siteId]);
|
|
180
|
+
}
|
|
181
|
+
export async function removeGroupSite(groupId, siteId) {
|
|
182
|
+
return await db.update('DELETE FROM groups_sites WHERE groupId=? AND siteId=?', [groupId, siteId]);
|
|
183
|
+
}
|
|
184
|
+
export async function addSubgroup(parentId, childId) {
|
|
185
|
+
return await db.insert('INSERT INTO groups_groups (parentId, childId) VALUES (?,?)', [parentId, childId]);
|
|
186
|
+
}
|
|
187
|
+
export async function removeSubgroup(parentId, childId) {
|
|
188
|
+
return await db.delete('DELETE FROM groups_groups WHERE parentId = ? AND childId = ?', [parentId, childId]);
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=group.database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.database.js","sourceRoot":"","sources":["../../src/group/group.database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ValidatedResponse, ValidatedResponseArgs } from '@txstate-mws/graphql-server';
|
|
2
|
+
export declare class Group {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
constructor(row: any);
|
|
6
|
+
}
|
|
7
|
+
export declare class GroupFilter {
|
|
8
|
+
ids?: string[];
|
|
9
|
+
managerIds?: string[];
|
|
10
|
+
root?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare class GroupResponse extends ValidatedResponse {
|
|
13
|
+
group?: Group;
|
|
14
|
+
constructor(config: ValidatedResponseArgs & {
|
|
15
|
+
group?: Group;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export declare class GroupPermissions {
|
|
19
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Field, ID, InputType, ObjectType } from 'type-graphql';
|
|
11
|
+
import { ValidatedResponse } from '@txstate-mws/graphql-server';
|
|
12
|
+
let Group = class Group {
|
|
13
|
+
constructor(row) {
|
|
14
|
+
this.id = String(row.id);
|
|
15
|
+
this.name = row.name;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
__decorate([
|
|
19
|
+
Field(type => ID),
|
|
20
|
+
__metadata("design:type", String)
|
|
21
|
+
], Group.prototype, "id", void 0);
|
|
22
|
+
__decorate([
|
|
23
|
+
Field(),
|
|
24
|
+
__metadata("design:type", String)
|
|
25
|
+
], Group.prototype, "name", void 0);
|
|
26
|
+
Group = __decorate([
|
|
27
|
+
ObjectType({ description: 'Groups of users so that groups can be assigned roles instead of individual users. Groups may also be synced to an external system like Active Directory.' }),
|
|
28
|
+
__metadata("design:paramtypes", [Object])
|
|
29
|
+
], Group);
|
|
30
|
+
export { Group };
|
|
31
|
+
let GroupFilter = class GroupFilter {
|
|
32
|
+
};
|
|
33
|
+
__decorate([
|
|
34
|
+
Field(type => [ID], { nullable: true }),
|
|
35
|
+
__metadata("design:type", Array)
|
|
36
|
+
], GroupFilter.prototype, "ids", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
Field(type => [ID], { nullable: true, description: 'Return groups managed by any of the specified manager ids.' }),
|
|
39
|
+
__metadata("design:type", Array)
|
|
40
|
+
], GroupFilter.prototype, "managerIds", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
Field({ nullable: true, description: 'true -> Return only groups that are not subgroups' }),
|
|
43
|
+
__metadata("design:type", Boolean)
|
|
44
|
+
], GroupFilter.prototype, "root", void 0);
|
|
45
|
+
GroupFilter = __decorate([
|
|
46
|
+
InputType()
|
|
47
|
+
], GroupFilter);
|
|
48
|
+
export { GroupFilter };
|
|
49
|
+
let GroupResponse = class GroupResponse extends ValidatedResponse {
|
|
50
|
+
constructor(config) {
|
|
51
|
+
super(config);
|
|
52
|
+
this.group = config.group;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
__decorate([
|
|
56
|
+
Field({ nullable: true }),
|
|
57
|
+
__metadata("design:type", Group)
|
|
58
|
+
], GroupResponse.prototype, "group", void 0);
|
|
59
|
+
GroupResponse = __decorate([
|
|
60
|
+
ObjectType(),
|
|
61
|
+
__metadata("design:paramtypes", [Object])
|
|
62
|
+
], GroupResponse);
|
|
63
|
+
export { GroupResponse };
|
|
64
|
+
let GroupPermissions = class GroupPermissions {
|
|
65
|
+
};
|
|
66
|
+
GroupPermissions = __decorate([
|
|
67
|
+
ObjectType()
|
|
68
|
+
], GroupPermissions);
|
|
69
|
+
export { GroupPermissions };
|
|
70
|
+
//# sourceMappingURL=group.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.model.js","sourceRoot":"","sources":["../../src/group/group.model.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAyB,MAAM,6BAA6B,CAAA;AAGtF,IAAa,KAAK,GAAlB,MAAa,KAAK;IAOhB,YAAa,GAAQ;QACnB,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACxB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;IACtB,CAAC;CACF,CAAA;AATC;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;;iCACR;AAGV;IADC,KAAK,EAAE;;mCACI;AALD,KAAK;IADjB,UAAU,CAAC,EAAE,WAAW,EAAE,0JAA0J,EAAE,CAAC;;GAC3K,KAAK,CAWjB;SAXY,KAAK;AAclB,IAAa,WAAW,GAAxB,MAAa,WAAW;CASvB,CAAA;AAPC;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wCAC1B;AAGd;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,4DAA4D,EAAE,CAAC;;+CAC9F;AAGrB;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,mDAAmD,EAAE,CAAC;;yCAC9E;AARH,WAAW;IADvB,SAAS,EAAE;GACC,WAAW,CASvB;SATY,WAAW;AAYxB,IAAa,aAAa,GAA1B,MAAa,aAAc,SAAQ,iBAAiB;IAIlD,YAAa,MAAiD;QAC5D,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;IAC3B,CAAC;CACF,CAAA;AANC;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAClB,KAAK;4CAAA;AAFF,aAAa;IADzB,UAAU,EAAE;;GACA,aAAa,CAQzB;SARY,aAAa;AAW1B,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;CAAG,CAAA;AAAnB,gBAAgB;IAD5B,UAAU,EAAE;GACA,gBAAgB,CAAG;SAAnB,gBAAgB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Context, ValidatedResponse } from '@txstate-mws/graphql-server';
|
|
2
|
+
import { Role, User, Group, GroupFilter, GroupResponse, Site } from '../internal.js';
|
|
3
|
+
export declare class GroupResolver {
|
|
4
|
+
groups(ctx: Context, filter?: GroupFilter): Promise<Group[]>;
|
|
5
|
+
users(ctx: Context, group: Group, direct?: boolean): Promise<User[] | (User | import("../internal.js").RedactedUser)[]>;
|
|
6
|
+
subgroups(ctx: Context, group: Group, recursive?: boolean): Promise<Group[]>;
|
|
7
|
+
roles(ctx: Context, group: Group, direct?: boolean): Promise<Role[]>;
|
|
8
|
+
managers(ctx: Context, group: Group, direct?: boolean): Promise<User[] | (User | import("../internal.js").RedactedUser)[]>;
|
|
9
|
+
sites(ctx: Context, group: Group): Promise<Site[]>;
|
|
10
|
+
parents(ctx: Context, group: Group): Promise<Group[]>;
|
|
11
|
+
permissions(group: Group): Group;
|
|
12
|
+
createGroup(ctx: Context, name: string): Promise<GroupResponse>;
|
|
13
|
+
updateGroup(ctx: Context, groupId: string, name: string): Promise<GroupResponse>;
|
|
14
|
+
deleteGroup(ctx: Context, groupId: string): Promise<ValidatedResponse>;
|
|
15
|
+
addUserToGroups(ctx: Context, groupIds: string[], userId: string): Promise<ValidatedResponse>;
|
|
16
|
+
removeUserFromGroups(ctx: Context, groupIds: string[], userId: string): Promise<ValidatedResponse>;
|
|
17
|
+
setUserGroups(ctx: Context, userId: string, groupIds: string[]): Promise<ValidatedResponse>;
|
|
18
|
+
setGroupManager(ctx: Context, groupId: string, userId: string, manager: boolean): Promise<GroupResponse>;
|
|
19
|
+
addGroupSite(ctx: Context, groupId: string, siteId: string): Promise<GroupResponse>;
|
|
20
|
+
removeGroupSite(ctx: Context, groupId: string, siteId: string): Promise<GroupResponse>;
|
|
21
|
+
addSubgroup(ctx: Context, parentGroupId: string, childGroupId: string): Promise<ValidatedResponse>;
|
|
22
|
+
removeSubgroup(ctx: Context, parentGroupId: string, childGroupId: string): Promise<ValidatedResponse>;
|
|
23
|
+
}
|
|
24
|
+
export declare class GroupPermissionsResolver {
|
|
25
|
+
manageUsers(ctx: Context, group: Group): Promise<boolean>;
|
|
26
|
+
manageGroups(ctx: Context, group: Group): Promise<boolean>;
|
|
27
|
+
}
|