Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-843 2b22485d7 -> 341adbc28


# IGNITE-843 Added db cleanup on user remove.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/774259b3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/774259b3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/774259b3

Branch: refs/heads/ignite-843
Commit: 774259b3cb588f571069dd7588dd27157ee364a7
Parents: e828e46
Author: Andrey <anovi...@gridgain.com>
Authored: Tue Aug 18 15:55:54 2015 +0700
Committer: Andrey <anovi...@gridgain.com>
Committed: Tue Aug 18 15:55:54 2015 +0700

----------------------------------------------------------------------
 .../src/main/js/routes/admin.js                 | 50 ++++++++++++++++++--
 1 file changed, 46 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/774259b3/modules/control-center-web/src/main/js/routes/admin.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/admin.js 
b/modules/control-center-web/src/main/js/routes/admin.js
index 5af72f7..78c835c 100644
--- a/modules/control-center-web/src/main/js/routes/admin.js
+++ b/modules/control-center-web/src/main/js/routes/admin.js
@@ -15,8 +15,12 @@
  * limitations under the License.
  */
 
+var _ = require('lodash');
 var router = require('express').Router();
+var nodemailer = require('nodemailer');
+
 var db = require('../db');
+var config = require('../helpers/configuration-loader.js');
 
 router.get('/', function (req, res) {
     res.render('settings/admin');
@@ -37,11 +41,49 @@ router.post('/list', function (req, res) {
 router.post('/remove', function (req, res) {
     var userId = req.body.userId;
 
-    db.Account.findByIdAndRemove(userId, function (err) {
+    db.Account.findByIdAndRemove(userId, function (err, user) {
         if (err)
-            return res.status(500).send(err);
+            return res.status(500).send(err.message);
 
-        res.sendStatus(200);
+        db.Space.find({owner: userId}, function(err, spaces) {
+            _.forEach(spaces, function (space) {
+                db.Cluster.remove({space: space._id}).exec();
+                db.Cache.remove({space: space._id}).exec();
+                db.Persistence.remove({space: space._id}).exec();
+                db.Notebook.remove({space: space._id}).exec();
+                db.Space.remove({owner: space._id}).exec();
+            });
+        });
+
+        var transporter = {
+            service: config.get('smtp:service'),
+            auth: {
+                user:config.get('smtp:username'),
+                pass: config.get('smtp:password')
+            }
+        };
+
+        if (transporter.service != '' || transporter.auth.user != '' || 
transporter.auth.pass != '') {
+            var mailer  = nodemailer.createTransport(transporter);
+
+            var mailOptions = {
+                from: transporter.auth.user,
+                to: user.email,
+                subject: 'Your account was deleted',
+                text: 'You are receiving this e-mail because admin removed 
your account.\n\n' +
+                '--------------\n' +
+                'Apache Ignite Web Control Center http://' + req.headers.host 
+ '\n'
+            };
+
+            mailer.sendMail(mailOptions, function(err){
+                if (err)
+                    return res.status(500).send('Failed to send e-mail 
notification to user!<br />' + err);
+
+                res.sendStatus(200);
+            });
+        }
+        else
+            res.sendStatus(200);
     });
 });
 
@@ -76,4 +118,4 @@ router.get('/become', function (req, res) {
     })
 });
 
-module.exports = router;
\ No newline at end of file
+module.exports = router;

Reply via email to