(appId, collectionName, query)
| 1104 | |
| 1105 | // this function modifies the fields ['password','datetime'] passed in the Query. |
| 1106 | function _modifyFieldsInQuery(appId, collectionName, query) { |
| 1107 | var deferred = q.defer(); |
| 1108 | try { |
| 1109 | if (collectionName === '_File') { |
| 1110 | deferred.resolve(query); |
| 1111 | } else { |
| 1112 | _getSchema(appId, collectionName).then(function(columns) { |
| 1113 | var passwordColumnNames = []; |
| 1114 | var dateTimeColumnNames = []; |
| 1115 | |
| 1116 | // push in fields to be modified / i.e DateTime and Encypted fields |
| 1117 | for (var i = 0; i < columns.length; i++) { |
| 1118 | if (columns[i].dataType === 'EncryptedText') { |
| 1119 | passwordColumnNames.push(columns[i].name); |
| 1120 | } |
| 1121 | if (columns[i].dataType === 'DateTime') { |
| 1122 | dateTimeColumnNames.push(columns[i].name); |
| 1123 | } |
| 1124 | } |
| 1125 | |
| 1126 | //resolve if there are no password fields or DateTime fields |
| 1127 | if (passwordColumnNames.length === 0 && dateTimeColumnNames === 0) { |
| 1128 | deferred.resolve(query); |
| 1129 | } else { |
| 1130 | appService.getApp(appId).then(function (application) { |
| 1131 | //or modify the query and resolve it. |
| 1132 | if (passwordColumnNames.length) |
| 1133 | query = _recursiveModifyQuery(query, passwordColumnNames, 'encrypt',application.keys.encryption_key); |
| 1134 | if (dateTimeColumnNames.length) |
| 1135 | query = _recursiveModifyQuery(query, dateTimeColumnNames, 'datetime',application.keys.encryption_key); |
| 1136 | deferred.resolve(query); |
| 1137 | }), function(){ |
| 1138 | deferred.reject("Cannot find an app wiht AppID "+appId); |
| 1139 | }; |
| 1140 | } |
| 1141 | }, function(error) { |
| 1142 | deferred.reject(error); |
| 1143 | }); |
| 1144 | } |
| 1145 | } catch (err) { |
| 1146 | winston.log('error', { |
| 1147 | "error": String(err), |
| 1148 | "stack": new Error().stack |
| 1149 | }); |
| 1150 | deferred.reject(err); |
| 1151 | } |
| 1152 | |
| 1153 | return deferred.promise; |
| 1154 | } |
| 1155 | |
| 1156 | function _encrypt(data, encryption_key) { |
| 1157 | try { |
no test coverage detected