should be able to set first and last name via user details on registration

This commit is contained in:
Henry Oswald 2016-06-13 13:21:44 +01:00
parent 895af7c07a
commit c52af1393e
5 changed files with 49 additions and 6 deletions

View file

@ -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

View file

@ -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.

View file

@ -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

View file

@ -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()

View file

@ -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()