@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.
- package/.changeset/user-field-self-allowlist.md +5 -0
- package/dist/index.js +27 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +27 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/test/e2e/user-field-self-allowlist.e2e.test.mjs +172 -0
- package/test/user-field-self-allowlist.test.mjs +39 -0
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
|
|
16132
|
-
return await
|
|
16133
|
-
|
|
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;
|