@openinc/parse-server-opendash 3.4.3 → 3.5.1

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.
@@ -82,7 +82,7 @@ async function assignUsersAndRoles(ticket, assignedTo, fetchOptions, assigningUs
82
82
  translation: {
83
83
  ticketName: ticket.get("title"),
84
84
  ticketId: ticket.id,
85
- user: ticket.get("user")?.get("username"),
85
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(assigningUser) ?? "System",
86
86
  role: assignedTo.get("label"),
87
87
  },
88
88
  },
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAllPermissions = getAllPermissions;
4
4
  exports.default = initPermissions;
5
5
  const __1 = require("..");
6
+ const catchError_1 = require("../../../helper/catchError");
6
7
  const types_1 = require("../../../types");
7
8
  /**
8
9
  * Returns all permissions defined in types/Permissions.ts as an array of Permission objects.
@@ -47,34 +48,63 @@ function createPermission(input) {
47
48
  */
48
49
  async function registerPermissions(tenant) {
49
50
  console.log("[@openinc/parse-server-opendash] Register all permissions");
50
- getAllPermissions().forEach((permission) => {
51
- new Parse.Query(types_1.Permission)
51
+ return getAllPermissions().map(async (permission) => {
52
+ const [resultError, result] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Permission)
52
53
  .equalTo("key", permission.key)
53
54
  .equalTo("tenant", tenant)
54
- .first({ useMasterKey: true })
55
- .then((result) => {
56
- if (!result) {
57
- console.log("[@openinc/parse-server-opendash] Create permission", permission.key);
58
- const newPermission = new types_1.Permission();
59
- newPermission.set("key", permission.key);
60
- newPermission.set("label", permission.label);
61
- newPermission.set("tenant", tenant);
62
- newPermission.set("description", permission.description);
63
- newPermission.save({}, { useMasterKey: true });
64
- }
65
- else {
66
- console.log("[@openinc/parse-server-opendash] Permission already exists", permission.key);
67
- }
68
- });
55
+ .first({ useMasterKey: true }));
56
+ if (resultError) {
57
+ console.error("[@openinc/parse-server-opendash] Error while checking permission", permission.key, resultError);
58
+ return;
59
+ }
60
+ if (!result) {
61
+ console.log("[@openinc/parse-server-opendash] Create permission", permission.key);
62
+ const newPermission = new types_1.Permission();
63
+ newPermission.set("key", permission.key);
64
+ newPermission.set("label", permission.label);
65
+ newPermission.set("tenant", tenant);
66
+ newPermission.set("description", permission.description);
67
+ await newPermission.save({}, { useMasterKey: true });
68
+ }
69
+ else {
70
+ console.log("[@openinc/parse-server-opendash] Permission already exists", permission.key);
71
+ }
69
72
  });
70
73
  }
74
+ /**
75
+ * Set read access for all admin roles to admin overview permission
76
+ */
77
+ async function ensureDefaultAdminAccess(tenant) {
78
+ console.log("[@openinc/parse-server-opendash] Ensure default admin access permissions");
79
+ const [resultError, result] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Permission)
80
+ .equalTo("key", __1.Permissions.OpenINCStack.adminoverview)
81
+ .equalTo("tenant", tenant)
82
+ .first({ useMasterKey: true }));
83
+ if (resultError) {
84
+ console.error("[@openinc/parse-server-opendash] Error while checking permission", __1.Permissions.OpenINCStack.adminoverview, resultError);
85
+ return;
86
+ }
87
+ if (result) {
88
+ const acl = result.getACL() || new Parse.ACL();
89
+ acl.setRoleReadAccess(`od-tenant-admin-${tenant.id}`, true);
90
+ acl.setRoleReadAccess(`od-tenant-admin`, true);
91
+ acl.setRoleReadAccess(`od-admin`, true);
92
+ acl.setRoleWriteAccess(`od-admin`, true);
93
+ result.setACL(acl);
94
+ await result.save(null, { useMasterKey: true });
95
+ }
96
+ else {
97
+ console.log("[@openinc/parse-server-opendash] Permission not found", __1.Permissions.OpenINCStack.adminoverview);
98
+ }
99
+ }
71
100
  async function initPermissions() {
72
101
  const tenants = await new Parse.Query(types_1.Tenant)
73
102
  .descending("createdAt")
74
103
  .find({ useMasterKey: true });
75
104
  if (tenants) {
76
105
  for await (const tenant of tenants) {
77
- await registerPermissions(tenant);
106
+ await Promise.all(await registerPermissions(tenant));
107
+ await ensureDefaultAdminAccess(tenant);
78
108
  }
79
109
  }
80
110
  }
@@ -13,30 +13,10 @@ export declare namespace Permissions {
13
13
  machinelog_message = "maintenance:can-create-machinelog-message",
14
14
  global = "maintenance:can-access-global",
15
15
  monitor = "maintenance:can-access-monitor",
16
- material = "maintenance:can-access-material",
17
- scheduletemplate = "maintenance:can-access-scheduletemplate",
18
16
  monitoring = "maintenance:can-access-monitoring",
19
- downtime = "maintenance:can-access-downtime",
20
- restriction = "maintenance:can-access-restriction",
21
- frequency = "maintenance:can-access-frequency",
22
- downtimeField0 = "maintenance:can-access-downtime-field-0",
23
- downtimeField1 = "maintenance:can-access-downtime-field-1",
24
- downtimeField2 = "maintenance:can-access-downtime-field-2",
25
- downtimeField3 = "maintenance:can-access-downtime-field-3",
26
- downtimeField4 = "maintenance:can-access-downtime-field-4",
27
- restrictionField0 = "maintenance:can-access-restriction-field-0",
28
- restrictionField1 = "maintenance:can-access-restriction-field-1",
29
- restrictionField2 = "maintenance:can-access-restriction-field-2",
30
- frequencyField0 = "maintenance:can-access-frequency-field-0",
31
- frequencyField1 = "maintenance:can-access-frequency-field-1",
32
- frequencyField2 = "maintenance:can-access-frequency-field-2",
33
- frequencyField3 = "maintenance:can-access-frequency-field-3",
34
- frequencyField4 = "maintenance:can-access-frequency-field-4",
35
- priority = "maintenance:can-access-priority",
36
- priorityNumber = "maintenance:can-access-priority-number",
37
- priorityLabel = "maintenance:can-access-priority-label",
38
- issuecategory = "maintenance:can-update-issuecategory",
39
- monitorstate = "maintenance:can-update-monitorstate",
40
17
  kanban_view = "maintenance:can-update-kanban-view"
41
18
  }
19
+ enum OpenINCStack {
20
+ adminoverview = "opendash:can-access-admin-overview"
21
+ }
42
22
  }
@@ -21,33 +21,15 @@ var Permissions;
21
21
  // Access
22
22
  OpenService["global"] = "maintenance:can-access-global";
23
23
  OpenService["monitor"] = "maintenance:can-access-monitor";
24
- OpenService["material"] = "maintenance:can-access-material";
25
- OpenService["scheduletemplate"] = "maintenance:can-access-scheduletemplate";
26
24
  OpenService["monitoring"] = "maintenance:can-access-monitoring";
27
- OpenService["downtime"] = "maintenance:can-access-downtime";
28
- OpenService["restriction"] = "maintenance:can-access-restriction";
29
- OpenService["frequency"] = "maintenance:can-access-frequency";
30
- OpenService["downtimeField0"] = "maintenance:can-access-downtime-field-0";
31
- OpenService["downtimeField1"] = "maintenance:can-access-downtime-field-1";
32
- OpenService["downtimeField2"] = "maintenance:can-access-downtime-field-2";
33
- OpenService["downtimeField3"] = "maintenance:can-access-downtime-field-3";
34
- OpenService["downtimeField4"] = "maintenance:can-access-downtime-field-4";
35
- OpenService["restrictionField0"] = "maintenance:can-access-restriction-field-0";
36
- OpenService["restrictionField1"] = "maintenance:can-access-restriction-field-1";
37
- OpenService["restrictionField2"] = "maintenance:can-access-restriction-field-2";
38
- OpenService["frequencyField0"] = "maintenance:can-access-frequency-field-0";
39
- OpenService["frequencyField1"] = "maintenance:can-access-frequency-field-1";
40
- OpenService["frequencyField2"] = "maintenance:can-access-frequency-field-2";
41
- OpenService["frequencyField3"] = "maintenance:can-access-frequency-field-3";
42
- OpenService["frequencyField4"] = "maintenance:can-access-frequency-field-4";
43
- OpenService["priority"] = "maintenance:can-access-priority";
44
- OpenService["priorityNumber"] = "maintenance:can-access-priority-number";
45
- OpenService["priorityLabel"] = "maintenance:can-access-priority-label";
46
25
  // Update
47
- OpenService["issuecategory"] = "maintenance:can-update-issuecategory";
48
- OpenService["monitorstate"] = "maintenance:can-update-monitorstate";
49
26
  OpenService["kanban_view"] = "maintenance:can-update-kanban-view";
50
27
  })(OpenService = Permissions.OpenService || (Permissions.OpenService = {}));
28
+ let OpenINCStack;
29
+ (function (OpenINCStack) {
30
+ //Access
31
+ OpenINCStack["adminoverview"] = "opendash:can-access-admin-overview";
32
+ })(OpenINCStack = Permissions.OpenINCStack || (Permissions.OpenINCStack = {}));
51
33
  // can also be used for nested permissions
52
34
  // Example:
53
35
  // export namespace TestPlugin {
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@openinc/parse-server-opendash",
3
- "version": "3.4.3",
3
+ "version": "3.5.1",
4
4
  "description": "Parse Server Cloud Code for open.INC Stack.",
5
- "packageManager": "pnpm@10.8.1",
5
+ "packageManager": "pnpm@10.11.0",
6
6
  "keywords": [
7
7
  "parse",
8
8
  "opendash"
@@ -73,7 +73,7 @@
73
73
  "nunjucks": "^3.2.4",
74
74
  "parse-server": "^8.2.0",
75
75
  "pdf-img-convert": "2.0.0",
76
- "semantic-release": "^24.2.3",
76
+ "semantic-release": "^24.2.4",
77
77
  "table": "^6.9.0",
78
78
  "web-push": "^3.6.7"
79
79
  },
@@ -86,7 +86,7 @@
86
86
  "@semantic-release/npm": "^12.0.1",
87
87
  "@semantic-release/release-notes-generator": "^14.0.3",
88
88
  "@types/jsonwebtoken": "^9.0.9",
89
- "@types/node": "^22.15.18",
89
+ "@types/node": "^22.15.21",
90
90
  "@types/node-fetch": "^2.6.12",
91
91
  "@types/nodemailer": "^6.4.17",
92
92
  "@types/nunjucks": "^3.2.6",