Merge branch 'anonNameCollide' of https://github.com/adi2412/codecombat into adi2412-anonNameCollide

Conflicts:
	app/views/modal/signup_modal.coffee
This commit is contained in:
Scott Erickson 2014-05-05 16:48:35 -07:00
commit 056f081cdb
2 changed files with 13 additions and 5 deletions

View file

@ -1,4 +1,4 @@
{backboneFailure, genericFailure} = require 'lib/errors'
{backboneFailure, genericFailure, parseServerError} = require 'lib/errors'
User = require 'models/User'
storage = require 'lib/storage'
BEEN_HERE_BEFORE_KEY = 'beenHereBefore'
@ -16,7 +16,14 @@ init = ->
module.exports.createUser = (userObject, failure=backboneFailure, nextURL=null) ->
user = new User(userObject)
user.save({}, {
error: failure,
error: (model,jqxhr,options) ->
error = parseServerError(jqxhr.responseText)
property = error.property if error.property
if jqxhr.status is 409 and property is 'name'
anonUserObject = _.omit(userObject, 'name')
module.exports.createUser anonUserObject, failure, nextURL
else
genericFailure(jqxhr)
success: -> if nextURL then window.location.href = nextURL else window.location.reload()
})

View file

@ -105,11 +105,12 @@ UserHandler = class UserHandler extends Handler
(req, user, callback) ->
return callback(null, req, user) unless req.body.name
nameLower = req.body.name?.toLowerCase()
return callback(null, req, user) if nameLower is user.get('nameLower')
User.findOne({nameLower:nameLower}).exec (err, otherUser) ->
# return callback(null, req, user) if nameLower is user.get('nameLower')
User.findOne({nameLower:nameLower,anonymous:false}).exec (err, otherUser) ->
log.error "Database error setting user name: #{err}" if err
return callback(res:'Database error.', code:500) if err
r = {message:'is already used by another account', property:'name'}
console.log 'Another user exists' if otherUser
return callback({res:r, code:409}) if otherUser
user.set('name', req.body.name)
callback(null, req, user)
@ -127,7 +128,7 @@ UserHandler = class UserHandler extends Handler
@getPropertiesFromMultipleDocuments res, User, properties, ids
nameToID: (req, res, name) ->
User.findOne({nameLower:name.toLowerCase()}).exec (err, otherUser) ->
User.findOne({nameLower:name.toLowerCase(),anonymous:false}).exec (err, otherUser) ->
res.send(if otherUser then otherUser._id else JSON.stringify(''))
res.end()