Просмотр исходного кода

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

Henry Oswald 10 лет назад
Родитель
Сommit
c52af1393e

+ 10 - 2
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
 

+ 2 - 0
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.

+ 2 - 1
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
 

+ 32 - 0
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()

+ 3 - 3
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()