From d872c6ae5d36b89ebd86cfa44237bf99508dbdae Mon Sep 17 00:00:00 2001 From: Sven Fuchs Date: Fri, 21 Sep 2012 15:14:01 +0200 Subject: [PATCH] refactor app/auth stuff --- Gemfile | 1 + Gemfile.lock | 9 ++- assets/javascripts/app/app.coffee | 38 +++-------- assets/javascripts/app/auth.coffee | 63 +++++++++++++++++++ assets/javascripts/app/models/user.coffee | 27 ++++---- assets/javascripts/app/routes.coffee | 25 ++++---- .../javascripts/app/store/rest_adapter.coffee | 16 +---- .../javascripts/app/templates/layouts/top.hbs | 4 +- assets/javascripts/app/views/top.coffee | 11 +--- assets/javascripts/lib/travis/ajax.coffee | 28 +++++++++ assets/javascripts/lib/travis/auth.coffee | 53 ---------------- assets/javascripts/travis.coffee | 2 - assets/stylesheets/top.sass | 6 +- public/javascripts/application.js | 2 +- public/stylesheets/application.css | 6 +- 15 files changed, 149 insertions(+), 142 deletions(-) create mode 100644 assets/javascripts/app/auth.coffee create mode 100644 assets/javascripts/lib/travis/ajax.coffee delete mode 100644 assets/javascripts/lib/travis/auth.coffee diff --git a/Gemfile b/Gemfile index b6501b64..13851b35 100644 --- a/Gemfile +++ b/Gemfile @@ -9,6 +9,7 @@ gem 'sinatra' gem 'sinatra-contrib' gem 'yard-sinatra', github: 'rkh/yard-sinatra' +gem 'bunny' gem 'pg', '~> 0.13.2' gem 'newrelic_rpm', '~> 3.3.0' gem 'hubble', git: 'git://github.com/roidrage/hubble' diff --git a/Gemfile.lock b/Gemfile.lock index d7cdebe6..43c92948 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -15,14 +15,15 @@ GIT GIT remote: git://github.com/roidrage/hubble - revision: 5220415d5542a2868d54f7be9f35fc1d66126b8e + revision: 8972b940a4f927927d2a4bdb250b3c98c04692a6 specs: hubble (0.1.2) + faraday json (~> 1.6.5) GIT remote: git://github.com/travis-ci/travis-api.git - revision: 5d908480c7170a84aebb80b0d0a0398295a207f2 + revision: d887f01e0b27bb2936bcfd929258eec92b76a9b2 branch: sf-use-services specs: travis-api (0.0.1) @@ -63,7 +64,7 @@ GIT GIT remote: git://github.com/travis-ci/travis-support.git - revision: 268dc0ff74b5a559e06f637e0814af983e60919e + revision: 06844d2db558d88be775ca1cf9cfff8ec36120fb specs: travis-support (0.0.1) @@ -108,6 +109,7 @@ GEM avl_tree (1.1.3) backports (2.6.4) builder (3.0.3) + bunny (0.8.0) chunky_png (1.2.6) coffee-script (2.2.0) coffee-script-source @@ -237,6 +239,7 @@ PLATFORMS ruby DEPENDENCIES + bunny coffee-script compass guard diff --git a/assets/javascripts/app/app.coffee b/assets/javascripts/app/app.coffee index 5878edfd..79da818e 100644 --- a/assets/javascripts/app/app.coffee +++ b/assets/javascripts/app/app.coffee @@ -1,4 +1,5 @@ require 'travis' # hrm. +require 'auth' require 'controllers' require 'helpers' require 'models' @@ -11,7 +12,6 @@ require 'views' require 'config/locales' require 'data/sponsors' -require 'travis/auth' # $.mockjaxSettings.log = false # Ember.LOG_BINDINGS = true @@ -20,6 +20,10 @@ require 'travis/auth' Travis.reopen App: Em.Application.extend + currentUserBinding: 'auth.user' + accessTokenBinding: 'auth.user.accessToken' + authStateBinding: 'auth.state' + init: -> @_super() @connect() @@ -27,40 +31,18 @@ Travis.reopen @store = Travis.Store.create() @store.loadMany(Travis.Sponsor, Travis.SPONSORS) + @set('auth', Travis.Auth.create(store: @store, endpoint: Travis.config.api_endpoint)) + @routes = new Travis.Routes() @pusher = new Travis.Pusher() @tailing = new Travis.Tailing() - @loadUser() - - loadUser: -> - user = sessionStorage?.getItem("travisUser") - if user - @setCurrentUser JSON.parse(user) - else if localStorage?.getItem("travisTrySignIn") - Travis.Auth.trySignIn() - signIn: -> - @set('signingIn', true) - Travis.Auth.signIn() - # TODO: this has to mov, no? - @render.apply(this, @get('returnTo') || ['home', 'index']) + @get('auth').signIn() signOut: -> - Travis.config.access_token = null - localStorage?.clear() - sessionStorage?.clear() - @setCurrentUser() - - setCurrentUser: (data) -> - data = JSON.parse(data) if typeof data == 'string' - if data - localStorage?.setItem("travisTrySignIn", "true") - sessionStorage?.setItem("travisUser", JSON.stringify(data)) - @store.load(Travis.User, data.user) - @store.loadMany(Travis.Account, data.accounts) - @set('currentUser', if data then Travis.User.find(data.user.id) else undefined) - @set('signingIn', false) + @get('auth').signOut() + @routes.route('') render: (name, action, params) -> layout = @connectLayout(name) diff --git a/assets/javascripts/app/auth.coffee b/assets/javascripts/app/auth.coffee new file mode 100644 index 00000000..c6d0c3b2 --- /dev/null +++ b/assets/javascripts/app/auth.coffee @@ -0,0 +1,63 @@ +@Travis.Auth = Ember.Object.extend + iframe: $('