From 0f5f92b937768adf3bc29a7d4dc39f51a5d8ad43 Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Fri, 12 Jun 2015 11:58:31 -0700 Subject: [PATCH] fix user deletion of credentials should use a where clause with destroyAll --- server/boot/a-extendUser.js | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/server/boot/a-extendUser.js b/server/boot/a-extendUser.js index 951705c650..ff4b08ed2c 100644 --- a/server/boot/a-extendUser.js +++ b/server/boot/a-extendUser.js @@ -1,32 +1,36 @@ var Rx = require('rx'); var debug = require('debug')('freecc:user:remote'); -function destroyById(id, Model) { - return Rx.Observable.create(function(observer) { - Model.destroyById(id, function(err) { - if (err) { return observer.onError(err); } - observer.onCompleted(); - }); - return Rx.Disposable(Rx.helpers.noop); - }); +function destroyAllRelated(id, Model) { + return Rx.Observable.fromNodeCallback( + Model.destroyAll, + Model + )({ userId: id }); } module.exports = function(app) { var User = app.models.User; var UserIdentity = app.models.UserIdentity; var UserCredential = app.models.UserCredential; - User.observe('after delete', function(ctx, next) { + User.observe('before delete', function(ctx, next) { debug('removing user', ctx.where); var id = ctx.where && ctx.where.id ? ctx.where.id : null; if (!id) { return next(); } Rx.Observable.combineLatest( - destroyById(id, UserIdentity), - destroyById(id, UserCredential), - Rx.helpers.noop + destroyAllRelated(id, UserIdentity), + destroyAllRelated(id, UserCredential), + function(identData, credData) { + return { + identData: identData, + credData: credData + }; + } ).subscribe( - Rx.helpers.noop, + function(data) { + debug('deleted', data); + }, function(err) { debug('error deleting user %s stuff', id, err); next(err);