@openinc/parse-server-opendash 3.23.4 → 3.24.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.
@@ -26,4 +26,5 @@ export type SaveValues = {
26
26
  material?: Material[];
27
27
  project?: string;
28
28
  meta?: TicketMeta;
29
+ user?: string;
29
30
  };
@@ -31,20 +31,28 @@ async function handleRequest(request) {
31
31
  success: true,
32
32
  };
33
33
  try {
34
- const session = request.user?.getSessionToken();
34
+ let user = request.user;
35
+ if (request.params.user) {
36
+ user = (await new Parse.Query(parse_1.User)
37
+ .equalTo("objectId", request.params.user)
38
+ .first({
39
+ useMasterKey: true,
40
+ }));
41
+ }
42
+ const session = user?.getSessionToken();
35
43
  if (!session) {
36
44
  const adminUser = (await new Parse.Query(parse_1.User)
37
45
  .include("session")
38
46
  .ascending("createdAt")
39
47
  .first({ useMasterKey: true }));
40
48
  // adminUser was fetched with master privileges; ensure subsequent operations run with master as well
41
- const ticket = await saveTicketData(request.params, adminUser, {
49
+ const ticket = await saveTicketData(request.params, user ?? adminUser, {
42
50
  useMasterKey: true,
43
51
  });
44
52
  result.ticket = ticket;
45
53
  return result;
46
54
  }
47
- const ticket = await saveTicketData(request.params, request.user);
55
+ const ticket = await saveTicketData(request.params, user);
48
56
  result.success = true;
49
57
  result.ticket = ticket;
50
58
  return result;
@@ -8,6 +8,19 @@ async function init() {
8
8
  const { object, original, user } = request;
9
9
  await (0, __1.defaultHandler)(request);
10
10
  await (0, __1.defaultAclHandler)(request);
11
+ const assignedRoles = await object
12
+ .relation("assignedRoles")
13
+ .query()
14
+ .find({ useMasterKey: true });
15
+ const assignedUsers = await object
16
+ .relation("assignedUsers")
17
+ .query()
18
+ .find({ useMasterKey: true });
19
+ // Ensure that the project's ACL allows assigned users and roles to read the project
20
+ const acl = object.getACL();
21
+ assignedRoles.forEach((role) => acl?.setRoleReadAccess(role.id, true));
22
+ assignedUsers.forEach((user) => acl?.setReadAccess(user.id, true));
23
+ object.setACL(acl);
11
24
  // TODO
12
25
  });
13
26
  (0, __1.afterSaveHook)(types_1.Maintenance_Project, async (request) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openinc/parse-server-opendash",
3
- "version": "3.23.4",
3
+ "version": "3.24.0",
4
4
  "description": "Parse Server Cloud Code for open.INC Stack.",
5
5
  "packageManager": "pnpm@10.15.0",
6
6
  "keywords": [