From c52af1393e2f893e76c45b05115f21b83a86b361 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Mon, 13 Jun 2016 13:21:44 +0100 Subject: [PATCH] should be able to set first and last name via user details on registration --- .../coffee/Features/User/UserCreator.coffee | 12 +++++-- .../Features/User/UserPagesController.coffee | 2 ++ .../User/UserRegistrationHandler.coffee | 3 +- .../coffee/User/UserCreatorTests.coffee | 32 +++++++++++++++++++ .../User/UserRegistrationHandlerTests.coffee | 6 ++-- 5 files changed, 49 insertions(+), 6 deletions(-) diff --git a/services/web/app/coffee/Features/User/UserCreator.coffee b/services/web/app/coffee/Features/User/UserCreator.coffee index e9a05c46f2..ee5a426e78 100644 --- a/services/web/app/coffee/Features/User/UserCreator.coffee +++ b/services/web/app/coffee/Features/User/UserCreator.coffee @@ -1,5 +1,6 @@ User = require("../../models/User").User UserLocator = require("./UserLocator") +logger = require("logger-sharelatex") module.exports = @@ -12,16 +13,23 @@ module.exports = self.createNewUser email:email, holdingAccount:true, callback createNewUser: (opts, callback)-> + logger.log opts:opts, "creating new user" user = new User() user.email = opts.email user.holdingAccount = opts.holdingAccount username = opts.email.match(/^[^@]*/) - if username? + if opts.first_name? and opts.first_name.length != 0 + user.first_name = opts.first_name + else if username? user.first_name = username[0] else user.first_name = "" - user.last_name = "" + + if opts.last_name? + user.last_name = opts.last_name + else + user.last_name = "" user.featureSwitches?.pdfng = true diff --git a/services/web/app/coffee/Features/User/UserPagesController.coffee b/services/web/app/coffee/Features/User/UserPagesController.coffee index 5a967605fe..567cacd35c 100644 --- a/services/web/app/coffee/Features/User/UserPagesController.coffee +++ b/services/web/app/coffee/Features/User/UserPagesController.coffee @@ -26,6 +26,7 @@ module.exports = activateAccountPage: (req, res) -> # An 'activation' is actually just a password reset on an account that # was set with a random password originally. + logger.log query:req.query, "activiate account page called" if !req.query?.user_id? or !req.query?.token? return ErrorController.notFound(req, res) @@ -34,6 +35,7 @@ module.exports = if !user return ErrorController.notFound(req, res) if user.loginCount > 0 + logger.log user:user, "user has already logged in so is active, sending them to /login" # Already seen this user, so account must be activate # This lets users keep clicking the 'activate' link in their email # as a way to log in which, if I know our users, they will. diff --git a/services/web/app/coffee/Features/User/UserRegistrationHandler.coffee b/services/web/app/coffee/Features/User/UserRegistrationHandler.coffee index f407091122..9f15ed88d4 100644 --- a/services/web/app/coffee/Features/User/UserRegistrationHandler.coffee +++ b/services/web/app/coffee/Features/User/UserRegistrationHandler.coffee @@ -35,7 +35,8 @@ module.exports = UserRegistrationHandler = _createNewUserIfRequired: (user, userDetails, callback)-> if !user? - UserCreator.createNewUser {holdingAccount:false, email:userDetails.email}, callback + userDetails.holdingAccount = false + UserCreator.createNewUser userDetails, callback else callback null, user diff --git a/services/web/test/UnitTests/coffee/User/UserCreatorTests.coffee b/services/web/test/UnitTests/coffee/User/UserCreatorTests.coffee index 5088075656..c2f4ea292f 100644 --- a/services/web/test/UnitTests/coffee/User/UserCreatorTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserCreatorTests.coffee @@ -20,6 +20,7 @@ describe "UserCreator", -> @UserCreator = SandboxedModule.require modulePath, requires: "../../models/User": User:@UserModel "./UserLocator":@UserLocator + "logger-sharelatex":{log:->} @email = "bob.oswald@gmail.com" @@ -53,5 +54,36 @@ describe "UserCreator", -> assert.equal user.first_name, "bob.oswald" done() + it "should use the start of the email if the first name is empty string", (done)-> + opts = + email:@email + holdingAccount:true + first_name:"" + @UserCreator.createNewUser opts, (err, user)=> + assert.equal user.email, @email + assert.equal user.holdingAccount, true + assert.equal user.first_name, "bob.oswald" + done() + it "should use the first name if passed", (done)-> + opts = + email:@email + holdingAccount:true + first_name:"fiiirstname" + @UserCreator.createNewUser opts, (err, user)=> + assert.equal user.email, @email + assert.equal user.holdingAccount, true + assert.equal user.first_name, "fiiirstname" + done() + + it "should use the last name if passed", (done)-> + opts = + email:@email + holdingAccount:true + last_name:"lastNammmmeee" + @UserCreator.createNewUser opts, (err, user)=> + assert.equal user.email, @email + assert.equal user.holdingAccount, true + assert.equal user.last_name, "lastNammmmeee" + done() diff --git a/services/web/test/UnitTests/coffee/User/UserRegistrationHandlerTests.coffee b/services/web/test/UnitTests/coffee/User/UserRegistrationHandlerTests.coffee index 60ae1719a7..400d76c985 100644 --- a/services/web/test/UnitTests/coffee/User/UserRegistrationHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserRegistrationHandlerTests.coffee @@ -106,19 +106,19 @@ describe "UserRegistrationHandler", -> it "should create a new user", (done)-> @handler.registerNewUser @passingRequest, (err)=> - @UserCreator.createNewUser.calledWith({email:@passingRequest.email, holdingAccount:false}).should.equal true + @UserCreator.createNewUser.calledWith({email:@passingRequest.email, holdingAccount:false, password:"123"}).should.equal true done() it 'lower case email', (done)-> @passingRequest.email = "soMe@eMail.cOm" @handler.registerNewUser @passingRequest, (err)=> - @UserCreator.createNewUser.calledWith({email:@passingRequest.email.toLowerCase(), holdingAccount:false}).should.equal true + @UserCreator.createNewUser.args[0][0].email.should.equal "some@email.com" done() it 'trim white space from email', (done)-> @passingRequest.email = " some@email.com " @handler.registerNewUser @passingRequest, (err)=> - @UserCreator.createNewUser.calledWith({email:"some@email.com", holdingAccount:false}).should.equal true + @UserCreator.createNewUser.args[0][0].email.should.equal "some@email.com" done()