@openinc/parse-server-opendash 1.12.2 → 1.13.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/dist/hooks/Group.js +39 -1
- package/dist/hooks/Maintenance_Issuecategory.js +4 -1
- package/dist/hooks/{Group_UserRelation.d.ts → Maintenance_Schedule_Execution.d.ts} +0 -0
- package/dist/hooks/{Group_UserRelation.js → Maintenance_Schedule_Execution.js} +2 -2
- package/dist/hooks/Maintenance_Schedule_Execution_Step.d.ts +1 -0
- package/dist/hooks/Maintenance_Schedule_Execution_Step.js +18 -0
- package/dist/hooks/Maintenance_Ticket_Kanban_State.js +4 -1
- package/dist/hooks/Permission.js +4 -0
- package/dist/hooks/Tenant.js +0 -13
- package/dist/hooks/_User.js +21 -33
- package/dist/index.d.ts +2 -0
- package/dist/index.js +21 -3
- package/dist/types/Group.d.ts +12 -0
- package/dist/types/Group.js +21 -0
- package/dist/types/Maintenance_Duedate.d.ts +3 -3
- package/dist/types/Tenant.d.ts +0 -3
- package/dist/types/Tenant.js +0 -6
- package/dist/types/_User.d.ts +0 -3
- package/dist/types/index.d.ts +0 -2
- package/dist/types/index.js +2 -4
- package/package.json +1 -1
- package/schema/Group.json +20 -0
- package/schema/Knowledge_DocumentPage.json +5 -5
- package/schema/Maintenance_Duedate.json +5 -5
- package/schema/Tenant.json +0 -5
- package/dist/types/Group_UserRelation.d.ts +0 -19
- package/dist/types/Group_UserRelation.js +0 -23
- package/schema/Group_UserRelation.json +0 -40
package/dist/hooks/Group.js
CHANGED
|
@@ -12,7 +12,45 @@ async function init() {
|
|
|
12
12
|
});
|
|
13
13
|
(0, __1.afterSaveHook)(types_1.Group, async (request) => {
|
|
14
14
|
const { object, original, user } = request;
|
|
15
|
-
|
|
15
|
+
await (0, __1.ensureRole)(`od-group-user-${object.id}`, {
|
|
16
|
+
label: object.get("label"),
|
|
17
|
+
acl: new Parse.ACL({
|
|
18
|
+
...(object.roleIsVisible && {
|
|
19
|
+
[`role:od-group-user-${object.id}`]: {
|
|
20
|
+
read: true,
|
|
21
|
+
},
|
|
22
|
+
}),
|
|
23
|
+
...(object.tenant &&
|
|
24
|
+
object.roleIsVisible &&
|
|
25
|
+
object.roleIsVisibleForTenant && {
|
|
26
|
+
[`role:od-tenant-user-${object.tenant.id}`]: {
|
|
27
|
+
read: true,
|
|
28
|
+
},
|
|
29
|
+
}),
|
|
30
|
+
}),
|
|
31
|
+
});
|
|
32
|
+
const role = (await new Parse.Query(Parse.Role)
|
|
33
|
+
.equalTo("name", `od-group-user-${object.id}`)
|
|
34
|
+
.first({ useMasterKey: true }));
|
|
35
|
+
const groupUsers = await object.users
|
|
36
|
+
.query()
|
|
37
|
+
.limit(1000000)
|
|
38
|
+
.find({ useMasterKey: true });
|
|
39
|
+
const roleUsers = await role
|
|
40
|
+
.getUsers()
|
|
41
|
+
.query()
|
|
42
|
+
.limit(1000000)
|
|
43
|
+
.find({ useMasterKey: true });
|
|
44
|
+
for (const user of roleUsers) {
|
|
45
|
+
role.getUsers().remove(user);
|
|
46
|
+
}
|
|
47
|
+
for (const user of groupUsers) {
|
|
48
|
+
role.getUsers().add(user);
|
|
49
|
+
}
|
|
50
|
+
role.save(null, { useMasterKey: true });
|
|
51
|
+
if (object.usersSeeEachOther || original?.usersSeeEachOther) {
|
|
52
|
+
await Parse.Object.saveAll(groupUsers, { useMasterKey: true });
|
|
53
|
+
}
|
|
16
54
|
});
|
|
17
55
|
}
|
|
18
56
|
exports.init = init;
|
|
@@ -7,7 +7,10 @@ async function init() {
|
|
|
7
7
|
(0, __1.beforeSaveHook)(types_1.Maintenance_Issuecategory, async (request) => {
|
|
8
8
|
const { object, original, user } = request;
|
|
9
9
|
await (0, __1.defaultHandler)(request);
|
|
10
|
-
await (0, __1.defaultAclHandler)(request
|
|
10
|
+
await (0, __1.defaultAclHandler)(request, {
|
|
11
|
+
allowTenantUserWrite: true,
|
|
12
|
+
});
|
|
13
|
+
await (0, __1.requirePermission)(request, "maintenance:can-update-issuecategory", "Permission denied.");
|
|
11
14
|
// TODO
|
|
12
15
|
});
|
|
13
16
|
(0, __1.afterSaveHook)(types_1.Maintenance_Issuecategory, async (request) => {
|
|
File without changes
|
|
@@ -4,13 +4,13 @@ exports.init = void 0;
|
|
|
4
4
|
const __1 = require("..");
|
|
5
5
|
const types_1 = require("../types");
|
|
6
6
|
async function init() {
|
|
7
|
-
(0, __1.beforeSaveHook)(types_1.
|
|
7
|
+
(0, __1.beforeSaveHook)(types_1.Maintenance_Schedule_Execution, async (request) => {
|
|
8
8
|
const { object, original, user } = request;
|
|
9
9
|
await (0, __1.defaultHandler)(request);
|
|
10
10
|
await (0, __1.defaultAclHandler)(request);
|
|
11
11
|
// TODO
|
|
12
12
|
});
|
|
13
|
-
(0, __1.afterSaveHook)(types_1.
|
|
13
|
+
(0, __1.afterSaveHook)(types_1.Maintenance_Schedule_Execution, async (request) => {
|
|
14
14
|
const { object, original, user } = request;
|
|
15
15
|
// TODO
|
|
16
16
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function init(): Promise<void>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.init = void 0;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
async function init() {
|
|
7
|
+
(0, __1.beforeSaveHook)(types_1.Maintenance_Schedule_Execution_Step, async (request) => {
|
|
8
|
+
const { object, original, user } = request;
|
|
9
|
+
await (0, __1.defaultHandler)(request);
|
|
10
|
+
await (0, __1.defaultAclHandler)(request);
|
|
11
|
+
// TODO
|
|
12
|
+
});
|
|
13
|
+
(0, __1.afterSaveHook)(types_1.Maintenance_Schedule_Execution_Step, async (request) => {
|
|
14
|
+
const { object, original, user } = request;
|
|
15
|
+
// TODO
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
exports.init = init;
|
|
@@ -7,7 +7,10 @@ async function init() {
|
|
|
7
7
|
(0, __1.beforeSaveHook)(types_1.Maintenance_Ticket_Kanban_State, async (request) => {
|
|
8
8
|
const { object, original, user } = request;
|
|
9
9
|
await (0, __1.defaultHandler)(request);
|
|
10
|
-
await (0, __1.defaultAclHandler)(request
|
|
10
|
+
await (0, __1.defaultAclHandler)(request, {
|
|
11
|
+
allowTenantUserWrite: true,
|
|
12
|
+
});
|
|
13
|
+
await (0, __1.requirePermission)(request, "maintenance:can-update-kanbanstate", "Permission denied.");
|
|
11
14
|
// TODO
|
|
12
15
|
});
|
|
13
16
|
(0, __1.afterSaveHook)(types_1.Maintenance_Ticket_Kanban_State, async (request) => {
|
package/dist/hooks/Permission.js
CHANGED
|
@@ -7,6 +7,10 @@ async function init() {
|
|
|
7
7
|
(0, __1.beforeSaveHook)(types_1.Permission, async (request) => {
|
|
8
8
|
const { object, original, user } = request;
|
|
9
9
|
await (0, __1.defaultHandler)(request);
|
|
10
|
+
await (0, __1.defaultAclHandler)(request, {
|
|
11
|
+
allowCustomACL: true,
|
|
12
|
+
denyTenantUserRead: true,
|
|
13
|
+
});
|
|
10
14
|
});
|
|
11
15
|
(0, __1.afterSaveHook)(types_1.Permission, async ({ object, original, user }) => {
|
|
12
16
|
// TODO
|
package/dist/hooks/Tenant.js
CHANGED
|
@@ -78,19 +78,6 @@ async function init() {
|
|
|
78
78
|
},
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
|
-
if (original &&
|
|
82
|
-
object.get("interactWithOtherTenants") !==
|
|
83
|
-
original.get("interactWithOtherTenants")) {
|
|
84
|
-
const users = await new Parse.Query(Parse.User)
|
|
85
|
-
.equalTo("tenant", object)
|
|
86
|
-
.limit(1000000)
|
|
87
|
-
.find({ useMasterKey: true });
|
|
88
|
-
for (const user of users) {
|
|
89
|
-
user.set("tenantGlobal", object.get("interactWithOtherTenants"));
|
|
90
|
-
user.set("tenantChanged", true);
|
|
91
|
-
}
|
|
92
|
-
await Parse.Object.saveAll(users, { useMasterKey: true });
|
|
93
|
-
}
|
|
94
81
|
});
|
|
95
82
|
}
|
|
96
83
|
exports.init = init;
|
package/dist/hooks/_User.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.init = void 0;
|
|
4
4
|
const __1 = require("..");
|
|
5
|
+
const types_1 = require("../types");
|
|
5
6
|
async function init() {
|
|
6
7
|
(0, __1.beforeSaveHook)(Parse.User, async (request) => {
|
|
7
8
|
const user = request.object;
|
|
@@ -25,10 +26,6 @@ async function init() {
|
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
|
-
user.set("tenantGlobal", !!tenant && !!user.get("tenantGlobal"));
|
|
29
|
-
if (tenant && request.original?.get("tenant")?.id !== tenant?.id) {
|
|
30
|
-
user.set("tenantGlobal", !!tenant.get("interactWithOtherTenants"));
|
|
31
|
-
}
|
|
32
29
|
user.set("tenantAdmin", !!user.get("tenantVerified") && !!user.get("tenantAdmin"));
|
|
33
30
|
user.set("tenantChanged", !!user.get("tenantChanged"));
|
|
34
31
|
if (user.get("tenantChanged")) {
|
|
@@ -39,17 +36,26 @@ async function init() {
|
|
|
39
36
|
// @ts-ignore
|
|
40
37
|
request.context.tenantChanged = true;
|
|
41
38
|
}
|
|
39
|
+
// fetch user groups
|
|
40
|
+
const groups = user.id
|
|
41
|
+
? await new Parse.Query(types_1.Group)
|
|
42
|
+
.equalTo("users", user)
|
|
43
|
+
.equalTo("usersSeeEachOther", true)
|
|
44
|
+
.limit(1000000)
|
|
45
|
+
.find({ useMasterKey: true })
|
|
46
|
+
: [];
|
|
42
47
|
user.setACL(new Parse.ACL({
|
|
43
48
|
...(tenantId && {
|
|
44
49
|
[`role:od-tenant-user-${tenantId}`]: { read: true },
|
|
45
50
|
[`role:od-tenant-admin-${tenantId}`]: { read: true, write: true },
|
|
46
51
|
}),
|
|
47
|
-
...(user.get("tenantGlobal") && {
|
|
48
|
-
"role:od-tenant-global-visible": { read: true },
|
|
49
|
-
}),
|
|
50
52
|
...(user.id && {
|
|
51
53
|
[user.id]: { read: true },
|
|
52
54
|
}),
|
|
55
|
+
...Object.fromEntries(groups.map((group) => [
|
|
56
|
+
"role:od-group-user-" + group.id,
|
|
57
|
+
{ read: true },
|
|
58
|
+
])),
|
|
53
59
|
"role:od-admin": { read: true, write: true },
|
|
54
60
|
}));
|
|
55
61
|
});
|
|
@@ -69,42 +75,24 @@ async function init() {
|
|
|
69
75
|
const wasAdmin = !!original?.get("tenantAdmin");
|
|
70
76
|
const isVerified = isTenant && !!object.get("tenantVerified");
|
|
71
77
|
const wasVerified = wasTenant && !!object.get("tenantVerified");
|
|
72
|
-
const isGlobal = isVerified && !!object.get("tenantGlobal");
|
|
73
78
|
const changedTenant = isTenant !== wasTenant || tenantId !== prevTenantId;
|
|
74
79
|
const changedAdmin = isAdmin !== wasAdmin;
|
|
75
80
|
const changedVerified = isVerified !== wasVerified;
|
|
76
81
|
const changedContext = !!request.context?.tenantChanged;
|
|
77
82
|
if (changedTenant || changedAdmin || changedVerified || changedContext) {
|
|
78
|
-
await
|
|
79
|
-
await
|
|
80
|
-
await
|
|
81
|
-
await
|
|
82
|
-
await userRole(object, `od-tenant-global-visible`, isGlobal);
|
|
83
|
+
await (0, __1.ensureUserRole)(object, `od-user`, isTenant);
|
|
84
|
+
await (0, __1.ensureUserRole)(object, `od-tenant-user`, isTenant);
|
|
85
|
+
await (0, __1.ensureUserRole)(object, `od-tenant-verified`, isVerified);
|
|
86
|
+
await (0, __1.ensureUserRole)(object, `od-tenant-admin`, isAdmin);
|
|
83
87
|
if (tenantId) {
|
|
84
|
-
await
|
|
85
|
-
await
|
|
88
|
+
await (0, __1.ensureUserRole)(object, `od-tenant-user-${tenantId}`, true);
|
|
89
|
+
await (0, __1.ensureUserRole)(object, `od-tenant-admin-${tenantId}`, isAdmin);
|
|
86
90
|
}
|
|
87
91
|
if (wasTenant && tenantId !== prevTenantId) {
|
|
88
|
-
await
|
|
89
|
-
await
|
|
92
|
+
await (0, __1.ensureUserRole)(object, `od-tenant-user-${prevTenantId}`, false);
|
|
93
|
+
await (0, __1.ensureUserRole)(object, `od-tenant-admin-${prevTenantId}`, false);
|
|
90
94
|
}
|
|
91
95
|
}
|
|
92
96
|
});
|
|
93
97
|
}
|
|
94
98
|
exports.init = init;
|
|
95
|
-
async function userRole(user, roleName, add = false) {
|
|
96
|
-
const role = await new Parse.Query(Parse.Role)
|
|
97
|
-
.equalTo("name", roleName)
|
|
98
|
-
.first({ useMasterKey: true });
|
|
99
|
-
if (role) {
|
|
100
|
-
const relation = role.relation("users");
|
|
101
|
-
if (add) {
|
|
102
|
-
relation.add(user);
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
relation.remove(user);
|
|
106
|
-
}
|
|
107
|
-
await role.save(null, { useMasterKey: true });
|
|
108
|
-
console.log("userRole", user.get("username"), roleName, add);
|
|
109
|
-
}
|
|
110
|
-
}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,11 +18,13 @@ export declare function ensureRole(name: string, options?: {
|
|
|
18
18
|
acl?: Parse.ACL;
|
|
19
19
|
childRoles?: string[];
|
|
20
20
|
}): Promise<void>;
|
|
21
|
+
export declare function ensureUserRole(user: Parse.User, roleName: string, add?: boolean): Promise<void>;
|
|
21
22
|
export declare function immutableField(request: Parse.Cloud.BeforeSaveRequest, fieldName: string, permissionName?: string | null): Promise<void>;
|
|
22
23
|
export declare function defaultHandler(request: Parse.Cloud.BeforeSaveRequest): Promise<void>;
|
|
23
24
|
export declare function defaultAclHandler(request: Parse.Cloud.BeforeSaveRequest, options?: {
|
|
24
25
|
allowCustomACL?: boolean;
|
|
25
26
|
allowTenantUserWrite?: boolean;
|
|
27
|
+
denyTenantUserRead?: boolean;
|
|
26
28
|
}): Promise<void>;
|
|
27
29
|
declare type beforeSaveHookType<T extends Parse.Object<Parse.Attributes>> = (request: ParseCloud.BeforeSaveRequest<T>) => Promise<void>;
|
|
28
30
|
export declare function beforeSaveHook<T extends Parse.Object<Parse.Attributes>>(target: string | {
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.afterDeleteHook = exports.beforeDeleteHook = exports.afterSaveHook = exports.beforeSaveHook = exports.defaultAclHandler = exports.defaultHandler = exports.immutableField = exports.ensureRole = exports.getEnvBoolean = exports.getEnv = exports.getConfigBoolean = exports.getConfig = exports.requirePermission = exports.hasPermission = exports.init = exports.PREFIX = void 0;
|
|
6
|
+
exports.afterDeleteHook = exports.beforeDeleteHook = exports.afterSaveHook = exports.beforeSaveHook = exports.defaultAclHandler = exports.defaultHandler = exports.immutableField = exports.ensureUserRole = exports.ensureRole = exports.getEnvBoolean = exports.getEnv = exports.getConfigBoolean = exports.getConfig = exports.requirePermission = exports.hasPermission = exports.init = exports.PREFIX = void 0;
|
|
7
7
|
const web_push_1 = __importDefault(require("web-push"));
|
|
8
8
|
const path_1 = require("path");
|
|
9
9
|
const parse_server_schema_1 = require("@openinc/parse-server-schema");
|
|
@@ -46,7 +46,6 @@ async function initDefaultRoles() {
|
|
|
46
46
|
});
|
|
47
47
|
await ensureRole("od-tenant-user");
|
|
48
48
|
await ensureRole("od-tenant-verified");
|
|
49
|
-
await ensureRole("od-tenant-global-visible");
|
|
50
49
|
await ensureRole("od-tenant-admin");
|
|
51
50
|
}
|
|
52
51
|
catch (error) {
|
|
@@ -166,6 +165,23 @@ async function ensureRole(name, options) {
|
|
|
166
165
|
}
|
|
167
166
|
}
|
|
168
167
|
exports.ensureRole = ensureRole;
|
|
168
|
+
async function ensureUserRole(user, roleName, add = false) {
|
|
169
|
+
const role = await new Parse.Query(Parse.Role)
|
|
170
|
+
.equalTo("name", roleName)
|
|
171
|
+
.first({ useMasterKey: true });
|
|
172
|
+
if (role) {
|
|
173
|
+
const relation = role.relation("users");
|
|
174
|
+
if (add) {
|
|
175
|
+
relation.add(user);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
relation.remove(user);
|
|
179
|
+
}
|
|
180
|
+
await role.save(null, { useMasterKey: true });
|
|
181
|
+
console.log("userRole", user.get("username"), roleName, add);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
exports.ensureUserRole = ensureUserRole;
|
|
169
185
|
async function immutableField(request, fieldName, permissionName = "parse:edit-immutable-fields") {
|
|
170
186
|
if (!request.original || request.master) {
|
|
171
187
|
return;
|
|
@@ -238,7 +254,9 @@ async function defaultAclHandler(request, options) {
|
|
|
238
254
|
if (tenantField) {
|
|
239
255
|
const tenant = request.object.get("tenant");
|
|
240
256
|
if (tenant) {
|
|
241
|
-
|
|
257
|
+
if (!options?.denyTenantUserRead) {
|
|
258
|
+
acl.setRoleReadAccess(`od-tenant-user-${tenant.id}`, true);
|
|
259
|
+
}
|
|
242
260
|
if (options?.allowTenantUserWrite) {
|
|
243
261
|
acl.setRoleWriteAccess(`od-tenant-user-${tenant.id}`, true);
|
|
244
262
|
}
|
package/dist/types/Group.d.ts
CHANGED
|
@@ -1,18 +1,30 @@
|
|
|
1
1
|
/// <reference types="parse" />
|
|
2
2
|
import type { Tenant } from "./Tenant";
|
|
3
|
+
import type { _User } from "./_User";
|
|
3
4
|
export interface GroupAttributes {
|
|
4
5
|
id: string;
|
|
5
6
|
objectId: string;
|
|
6
7
|
createdAt: Date;
|
|
7
8
|
updatedAt: Date;
|
|
8
9
|
label: string;
|
|
10
|
+
roleIsVisible: boolean;
|
|
11
|
+
roleIsVisibleForTenant: boolean;
|
|
9
12
|
tenant?: Tenant;
|
|
13
|
+
users: Parse.Relation<Group, _User>;
|
|
14
|
+
usersSeeEachOther: boolean;
|
|
10
15
|
}
|
|
11
16
|
export declare class Group extends Parse.Object<GroupAttributes> {
|
|
12
17
|
static className: string;
|
|
13
18
|
constructor(data?: Partial<GroupAttributes>);
|
|
14
19
|
get label(): string;
|
|
15
20
|
set label(value: string);
|
|
21
|
+
get roleIsVisible(): boolean;
|
|
22
|
+
set roleIsVisible(value: boolean);
|
|
23
|
+
get roleIsVisibleForTenant(): boolean;
|
|
24
|
+
set roleIsVisibleForTenant(value: boolean);
|
|
16
25
|
get tenant(): Tenant | undefined;
|
|
17
26
|
set tenant(value: Tenant | undefined);
|
|
27
|
+
get users(): Parse.Relation<Group, _User>;
|
|
28
|
+
get usersSeeEachOther(): boolean;
|
|
29
|
+
set usersSeeEachOther(value: boolean);
|
|
18
30
|
}
|
package/dist/types/Group.js
CHANGED
|
@@ -11,12 +11,33 @@ class Group extends Parse.Object {
|
|
|
11
11
|
set label(value) {
|
|
12
12
|
super.set("label", value);
|
|
13
13
|
}
|
|
14
|
+
get roleIsVisible() {
|
|
15
|
+
return super.get("roleIsVisible");
|
|
16
|
+
}
|
|
17
|
+
set roleIsVisible(value) {
|
|
18
|
+
super.set("roleIsVisible", value);
|
|
19
|
+
}
|
|
20
|
+
get roleIsVisibleForTenant() {
|
|
21
|
+
return super.get("roleIsVisibleForTenant");
|
|
22
|
+
}
|
|
23
|
+
set roleIsVisibleForTenant(value) {
|
|
24
|
+
super.set("roleIsVisibleForTenant", value);
|
|
25
|
+
}
|
|
14
26
|
get tenant() {
|
|
15
27
|
return super.get("tenant");
|
|
16
28
|
}
|
|
17
29
|
set tenant(value) {
|
|
18
30
|
super.set("tenant", value);
|
|
19
31
|
}
|
|
32
|
+
get users() {
|
|
33
|
+
return super.relation("users");
|
|
34
|
+
}
|
|
35
|
+
get usersSeeEachOther() {
|
|
36
|
+
return super.get("usersSeeEachOther");
|
|
37
|
+
}
|
|
38
|
+
set usersSeeEachOther(value) {
|
|
39
|
+
super.set("usersSeeEachOther", value);
|
|
40
|
+
}
|
|
20
41
|
}
|
|
21
42
|
exports.Group = Group;
|
|
22
43
|
Group.className = "OD3_Group";
|
|
@@ -12,7 +12,7 @@ export interface Maintenance_DuedateAttributes {
|
|
|
12
12
|
start: Date;
|
|
13
13
|
startformat: string;
|
|
14
14
|
tenant?: Tenant;
|
|
15
|
-
ticket
|
|
15
|
+
ticket: Maintenance_Ticket;
|
|
16
16
|
user?: _User;
|
|
17
17
|
}
|
|
18
18
|
export declare class Maintenance_Duedate extends Parse.Object<Maintenance_DuedateAttributes> {
|
|
@@ -28,8 +28,8 @@ export declare class Maintenance_Duedate extends Parse.Object<Maintenance_Duedat
|
|
|
28
28
|
set startformat(value: string);
|
|
29
29
|
get tenant(): Tenant | undefined;
|
|
30
30
|
set tenant(value: Tenant | undefined);
|
|
31
|
-
get ticket(): Maintenance_Ticket
|
|
32
|
-
set ticket(value: Maintenance_Ticket
|
|
31
|
+
get ticket(): Maintenance_Ticket;
|
|
32
|
+
set ticket(value: Maintenance_Ticket);
|
|
33
33
|
get user(): _User | undefined;
|
|
34
34
|
set user(value: _User | undefined);
|
|
35
35
|
}
|
package/dist/types/Tenant.d.ts
CHANGED
|
@@ -8,7 +8,6 @@ export interface TenantAttributes {
|
|
|
8
8
|
updatedAt: Date;
|
|
9
9
|
dataSource?: Source;
|
|
10
10
|
hasDataSource: boolean;
|
|
11
|
-
interactWithOtherTenants: boolean;
|
|
12
11
|
label: string;
|
|
13
12
|
meta?: TenantMeta;
|
|
14
13
|
tagPrefix?: string;
|
|
@@ -20,8 +19,6 @@ export declare class Tenant extends Parse.Object<TenantAttributes> {
|
|
|
20
19
|
set dataSource(value: Source | undefined);
|
|
21
20
|
get hasDataSource(): boolean;
|
|
22
21
|
set hasDataSource(value: boolean);
|
|
23
|
-
get interactWithOtherTenants(): boolean;
|
|
24
|
-
set interactWithOtherTenants(value: boolean);
|
|
25
22
|
get label(): string;
|
|
26
23
|
set label(value: string);
|
|
27
24
|
get meta(): TenantMeta | undefined;
|
package/dist/types/Tenant.js
CHANGED
|
@@ -17,12 +17,6 @@ class Tenant extends Parse.Object {
|
|
|
17
17
|
set hasDataSource(value) {
|
|
18
18
|
super.set("hasDataSource", value);
|
|
19
19
|
}
|
|
20
|
-
get interactWithOtherTenants() {
|
|
21
|
-
return super.get("interactWithOtherTenants");
|
|
22
|
-
}
|
|
23
|
-
set interactWithOtherTenants(value) {
|
|
24
|
-
super.set("interactWithOtherTenants", value);
|
|
25
|
-
}
|
|
26
20
|
get label() {
|
|
27
21
|
return super.get("label");
|
|
28
22
|
}
|
package/dist/types/_User.d.ts
CHANGED
|
@@ -12,15 +12,12 @@ export interface _UserAttributes {
|
|
|
12
12
|
lastname?: string;
|
|
13
13
|
ldap?: boolean;
|
|
14
14
|
ldap_dn?: string;
|
|
15
|
-
miaasUserScope?: string;
|
|
16
15
|
name?: string;
|
|
17
16
|
password?: string;
|
|
18
17
|
tenant?: Tenant;
|
|
19
18
|
tenantAdmin: boolean;
|
|
20
19
|
tenantBanned?: boolean;
|
|
21
20
|
tenantChanged?: boolean;
|
|
22
|
-
tenantConfirmed: boolean;
|
|
23
|
-
tenantGlobal?: boolean;
|
|
24
21
|
tenantVerified?: boolean;
|
|
25
22
|
username?: string;
|
|
26
23
|
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -24,8 +24,6 @@ export { Dashboard } from "./Dashboard";
|
|
|
24
24
|
export type { DashboardAttributes } from "./Dashboard";
|
|
25
25
|
export { Group } from "./Group";
|
|
26
26
|
export type { GroupAttributes } from "./Group";
|
|
27
|
-
export { Group_UserRelation } from "./Group_UserRelation";
|
|
28
|
-
export type { Group_UserRelationAttributes } from "./Group_UserRelation";
|
|
29
27
|
export { Knowledge_Article } from "./Knowledge_Article";
|
|
30
28
|
export type { Knowledge_ArticleAttributes } from "./Knowledge_Article";
|
|
31
29
|
export { Knowledge_Category } from "./Knowledge_Category";
|
package/dist/types/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UserData = exports.TenantTrustedDomain = exports.TenantMeta = exports.Tenant = exports.SourceMeta = exports.Source = exports.Share = exports.Report = exports.Push = exports.Permission = exports.Notification = exports.NavigationItem = exports.NavigationGroup = exports.Maintenance_Ticket_Source = exports.Maintenance_Ticket_Kanban_State = exports.Maintenance_Ticket_Issuecategory = exports.Maintenance_Ticket = exports.Maintenance_Schedule_Step = exports.Maintenance_Schedule_Execution_Step = exports.Maintenance_Schedule_Execution = exports.Maintenance_Schedule = exports.Maintenance_Restriction = exports.Maintenance_Priority = exports.Maintenance_Media = exports.Maintenance_Kanban_State = exports.Maintenance_Issuecategory = exports.Maintenance_Frequency = exports.Maintenance_Duedate = exports.Maintenance_Downtime = exports.Maintenance_Article = exports.Language = exports.Knowledge_Video = exports.Knowledge_DocumentPage = exports.Knowledge_Document = exports.Knowledge_Category = exports.Knowledge_Article = exports.
|
|
4
|
-
exports.WidgetPreset = exports.Widget =
|
|
3
|
+
exports.WebPush = exports.UserData = exports.TenantTrustedDomain = exports.TenantMeta = exports.Tenant = exports.SourceMeta = exports.Source = exports.Share = exports.Report = exports.Push = exports.Permission = exports.Notification = exports.NavigationItem = exports.NavigationGroup = exports.Maintenance_Ticket_Source = exports.Maintenance_Ticket_Kanban_State = exports.Maintenance_Ticket_Issuecategory = exports.Maintenance_Ticket = exports.Maintenance_Schedule_Step = exports.Maintenance_Schedule_Execution_Step = exports.Maintenance_Schedule_Execution = exports.Maintenance_Schedule = exports.Maintenance_Restriction = exports.Maintenance_Priority = exports.Maintenance_Media = exports.Maintenance_Kanban_State = exports.Maintenance_Issuecategory = exports.Maintenance_Frequency = exports.Maintenance_Duedate = exports.Maintenance_Downtime = exports.Maintenance_Article = exports.Language = exports.Knowledge_Video = exports.Knowledge_DocumentPage = exports.Knowledge_Document = exports.Knowledge_Category = exports.Knowledge_Article = exports.Group = exports.Dashboard = exports.Config = exports.BDE_Unit = exports.BDE_Result = exports.BDE_Page = exports.BDE_ListEntry = exports.BDE_List = exports.BDE_Form = exports.Attachment = exports.AlarmWebhook = exports.AlarmAction = exports.Alarm = void 0;
|
|
4
|
+
exports.WidgetPreset = exports.Widget = void 0;
|
|
5
5
|
var Alarm_1 = require("./Alarm");
|
|
6
6
|
Object.defineProperty(exports, "Alarm", { enumerable: true, get: function () { return Alarm_1.Alarm; } });
|
|
7
7
|
var AlarmAction_1 = require("./AlarmAction");
|
|
@@ -28,8 +28,6 @@ var Dashboard_1 = require("./Dashboard");
|
|
|
28
28
|
Object.defineProperty(exports, "Dashboard", { enumerable: true, get: function () { return Dashboard_1.Dashboard; } });
|
|
29
29
|
var Group_1 = require("./Group");
|
|
30
30
|
Object.defineProperty(exports, "Group", { enumerable: true, get: function () { return Group_1.Group; } });
|
|
31
|
-
var Group_UserRelation_1 = require("./Group_UserRelation");
|
|
32
|
-
Object.defineProperty(exports, "Group_UserRelation", { enumerable: true, get: function () { return Group_UserRelation_1.Group_UserRelation; } });
|
|
33
31
|
var Knowledge_Article_1 = require("./Knowledge_Article");
|
|
34
32
|
Object.defineProperty(exports, "Knowledge_Article", { enumerable: true, get: function () { return Knowledge_Article_1.Knowledge_Article; } });
|
|
35
33
|
var Knowledge_Category_1 = require("./Knowledge_Category");
|
package/package.json
CHANGED
package/schema/Group.json
CHANGED
|
@@ -8,6 +8,26 @@
|
|
|
8
8
|
"type": "Pointer",
|
|
9
9
|
"targetClass": "{{PREFIX}}Tenant",
|
|
10
10
|
"required": false
|
|
11
|
+
},
|
|
12
|
+
"usersSeeEachOther": {
|
|
13
|
+
"type": "Boolean",
|
|
14
|
+
"required": false,
|
|
15
|
+
"defaultValue": false
|
|
16
|
+
},
|
|
17
|
+
"roleIsVisible": {
|
|
18
|
+
"type": "Boolean",
|
|
19
|
+
"required": false,
|
|
20
|
+
"defaultValue": false
|
|
21
|
+
},
|
|
22
|
+
"roleIsVisibleForTenant": {
|
|
23
|
+
"type": "Boolean",
|
|
24
|
+
"required": false,
|
|
25
|
+
"defaultValue": false
|
|
26
|
+
},
|
|
27
|
+
"users": {
|
|
28
|
+
"type": "Relation",
|
|
29
|
+
"targetClass": "_User",
|
|
30
|
+
"required": false
|
|
11
31
|
}
|
|
12
32
|
},
|
|
13
33
|
"classLevelPermissions": {
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"fields": {
|
|
3
|
-
"tenant": {
|
|
4
|
-
"type": "Pointer",
|
|
5
|
-
"targetClass": "{{PREFIX}}Tenant",
|
|
6
|
-
"required": true
|
|
7
|
-
},
|
|
8
3
|
"document": {
|
|
9
4
|
"type": "Pointer",
|
|
10
5
|
"targetClass": "{{PREFIX}}Knowledge_Document",
|
|
@@ -26,6 +21,11 @@
|
|
|
26
21
|
"image": {
|
|
27
22
|
"type": "File",
|
|
28
23
|
"required": true
|
|
24
|
+
},
|
|
25
|
+
"tenant": {
|
|
26
|
+
"type": "Pointer",
|
|
27
|
+
"targetClass": "{{PREFIX}}Tenant",
|
|
28
|
+
"required": true
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"classLevelPermissions": {
|
|
@@ -8,11 +8,6 @@
|
|
|
8
8
|
"type": "Date",
|
|
9
9
|
"required": false
|
|
10
10
|
},
|
|
11
|
-
"ticket": {
|
|
12
|
-
"type": "Pointer",
|
|
13
|
-
"targetClass": "{{PREFIX}}Maintenance_Ticket",
|
|
14
|
-
"required": false
|
|
15
|
-
},
|
|
16
11
|
"startformat": {
|
|
17
12
|
"type": "String",
|
|
18
13
|
"required": false,
|
|
@@ -32,6 +27,11 @@
|
|
|
32
27
|
"type": "Pointer",
|
|
33
28
|
"targetClass": "{{PREFIX}}Tenant",
|
|
34
29
|
"required": false
|
|
30
|
+
},
|
|
31
|
+
"ticket": {
|
|
32
|
+
"type": "Pointer",
|
|
33
|
+
"targetClass": "{{PREFIX}}Maintenance_Ticket",
|
|
34
|
+
"required": true
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
37
|
"classLevelPermissions": {
|
package/schema/Tenant.json
CHANGED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/// <reference types="parse" />
|
|
2
|
-
import type { Group } from "./Group";
|
|
3
|
-
import type { _User } from "./_User";
|
|
4
|
-
export interface Group_UserRelationAttributes {
|
|
5
|
-
id: string;
|
|
6
|
-
objectId: string;
|
|
7
|
-
createdAt: Date;
|
|
8
|
-
updatedAt: Date;
|
|
9
|
-
group?: Group;
|
|
10
|
-
user?: _User;
|
|
11
|
-
}
|
|
12
|
-
export declare class Group_UserRelation extends Parse.Object<Group_UserRelationAttributes> {
|
|
13
|
-
static className: string;
|
|
14
|
-
constructor(data?: Partial<Group_UserRelationAttributes>);
|
|
15
|
-
get group(): Group | undefined;
|
|
16
|
-
set group(value: Group | undefined);
|
|
17
|
-
get user(): _User | undefined;
|
|
18
|
-
set user(value: _User | undefined);
|
|
19
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Group_UserRelation = void 0;
|
|
4
|
-
class Group_UserRelation extends Parse.Object {
|
|
5
|
-
constructor(data) {
|
|
6
|
-
super("OD3_Group_UserRelation", data);
|
|
7
|
-
}
|
|
8
|
-
get group() {
|
|
9
|
-
return super.get("group");
|
|
10
|
-
}
|
|
11
|
-
set group(value) {
|
|
12
|
-
super.set("group", value);
|
|
13
|
-
}
|
|
14
|
-
get user() {
|
|
15
|
-
return super.get("user");
|
|
16
|
-
}
|
|
17
|
-
set user(value) {
|
|
18
|
-
super.set("user", value);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.Group_UserRelation = Group_UserRelation;
|
|
22
|
-
Group_UserRelation.className = "OD3_Group_UserRelation";
|
|
23
|
-
Parse.Object.registerSubclass("OD3_Group_UserRelation", Group_UserRelation);
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"fields": {
|
|
3
|
-
"user": {
|
|
4
|
-
"type": "Pointer",
|
|
5
|
-
"targetClass": "_User",
|
|
6
|
-
"required": false
|
|
7
|
-
},
|
|
8
|
-
"group": {
|
|
9
|
-
"type": "Pointer",
|
|
10
|
-
"targetClass": "{{PREFIX}}Group",
|
|
11
|
-
"required": false
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"classLevelPermissions": {
|
|
15
|
-
"find": {
|
|
16
|
-
"*": true
|
|
17
|
-
},
|
|
18
|
-
"count": {
|
|
19
|
-
"*": true
|
|
20
|
-
},
|
|
21
|
-
"get": {
|
|
22
|
-
"*": true
|
|
23
|
-
},
|
|
24
|
-
"create": {
|
|
25
|
-
"*": true
|
|
26
|
-
},
|
|
27
|
-
"update": {
|
|
28
|
-
"*": true
|
|
29
|
-
},
|
|
30
|
-
"delete": {
|
|
31
|
-
"*": true
|
|
32
|
-
},
|
|
33
|
-
"addField": {
|
|
34
|
-
"*": true
|
|
35
|
-
},
|
|
36
|
-
"protectedFields": {
|
|
37
|
-
"*": []
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|