From a00c1ed925adc953c2cec8cc6d4971082685f8d2 Mon Sep 17 00:00:00 2001 From: Jason Denney Date: Sun, 19 May 2013 16:41:43 -0400 Subject: [PATCH] Finished Checkin/out feature for now -Checkin/out api methods can be used while signed in -Added checkout button in Netzke App, which also signs out in addition to checking out. --- app/components/app_tab_panel.rb | 8 ++++++-- .../app_tab_panel/javascripts/sign_out.js | 12 ++++++++++++ app/controllers/api/v1/base_controller.rb | 19 +++++++++---------- app/controllers/api/v1/logs_controller.rb | 2 ++ 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/app/components/app_tab_panel.rb b/app/components/app_tab_panel.rb index faf4bc8..4268fda 100644 --- a/app/components/app_tab_panel.rb +++ b/app/components/app_tab_panel.rb @@ -6,6 +6,11 @@ class AppTabPanel < Netzke::Basepack::TabPanel c.text = "Sign out #{controller.current_user.email}" if controller.current_user end + action :check_out do |c| + c.icon = :door_out + c.text = "CHECK OUT" if controller.current_user + end + def configure(c) #all users @@ -49,7 +54,7 @@ class AppTabPanel < Netzke::Basepack::TabPanel end c.prevent_header = true - c.tbar = [:sign_out] + c.tbar = [:sign_out, :check_out] c.items = @@app_tab_panel_items super end @@ -58,6 +63,5 @@ class AppTabPanel < Netzke::Basepack::TabPanel #gets js from app_tab_panel/javascripts/sign_out.js c.mixin :sign_out end - end diff --git a/app/components/app_tab_panel/javascripts/sign_out.js b/app/components/app_tab_panel/javascripts/sign_out.js index d7c9bc3..8672024 100644 --- a/app/components/app_tab_panel/javascripts/sign_out.js +++ b/app/components/app_tab_panel/javascripts/sign_out.js @@ -5,5 +5,17 @@ url: '/users/sign_out', method: 'DELETE' }); + }, + onCheckOut: function(){ + Ext.Ajax.request({ + url: '/api/v1/checkout', + method: 'POST', + success: function(response, opts) { + Ext.Ajax.request({ + url: '/users/sign_out', + method: 'DELETE' + }); + } + }); } } diff --git a/app/controllers/api/v1/base_controller.rb b/app/controllers/api/v1/base_controller.rb index da644d0..a3ed9c1 100644 --- a/app/controllers/api/v1/base_controller.rb +++ b/app/controllers/api/v1/base_controller.rb @@ -5,19 +5,18 @@ class Api::V1::BaseController < ActionController::Base private def authenticate_user - if params[:token] - @current_user = User.find_by_authentication_token(params[:token]) - else + if params[:username] user = User.find_for_database_authentication( :email => params[:username] ) @current_user = user if user && user.valid_password?( params[:password] ) - end - unless @current_user - render :json => {:error => "Username/Password/Token invalid" }, :status => 403 - end - end - def current_user - @current_user + if @current_user.nil? + msg = "Username/Password/Token invalid" + render :json => {:error => msg }, :status => 403 and return + end + else + authenticate_user! + @current_user = current_user + end end end diff --git a/app/controllers/api/v1/logs_controller.rb b/app/controllers/api/v1/logs_controller.rb index 498b6d2..b226b24 100644 --- a/app/controllers/api/v1/logs_controller.rb +++ b/app/controllers/api/v1/logs_controller.rb @@ -1,6 +1,7 @@ class Api::V1::LogsController < Api::V1::BaseController def checkin + #must use @current_user since user may not have signed in if @current_user.checked_in? render :json => { "error" => "You are already checked in."}, :status => 404 and return else @@ -10,6 +11,7 @@ class Api::V1::LogsController < Api::V1::BaseController end def checkout + #must use @current_user since user may not have signed in if !@current_user.checked_in? render :json => { "error" => "You were not even checked in."}, :status => 404 and return else