diff --git a/services/web/app/coffee/Features/User/UserController.coffee b/services/web/app/coffee/Features/User/UserController.coffee index aa8db57c0e..8618850847 100644 --- a/services/web/app/coffee/Features/User/UserController.coffee +++ b/services/web/app/coffee/Features/User/UserController.coffee @@ -1,5 +1,6 @@ UserGetter = require "./UserGetter" logger = require("logger-sharelatex") +UserDeleter = require("./UserDeleter") module.exports = UserController = getLoggedInUsersPersonalInfo: (req, res, next = (error) ->) -> @@ -24,6 +25,13 @@ module.exports = UserController = return next(error) if error? res.send JSON.stringify(info) + deleteUser: (req, res)-> + user_id = req.session.user._id + UserDeleter.deleteUser user_id, (err)-> + if !err? + req.session.destroy() + res.send(200) + _formatPersonalInfo: (user, callback = (error, info) ->) -> callback null, { id: user._id.toString() @@ -33,3 +41,5 @@ module.exports = UserController = signUpDate: user.signUpDate } + + diff --git a/services/web/app/coffee/Features/User/UserPagesController.coffee b/services/web/app/coffee/Features/User/UserPagesController.coffee index a3398c0b70..7619b436db 100644 --- a/services/web/app/coffee/Features/User/UserPagesController.coffee +++ b/services/web/app/coffee/Features/User/UserPagesController.coffee @@ -25,4 +25,5 @@ module.exports = passwordResetPage : (req, res)-> res.render 'user/passwordReset', - title: 'Password Reset', \ No newline at end of file + title: 'Password Reset' + diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index 9ec34d0497..92b09b0858 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -36,6 +36,8 @@ DropboxUserController = require("./Features/Dropbox/DropboxUserController") logger = require("logger-sharelatex") _ = require("underscore") +console.log PersonalInfoController + httpAuth = require('express').basicAuth (user, pass)-> isValid = Settings.httpAuthUsers[user] == pass if !isValid @@ -80,7 +82,7 @@ module.exports = class Router app.get '/user/passwordreset', UserPagesController.passwordResetPage app.post '/user/passwordReset', UserController.doRequestPasswordReset app.del '/user/newsletter/unsubscribe', AuthenticationController.requireLogin(), UserController.unsubscribe - app.del '/user', AuthenticationController.requireLogin(), UserController.deleteUser + app.del '/user', AuthenticationController.requireLogin(), PersonalInfoController.deleteUser app.get '/dropbox/beginAuth', DropboxUserController.redirectUserToDropboxAuth app.get '/dropbox/completeRegistration', DropboxUserController.completeDropboxRegistration diff --git a/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee b/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee index 68ce44c5d2..13902d0087 100644 --- a/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee @@ -11,8 +11,12 @@ ObjectId = require("mongojs").ObjectId describe "UserController", -> beforeEach -> + @UserDeleter = + deleteUser: sinon.stub().callsArgWith(1) @UserController = SandboxedModule.require modulePath, requires: "./UserGetter": @UserGetter = {} + "./UserDeleter": @UserDeleter + @req = new MockRequest() @res = new MockResponse() @next = sinon.stub() @@ -103,3 +107,21 @@ describe "UserController", -> signUpDate: @user.signUpDate } + + describe "deleteUser", -> + + it "should delete the user", (done)-> + user_id = "323123" + @req.session.user = + _id = user_id + @res.send = (code)=> + @UserDeleter.deleteUser.calledWith(user_id) + code.should.equal 200 + done() + @UserController.deleteUser @req, @res + + + + + + diff --git a/services/web/test/UnitTests/coffee/User/UserPagesControllerTests.coffee b/services/web/test/UnitTests/coffee/User/UserPagesControllerTests.coffee index 589272487b..71d8116b4e 100644 --- a/services/web/test/UnitTests/coffee/User/UserPagesControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserPagesControllerTests.coffee @@ -11,6 +11,7 @@ describe "UserPagesController", -> beforeEach -> @settings = {} + @UserPagesController = SandboxedModule.require modulePath, requires: "settings-sharelatex":@settings "logger-sharelatex": log:-> @@ -88,3 +89,5 @@ describe "UserPagesController", -> @UserPagesController.passwordResetPage @req, @res + +