Skip to content

Commit 052a54c

Browse files
committed
fix (server) Makes secure works in sub schema
1 parent 299270a commit 052a54c

File tree

3 files changed

+23
-8
lines changed

3 files changed

+23
-8
lines changed

server/data_form.js

Lines changed: 10 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/data_form.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -659,7 +659,7 @@ DataForm.prototype.reportInternal = function (req, resource, schema, options, ca
659659
if (dateTest) {
660660
obj[prop] = new Date(dateTest[1] + 'Z');
661661
} else {
662-
var objectIdTest : Array<string> = /^([0-9a-fA-F]{24})$/.exec(obj[prop]);
662+
var objectIdTest = /^([0-9a-fA-F]{24})$/.exec(obj[prop]);
663663
if (objectIdTest) {
664664
obj[prop] = new mongoose.Types.ObjectId(objectIdTest[1]);
665665
}
@@ -832,8 +832,16 @@ DataForm.prototype.saveAndRespond = function (req, res, hiddenFields) {
832832
doc2 = doc2.toObject();
833833
for (var hiddenField in hiddenFields) {
834834
if (hiddenFields.hasOwnProperty(hiddenField) && hiddenFields[hiddenField]) {
835-
if (doc2.hasOwnProperty(hiddenField)) {
836-
delete doc2[hiddenField];
835+
var parts = hiddenField.split('.');
836+
var lastPart = parts.length - 1;
837+
var target = doc2;
838+
for (var i = 0; i < lastPart; i++) {
839+
if (target.hasOwnProperty(parts[i])) {
840+
target = target[parts[i]];
841+
}
842+
}
843+
if (target.hasOwnProperty(parts[lastPart])) {
844+
delete target[parts[lastPart]];
837845
}
838846
}
839847
}

test/api/CRUD-APISpec.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ describe('API', function () {
209209
});
210210
});
211211

212-
it('should not be transmitted in an edit', function (done) {
212+
it('should not be transmitted in an entity get', function (done) {
213213
var mockReq = {
214214
url: 'c_subdoc_example/519aaaaab320153869b175e0',
215215
params: {
@@ -243,8 +243,7 @@ describe('API', function () {
243243
assert.equal(data.weight, 124);
244244
assert.equal(data.passwordHash, undefined);
245245
assert.equal(data.interview.score, 97);
246-
// TODO: Get this working
247-
// assert.equal(data.interview.interviewHash, undefined);
246+
assert.equal(data.interview.interviewHash, undefined);
248247
var resource = fng.getResource('c_subdoc_example');
249248
resource.model.findById('519aaaaab320153869b175e0', function (err, dataOnDisk) {
250249
if (err) { throw err; }

0 commit comments

Comments
 (0)