2014-11-28 17:49:41 -08:00
{ backboneFailure , genericFailure , parseServerError } = require ' core/errors '
2014-01-03 10:32:13 -08:00
User = require ' models/User '
2014-11-28 17:49:41 -08:00
storage = require ' core/storage '
2014-01-03 10:32:13 -08:00
BEEN_HERE_BEFORE_KEY = ' beenHereBefore '
2014-04-02 13:12:24 -07:00
init = ->
module.exports.me = window . me = new User ( window . userObject ) # inserted into main.html
2014-05-30 16:20:20 -07:00
module . exports . me . onLoaded ( )
2014-04-02 13:12:24 -07:00
trackFirstArrival ( )
if me and not me . get ( ' testGroupNumber ' ) ?
# Assign testGroupNumber to returning visitors; new ones in server/routes/auth
me . set ' testGroupNumber ' , Math . floor ( Math . random ( ) * 256 )
2014-06-11 11:34:52 -07:00
me . patch ( )
2014-04-02 13:12:24 -07:00
2014-08-27 12:24:03 -07:00
Backbone . listenTo me , ' sync ' , -> Backbone . Mediator . publish ( ' auth:me-synced ' , me: me )
2014-04-02 13:12:24 -07:00
2014-03-31 13:56:13 -07:00
module.exports.createUser = (userObject, failure=backboneFailure, nextURL=null) ->
2014-01-03 10:32:13 -08:00
user = new User ( userObject )
2014-05-22 11:22:52 -07:00
user.notyErrors = false
2014-01-03 10:32:13 -08:00
user . save ( { } , {
2014-07-01 10:16:26 +08:00
error: (model, jqxhr, options) ->
2014-04-13 17:55:49 +05:30
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 )
2014-04-02 13:12:24 -07:00
success: -> if nextURL then window . location.href = nextURL else window . location . reload ( )
2014-01-03 10:32:13 -08:00
} )
2014-05-06 16:58:08 -07:00
2014-04-24 15:27:37 -07:00
module.exports.createUserWithoutReload = (userObject, failure=backboneFailure) ->
user = new User ( userObject )
user . save ( { } , {
error: failure
2014-05-06 16:58:08 -07:00
success: ->
2014-07-01 10:16:26 +08:00
Backbone . Mediator . publish ( ' created-user-without-reload ' )
2014-04-24 15:27:37 -07:00
} )
2014-01-03 10:32:13 -08:00
2015-02-11 16:12:26 -08:00
module.exports.loginUser = (userObject, failure=genericFailure, nextURL=null) ->
2014-09-07 20:54:25 -07:00
console . log ' logging in as ' , userObject . email
2014-01-03 10:32:13 -08:00
jqxhr = $ . post ( ' /auth/login ' ,
{
2014-07-01 10:16:26 +08:00
username: userObject . email ,
password: userObject . password
2014-01-03 10:32:13 -08:00
} ,
2015-02-11 16:12:26 -08:00
(model) -> if nextURL then window . location.href = nextURL else window . location . reload ( )
2014-01-03 10:32:13 -08:00
)
jqxhr . fail ( failure )
module.exports.logoutUser = ->
2016-03-09 14:39:40 -08:00
# TODO: Refactor to use User.logout
2014-01-09 10:48:51 -08:00
FB ? . logout ? ( )
2015-02-25 01:54:30 +09:00
callback = ->
2015-12-18 10:02:03 -08:00
location = _ . result ( currentView , ' logoutRedirectURL ' )
if location
window . location = location
else
window . location . reload ( )
2015-02-25 01:54:30 +09:00
res = $ . post ( ' /auth/logout ' , { } , callback )
2014-01-03 10:32:13 -08:00
res . fail ( genericFailure )
2016-05-11 14:39:26 -07:00
module.exports.sendRecoveryEmail = (email, options={}) ->
options = _ . merge ( options ,
{ method: ' POST ' , url: ' /auth/reset ' , data: { email } }
)
$ . ajax ( options )
2014-01-03 10:32:13 -08:00
onSetVolume = (e) ->
return if e . volume is me . get ( ' volume ' )
me . set ( ' volume ' , e . volume )
me . save ( )
2014-08-27 12:24:03 -07:00
Backbone . Mediator . subscribe ( ' level:set-volume ' , onSetVolume , module . exports )
2014-01-03 10:32:13 -08:00
trackFirstArrival = ->
# will have to filter out users who log in with existing accounts separately
# but can at least not track logouts as first arrivals using local storage
2014-01-26 14:44:08 -08:00
beenHereBefore = storage . load ( BEEN_HERE_BEFORE_KEY )
2014-01-03 10:32:13 -08:00
return if beenHereBefore
2014-01-06 17:45:35 -08:00
window . tracker ? . trackEvent ' First Arrived '
2014-01-26 14:44:08 -08:00
storage . save ( BEEN_HERE_BEFORE_KEY , true )
2014-04-02 13:12:24 -07:00
init ( )