From 0ef7e54ad3f386ee2c7786e43ce8f3d1ef9f54d1 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 20 Jun 2014 09:42:43 +0100 Subject: [PATCH] Allow partial updates to user settings --- .../Features/User/UserController.coffee | 34 ++++++++++++------- .../coffee/User/UserControllerTests.coffee | 10 +----- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/services/web/app/coffee/Features/User/UserController.coffee b/services/web/app/coffee/Features/User/UserController.coffee index f8e7174bb2..c820c85fb5 100644 --- a/services/web/app/coffee/Features/User/UserController.coffee +++ b/services/web/app/coffee/Features/User/UserController.coffee @@ -2,7 +2,6 @@ UserDeleter = require("./UserDeleter") UserLocator = require("./UserLocator") User = require("../../models/User").User newsLetterManager = require('../Newsletter/NewsletterManager') -sanitize = require('sanitizer') UserRegistrationHandler = require("./UserRegistrationHandler") logger = require("logger-sharelatex") metrics = require("../../infrastructure/Metrics") @@ -28,25 +27,34 @@ module.exports = updateUserSettings : (req, res)-> logger.log user: req.session.user, "updating account settings" - newEmail = req.body.email?.trim() user_id = req.session.user._id User.findById user_id, (err, user)-> if err? or !user? logger.err err:err, user_id:user_id, "problem updaing user settings" return res.send 500 - user.first_name = sanitize.escape(req.body.first_name).trim() - user.last_name = sanitize.escape(req.body.last_name).trim() - user.ace.mode = sanitize.escape(req.body.mode).trim() - user.ace.theme = sanitize.escape(req.body.theme).trim() - user.ace.fontSize = sanitize.escape(req.body.fontSize).trim() - user.ace.autoComplete = req.body.autoComplete == "true" - user.ace.spellCheckLanguage = req.body.spellCheckLanguage - user.ace.pdfViewer = req.body.pdfViewer + + if req.body.first_name? + user.first_name = req.body.first_name.trim() + if req.body.last_name? + user.last_name = req.body.last_name.trim() + if req.body.mode? + user.ace.mode = req.body.mode + if req.body.theme? + user.ace.theme = req.body.theme + if req.body.fontSize? + user.ace.fontSize = req.body.fontSize + if req.body.autoComplete? + user.ace.autoComplete = (req.body.autoComplete == "true") + if req.body.spellCheckLanguage? + user.ace.spellCheckLanguage = req.body.spellCheckLanguage + if req.body.pdfViewer? + user.ace.pdfViewer = req.body.pdfViewer user.save (err)-> - if !newEmail? or newEmail.length == 0 or newEmail.indexOf("@") == -1 - return res.send(400) - else if newEmail == user.email + newEmail = req.body.email?.trim() + if !newEmail? or newEmail == user.email return res.send 200 + else if newEmail.indexOf("@") == -1 + return res.send(400) else UserUpdater.changeEmailAddress user_id, newEmail, (err)-> if err? diff --git a/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee b/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee index 701b2d286a..85ccb841e6 100644 --- a/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee @@ -97,20 +97,12 @@ describe "UserController", -> it "should set some props on ace", (done)-> @req.body = - theme: "something " + theme: "something" @res.send = (code)=> @user.ace.theme.should.equal "something" done() @UserController.updateUserSettings @req, @res - - it "should return an error if the email address is null", (done)-> - @req.body.email = null - @res.send = (code)-> - code.should.equal 400 - done() - @UserController.updateUserSettings @req, @res - it "should send an error if the email is 0 len", (done)-> @req.body.email = "" @res.send = (code)->