mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-02-24 13:34:08 -05:00
Added the ability to assign a user an iOS UDID, and login with it.
This commit is contained in:
parent
fae09aad00
commit
a18537b065
4 changed files with 36 additions and 4 deletions
|
@ -50,6 +50,7 @@ visa = c.shortString
|
||||||
|
|
||||||
_.extend UserSchema.properties,
|
_.extend UserSchema.properties,
|
||||||
email: c.shortString({title: 'Email', format: 'email'})
|
email: c.shortString({title: 'Email', format: 'email'})
|
||||||
|
iosUDID: c.shortString({format: 'hidden'})
|
||||||
firstName: c.shortString({title: 'First Name'})
|
firstName: c.shortString({title: 'First Name'})
|
||||||
lastName: c.shortString({title: 'Last Name'})
|
lastName: c.shortString({title: 'Last Name'})
|
||||||
gender: {type: 'string', 'enum': ['male', 'female']}
|
gender: {type: 'string', 'enum': ['male', 'female']}
|
||||||
|
|
|
@ -15,7 +15,14 @@ module.exports.setup = (app) ->
|
||||||
|
|
||||||
authentication.use(new LocalStrategy(
|
authentication.use(new LocalStrategy(
|
||||||
(username, password, done) ->
|
(username, password, done) ->
|
||||||
User.findOne({emailLower: username.toLowerCase()}).exec((err, user) ->
|
|
||||||
|
# kind of a hacky way to make it possible for iPads to 'log in' with their unique device id
|
||||||
|
if username.length is 40 and '@' not in username # must be a UDID
|
||||||
|
q = { iosUDID: username }
|
||||||
|
else
|
||||||
|
q = { emailLower: username.toLowerCase() }
|
||||||
|
|
||||||
|
User.findOne(q).exec((err, user) ->
|
||||||
return done(err) if err
|
return done(err) if err
|
||||||
return done(null, false, {message: 'not found', property: 'email'}) if not user
|
return done(null, false, {message: 'not found', property: 'email'}) if not user
|
||||||
passwordReset = (user.get('passwordReset') or '').toLowerCase()
|
passwordReset = (user.get('passwordReset') or '').toLowerCase()
|
||||||
|
|
|
@ -200,7 +200,7 @@ UserSchema.statics.editableProperties = [
|
||||||
'firstName', 'lastName', 'gender', 'facebookID', 'gplusID', 'emails',
|
'firstName', 'lastName', 'gender', 'facebookID', 'gplusID', 'emails',
|
||||||
'testGroupNumber', 'music', 'hourOfCode', 'hourOfCodeComplete', 'preferredLanguage',
|
'testGroupNumber', 'music', 'hourOfCode', 'hourOfCodeComplete', 'preferredLanguage',
|
||||||
'wizard', 'aceConfig', 'autocastDelay', 'lastLevel', 'jobProfile', 'savedEmployerFilterAlerts',
|
'wizard', 'aceConfig', 'autocastDelay', 'lastLevel', 'jobProfile', 'savedEmployerFilterAlerts',
|
||||||
'heroConfig'
|
'heroConfig', 'iosUDID'
|
||||||
]
|
]
|
||||||
|
|
||||||
UserSchema.plugin plugins.NamedPlugin
|
UserSchema.plugin plugins.NamedPlugin
|
||||||
|
|
|
@ -15,7 +15,31 @@ describe '/auth/whoami', ->
|
||||||
|
|
||||||
describe '/auth/login', ->
|
describe '/auth/login', ->
|
||||||
|
|
||||||
it 'clears Users first', (done) ->
|
it 'clears Users', (done) ->
|
||||||
|
clearModels [User], (err) ->
|
||||||
|
throw err if err
|
||||||
|
request.get getURL('/auth/whoami'), ->
|
||||||
|
throw err if err
|
||||||
|
done()
|
||||||
|
|
||||||
|
it 'allows logging in by iosUDID', (done) ->
|
||||||
|
req = request.post(getURL('/db/user'),
|
||||||
|
(error, response) ->
|
||||||
|
expect(response).toBeDefined()
|
||||||
|
expect(response.statusCode).toBe(200)
|
||||||
|
req = request.post(urlLogin, (error, response) ->
|
||||||
|
expect(response.statusCode).toBe(200)
|
||||||
|
done()
|
||||||
|
)
|
||||||
|
form = req.form()
|
||||||
|
form.append('username', '0123456789012345678901234567890123456789')
|
||||||
|
form.append('password', '12345')
|
||||||
|
)
|
||||||
|
form = req.form()
|
||||||
|
form.append('iosUDID', '0123456789012345678901234567890123456789')
|
||||||
|
form.append('password', '12345')
|
||||||
|
|
||||||
|
it 'clears Users', (done) ->
|
||||||
clearModels [User], (err) ->
|
clearModels [User], (err) ->
|
||||||
throw err if err
|
throw err if err
|
||||||
request.get getURL('/auth/whoami'), ->
|
request.get getURL('/auth/whoami'), ->
|
||||||
|
@ -84,7 +108,7 @@ describe '/auth/reset', ->
|
||||||
form = req.form()
|
form = req.form()
|
||||||
form.append('username', 'scott@gmail.com')
|
form.append('username', 'scott@gmail.com')
|
||||||
|
|
||||||
it 'can\'t reset an unknow user', (done) ->
|
it 'can\'t reset an unknown user', (done) ->
|
||||||
req = request.post(urlReset, (error, response) ->
|
req = request.post(urlReset, (error, response) ->
|
||||||
expect(response).toBeDefined()
|
expect(response).toBeDefined()
|
||||||
expect(response.statusCode).toBe(404)
|
expect(response.statusCode).toBe(404)
|
||||||
|
|
Loading…
Reference in a new issue