Skip to content

Commit b2e1155

Browse files
authored
Merge pull request #156 from bimberlabinternal/23.11_fb_purchasing
Improve validation on requestor
2 parents 8d3aed5 + 2ca0f97 commit b2e1155

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

LabPurchasing/resources/queries/labpurchasing/purchases.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,31 @@ var console = require("console");
44
var triggerHelper = new org.labkey.labpurchasing.LabPurchasingTriggerHelper(LABKEY.Security.currentUser.id, LABKEY.Security.currentContainer.id);
55

66
function beforeInsert(row, errors){
7+
beforeUpsert(row, errors)
8+
}
9+
10+
function beforeUpdate(row, oldRow, errors){
11+
beforeUpsert(row, errors)
12+
}
13+
14+
function beforeUpsert(row, errors){
15+
// Validate requestor:
16+
if (row.requestor) {
17+
if (!isNaN(row.requestor) && !triggerHelper.isValidUserId(row.requestor)) {
18+
errors.requestor = 'Unknown userId for requestor: ' + row.requestor;
19+
}
20+
// Try to resolve strings:
21+
else if (isNaN(row.requestor)) {
22+
var id = triggerHelper.resolveUserId(String(row.requestor));
23+
if (!id) {
24+
errors.requestor = 'Unknown userId for requestor: ' + row.requestor;
25+
}
26+
else {
27+
row.requestor = id;
28+
}
29+
}
30+
}
31+
732
// The purpose of this is to allow the user to provide a string value for
833
// vendorId or vendorName, and attempt to resolve this against known vendors:
934
if (!row.vendorId || isNaN(row.vendorId)) {

LabPurchasing/src/org/labkey/labpurchasing/LabPurchasingTriggerHelper.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,4 +112,16 @@ public void sendNotifications(List<Integer> rowIds) {
112112
_log.error("Unable to send purchasing email", e);
113113
}
114114
}
115+
116+
public boolean isValidUserId(int userId)
117+
{
118+
return UserManager.getUser(userId) != null;
119+
}
120+
121+
public Integer resolveUserId(String userNameOrEmail)
122+
{
123+
User u = UserManager.getUserByDisplayName(userNameOrEmail);
124+
125+
return u == null ? null : u.getUserId();
126+
}
115127
}

0 commit comments

Comments
 (0)