@openinc/parse-server-opendash 1.12.2 → 1.13.0

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.
@@ -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
- // TODO
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
+ (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) => {
@@ -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.Group_UserRelation, async (request) => {
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.Group_UserRelation, async (request) => {
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
+ (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) => {
@@ -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
@@ -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;
@@ -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,24 @@ async function init() {
39
36
  // @ts-ignore
40
37
  request.context.tenantChanged = true;
41
38
  }
39
+ // fetch user groups
40
+ const groups = await new Parse.Query(types_1.Group)
41
+ .equalTo("users", user)
42
+ .equalTo("usersSeeEachOther", true)
43
+ .limit(1000000)
44
+ .find({ useMasterKey: true });
42
45
  user.setACL(new Parse.ACL({
43
46
  ...(tenantId && {
44
47
  [`role:od-tenant-user-${tenantId}`]: { read: true },
45
48
  [`role:od-tenant-admin-${tenantId}`]: { read: true, write: true },
46
49
  }),
47
- ...(user.get("tenantGlobal") && {
48
- "role:od-tenant-global-visible": { read: true },
49
- }),
50
50
  ...(user.id && {
51
51
  [user.id]: { read: true },
52
52
  }),
53
+ ...Object.fromEntries(groups.map((group) => [
54
+ "role:od-group-user-" + group.id,
55
+ { read: true },
56
+ ])),
53
57
  "role:od-admin": { read: true, write: true },
54
58
  }));
55
59
  });
@@ -69,42 +73,24 @@ async function init() {
69
73
  const wasAdmin = !!original?.get("tenantAdmin");
70
74
  const isVerified = isTenant && !!object.get("tenantVerified");
71
75
  const wasVerified = wasTenant && !!object.get("tenantVerified");
72
- const isGlobal = isVerified && !!object.get("tenantGlobal");
73
76
  const changedTenant = isTenant !== wasTenant || tenantId !== prevTenantId;
74
77
  const changedAdmin = isAdmin !== wasAdmin;
75
78
  const changedVerified = isVerified !== wasVerified;
76
79
  const changedContext = !!request.context?.tenantChanged;
77
80
  if (changedTenant || changedAdmin || changedVerified || changedContext) {
78
- await userRole(object, `od-user`, isTenant);
79
- await userRole(object, `od-tenant-user`, isTenant);
80
- await userRole(object, `od-tenant-verified`, isVerified);
81
- await userRole(object, `od-tenant-admin`, isAdmin);
82
- await userRole(object, `od-tenant-global-visible`, isGlobal);
81
+ await (0, __1.ensureUserRole)(object, `od-user`, isTenant);
82
+ await (0, __1.ensureUserRole)(object, `od-tenant-user`, isTenant);
83
+ await (0, __1.ensureUserRole)(object, `od-tenant-verified`, isVerified);
84
+ await (0, __1.ensureUserRole)(object, `od-tenant-admin`, isAdmin);
83
85
  if (tenantId) {
84
- await userRole(object, `od-tenant-user-${tenantId}`, true);
85
- await userRole(object, `od-tenant-admin-${tenantId}`, isAdmin);
86
+ await (0, __1.ensureUserRole)(object, `od-tenant-user-${tenantId}`, true);
87
+ await (0, __1.ensureUserRole)(object, `od-tenant-admin-${tenantId}`, isAdmin);
86
88
  }
87
89
  if (wasTenant && tenantId !== prevTenantId) {
88
- await userRole(object, `od-tenant-user-${prevTenantId}`, false);
89
- await userRole(object, `od-tenant-admin-${prevTenantId}`, false);
90
+ await (0, __1.ensureUserRole)(object, `od-tenant-user-${prevTenantId}`, false);
91
+ await (0, __1.ensureUserRole)(object, `od-tenant-admin-${prevTenantId}`, false);
90
92
  }
91
93
  }
92
94
  });
93
95
  }
94
96
  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
- acl.setRoleReadAccess(`od-tenant-user-${tenant.id}`, true);
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
  }
@@ -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
  }
@@ -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?: Maintenance_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 | undefined;
32
- set ticket(value: Maintenance_Ticket | undefined);
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
  }
@@ -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;
@@ -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
  }
@@ -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
  }
@@ -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";
@@ -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.Group_UserRelation = 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 = exports.WebPush = void 0;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openinc/parse-server-opendash",
3
- "version": "1.12.2",
3
+ "version": "1.13.0",
4
4
  "description": "Parse Server Cloud Code for open.DASH",
5
5
  "keywords": [
6
6
  "parse",
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": {
@@ -13,11 +13,6 @@
13
13
  "required": true,
14
14
  "defaultValue": false
15
15
  },
16
- "interactWithOtherTenants": {
17
- "type": "Boolean",
18
- "required": true,
19
- "defaultValue": false
20
- },
21
16
  "meta": {
22
17
  "type": "Pointer",
23
18
  "targetClass": "{{PREFIX}}TenantMeta"
@@ -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
- }