@7365admin1/core 3.64.5-staging.294 → 3.64.5-staging.295

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.
@@ -0,0 +1,5 @@
1
+ ---
2
+ "@7365admin1/core": patch
3
+ ---
4
+
5
+ PATCH /api/users/field/:id (and v2): on your own account you may change only name, contact, nric, dateOfBirth, profile and gender, and defaultOrg to an organisation you reach. status, email and plateNumber are staff-only.
package/dist/index.js CHANGED
@@ -16127,11 +16127,32 @@ async function requireInviteReach(req, org, app, role) {
16127
16127
  await requireOrgReach(req, org);
16128
16128
  await requireRoleInvitable(role, org, apps);
16129
16129
  }
16130
- async function requireUserFieldWrite(req, userId, field, grant) {
16131
- if (field === "email")
16132
- return await requirePlatformStaff(req, grant);
16133
- return await requireSelfOrPlatformStaff(req, userId, grant);
16130
+ async function requireUserFieldWrite(req, userId, field, grant, value) {
16131
+ if (field && SELF_EDITABLE_USER_FIELDS.includes(field)) {
16132
+ return await requireSelfOrPlatformStaff(req, userId, grant);
16133
+ }
16134
+ if (field === "defaultOrg") {
16135
+ const id = callerId(req);
16136
+ const org = value?.toString?.() ?? "";
16137
+ if (id && userId?.toString() === id && org) {
16138
+ const reaches = await requireOrgReach(req, org).then(
16139
+ () => true,
16140
+ () => false
16141
+ );
16142
+ if (reaches)
16143
+ return id;
16144
+ }
16145
+ }
16146
+ return await requirePlatformStaff(req, grant);
16134
16147
  }
16148
+ var SELF_EDITABLE_USER_FIELDS = [
16149
+ "name",
16150
+ "contact",
16151
+ "nric",
16152
+ "dateOfBirth",
16153
+ "profile",
16154
+ "gender"
16155
+ ];
16135
16156
  async function requireVerificationListReach(req, orgId) {
16136
16157
  if (orgId) {
16137
16158
  await requireOrgReach(req, orgId);
@@ -19796,7 +19817,7 @@ function useUserController() {
19796
19817
  return;
19797
19818
  }
19798
19819
  try {
19799
- await requireUserFieldWrite(req, _id, payload.field, { resource: "users" });
19820
+ await requireUserFieldWrite(req, _id, payload.field, { resource: "users" }, payload.value);
19800
19821
  let message;
19801
19822
  if (payload.field === "plateNumber") {
19802
19823
  message = await updatePlateNumberByUserId(
@@ -90221,7 +90242,7 @@ function useUserControllerV2() {
90221
90242
  return;
90222
90243
  }
90223
90244
  try {
90224
- await requireUserFieldWrite(req, _id, payload.field, { resource: "users" });
90245
+ await requireUserFieldWrite(req, _id, payload.field, { resource: "users" }, payload.value);
90225
90246
  const message = await _updateUserFieldById({ _id, ...payload });
90226
90247
  res.json({ message });
90227
90248
  return;