From fd30b2d151af8fe4fa782e017722a7c816e7476d Mon Sep 17 00:00:00 2001 From: Shelby Sanders Date: Tue, 7 Oct 2014 16:52:27 -0700 Subject: [PATCH] Protected against non-Model generation requests --- lib/model-helper.js | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/lib/model-helper.js b/lib/model-helper.js index 875e697..2b85101 100644 --- a/lib/model-helper.js +++ b/lib/model-helper.js @@ -24,10 +24,8 @@ var modelHelper = module.exports = { modelName = modelName.replace(/[\[\]]/g, ''); } var model = app.models[modelName]; - if (model) { - if (referencedModels.indexOf(model) === -1) { - referencedModels.push(model); - } + if (model && referencedModels.indexOf(model) === -1) { + referencedModels.push(model); } } } @@ -49,7 +47,7 @@ var modelHelper = module.exports = { for (var m in def.settings.models) { var model = modelClass[m]; if (typeof model === 'function' && model.modelName) { - if (referencedModels.indexOf(model) === -1) { + if (model && referencedModels.indexOf(model) === -1) { referencedModels.push(model); } } @@ -113,15 +111,11 @@ var modelHelper = module.exports = { // Generate model definitions for related models for (var r in modelClass.relations) { var rel = modelClass.relations[r]; - if (rel.modelTo){ - if (referencedModels.indexOf(rel.modelTo) === -1) { - referencedModels.push(rel.modelTo); - } + if (rel.modelTo && referencedModels.indexOf(rel.modelTo) === -1) { + referencedModels.push(rel.modelTo); } - if (rel.modelThrough) { - if (referencedModels.indexOf(rel.modelThrough) === -1) { - referencedModels.push(rel.modelThrough); - } + if (rel.modelThrough && referencedModels.indexOf(rel.modelThrough) === -1) { + referencedModels.push(rel.modelThrough); } } @@ -151,7 +145,9 @@ var modelHelper = module.exports = { } for (var i = 0, n = referencedModels.length; i < n; i++) { - generateModelDefinition(referencedModels[i], out); + if (referencedModels[i].definition) { + generateModelDefinition(referencedModels[i], out); + } } return out; }, @@ -161,7 +157,7 @@ var modelHelper = module.exports = { * get a string type. * @param {*} propType Prop type description. * @return {String} Prop type string. - */ + */ getPropType: function getPropType(propType) { if (typeof propType === 'function') { // See https://github.com/strongloop/loopback-explorer/issues/32 @@ -174,7 +170,7 @@ var modelHelper = module.exports = { }, isHiddenProperty: function(definition, propName) { - return definition.settings && + return definition.settings && Array.isArray(definition.settings.hidden) && definition.settings.hidden.indexOf(propName) !== -1; },