| 286 | }, |
| 287 | |
| 288 | verifyActivateCode(appId, activateCode, accessList) { |
| 289 | const deferred = q.defer(); |
| 290 | |
| 291 | try { |
| 292 | const decipher = crypto.createDecipher('aes192', config.secureKey); |
| 293 | let userId = decipher.update(activateCode, 'hex', 'utf8'); |
| 294 | userId += decipher.final('utf8'); |
| 295 | |
| 296 | const isMasterKey = true; |
| 297 | const collectionName = 'User'; |
| 298 | const query = { |
| 299 | _id: userId, |
| 300 | }; |
| 301 | const select = null; |
| 302 | const sort = null; |
| 303 | const skip = null; |
| 304 | |
| 305 | |
| 306 | customService.findOne(appId, collectionName, query, select, sort, skip, accessList, isMasterKey) |
| 307 | .then((user) => { |
| 308 | if (user) { |
| 309 | user.verified = true; |
| 310 | user._modifiedColumns = ['verified']; |
| 311 | user._isModified = true; |
| 312 | |
| 313 | customService.save(appId, collectionName, user, accessList, isMasterKey).then((user) => { |
| 314 | deferred.resolve(user); |
| 315 | }, (error) => { |
| 316 | deferred.reject(error); |
| 317 | }); |
| 318 | } else { |
| 319 | deferred.resolve('Not a valid activation code'); |
| 320 | } |
| 321 | }, (error) => { |
| 322 | deferred.reject(error); |
| 323 | }); |
| 324 | } catch (err) { |
| 325 | winston.log('error', { |
| 326 | error: String(err), |
| 327 | stack: new Error().stack, |
| 328 | }); |
| 329 | deferred.reject(err); |
| 330 | } |
| 331 | return deferred.promise; |
| 332 | }, |
| 333 | |
| 334 | addToRole(appId, userId, roleId, accessList, isMasterKey) { |
| 335 | const deferred = q.defer(); |