Skip to content

Commit

Permalink
strip out authentication state manager and put into AuthController
Browse files Browse the repository at this point in the history
  • Loading branch information
kagemusha committed Sep 5, 2013
1 parent 03aa8ed commit b109f25
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 99 deletions.
1 change: 0 additions & 1 deletion app/assets/javascripts/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

//= require vendor/handlebars-1.0.0
//= require vendor/ember-1.0.0
//= require vendor/ember-states
//= require vendor/ember-data

//= require_self
Expand Down
83 changes: 65 additions & 18 deletions app/assets/javascripts/controllers/controllers.js.coffee
Original file line number Diff line number Diff line change
@@ -1,30 +1,77 @@
## In a real app you will probably want to separate components into different files
## They are grouped together here for ease of exposition

App.AuthController = Ember.ObjectController.extend
currentUser: null
isAuthenticated: Em.computed.notEmpty("currentUser.email")
login: (route) ->
me = @
$.ajax
url: App.urls.login
type: "POST"
data:
"user[email]": route.currentModel.email
"user[password]": route.currentModel.password
success: (data) ->
log.log "Login Msg #{data.user.dummy_msg}"
me.set 'currentUser', data.user
route.transitionTo 'home'
error: (jqXHR, textStatus, errorThrown) ->
if jqXHR.status==401
route.controllerFor('login').set "errorMsg", "That email/password combo didn't work. Please try again"
else if jqXHR.status==406
route.controllerFor('login').set "errorMsg", "Request not acceptable (406): make sure Devise responds to JSON."
else
p "Login Error: #{jqXHR.status} | #{errorThrown}"

register: (route) ->
me = @
$.ajax
url: App.urls.register
type: "POST"
data:
#would be nice if could do something like this
#user: @currentModel.getJSON
#(perhaps there is, but couldn't find)
"user[name]": route.currentModel.name
"user[email]": route.currentModel.email
"user[password]": route.currentModel.password
"user[password_confirmation]": route.currentModel.password_confirmation
success: (data) ->
me.set 'currentUser', data.user
route.transitionTo 'home'
error: (jqXHR, textStatus, errorThrown) ->
route.controllerFor('registration').set "errorMsg", "That email/password combo didn't work. Please try again"

logout: ->
log.info "Logging out..."
me = @
$.ajax
url: App.urls.logout
type: "DELETE"
dataType: "json"
success: (data, textStatus, jqXHR) ->
$('meta[name="csrf-token"]').attr('content', data['csrf-token'])
$('meta[name="csrf-param"]').attr('content', data['csrf-param'])
log.info "Logged out on server"
me.set 'currentUser', null
me.transitionToRoute "home"
error: (jqXHR, textStatus, errorThrown) ->
alert "Error logging out: #{errorThrown}"

App.NavbarController = Ember.ObjectController.extend
authStateBinding: Ember.Binding.oneWay 'App.LoginStateManager.currentState'
authState: null,
authenticated: (->
log.info "NavbarController authent"
@.get("authState") == App.LoginStateManager.authenticated
).property("authState")
needs: ['auth']
isAuthenticated: Em.computed.alias "controllers.auth.isAuthenticated"
actions:
logout: ->
log.info "NavbarController handling logout event..."
me = @
App.Authentication.logout -> me.transitionToRoute "home"

@get("controllers.auth").logout()

App.WelcomeMsgController = Ember.ObjectController.extend
authStateBinding: Ember.Binding.oneWay 'App.LoginStateManager.currentState'
authState: null,
user: (->
if @.get("authState") == App.LoginStateManager.authenticated
App.currentUser
else
null
).property("authState")

needs: ['auth']
isAuthenticated: Em.computed.alias "controllers.auth.isAuthenticated"
user: Em.computed.alias "controllers.auth.currentUser"
hiName: Em.computed.any "user.name","user.email"



1 change: 0 additions & 1 deletion app/assets/javascripts/ember_app.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
//= require_tree ./models
//= require_tree ./controllers
//= require_tree ./views
//= require state_managers
//= require_tree ./helpers
//= require_tree ./templates
//= require ./router
Expand Down
56 changes: 0 additions & 56 deletions app/assets/javascripts/helpers/authentication_helper.js.coffee

This file was deleted.

7 changes: 1 addition & 6 deletions app/assets/javascripts/helpers/init_helper.js.coffee
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
App.initApp = (currentUser) ->
App.initCurrentUser currentUser
App.LoginStateManager.transitionTo 'authenticated' if App.currentUser
App.__container__.lookup('controller:auth').set 'currentUser', currentUser


App.initCurrentUser = (currentUser) ->
log.info "current user: ", currentUser
App.currentUser = currentUser if currentUser?.email


7 changes: 4 additions & 3 deletions app/assets/javascripts/router.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ App.Router.map ->


App.IndexRoute = Ember.Route.extend
redirect: -> @transitionTo 'home'
beforeModel: (transition) ->
@transitionTo 'home'


App.LoginRoute = Ember.Route.extend
Expand All @@ -20,7 +21,7 @@ App.LoginRoute = Ember.Route.extend
actions:
login: ->
log.info "Logging in..."
App.Authentication.login this
@controllerFor("auth").login this
cancel: ->
log.info "cancelling login"
@transitionTo 'home'
Expand All @@ -30,7 +31,7 @@ App.RegistrationRoute = Ember.Route.extend
actions:
register: ->
log.info "Registering..."
App.Authentication.register this
@controllerFor("auth").register this
cancel: ->
log.info "cancelling registration"
@transitionTo 'home'
14 changes: 0 additions & 14 deletions app/assets/javascripts/state_managers.js.coffee

This file was deleted.

0 comments on commit b109f25

Please sign in to comment.