using authentication for app

This commit is contained in:
2012-10-25 16:11:49 +02:00
parent 5479d3760b
commit 28ec047f1d
14 changed files with 429 additions and 40 deletions
+67 -23
View File
@@ -35,32 +35,69 @@ var path_mapping = {
list_products_for_table: '/user/list_products_for_table',
list_products: '/user/list_products',
active_list: '/user/active_list',
history_list: '/user/history_list'
history_list: '/user/history_list',
obtain_user_token: '/user/obtain_token'
}
var translations = {
confirmations: {
move_to_another_table_title: 'Move to another table?',
move_to_another_table: 'Are you sure you want to move to another table?'
en: {
confirmations: {
},
list_needs_help: {
help_is_on_its_way: 'Help is already on its way',
title: 'Request a waiter',
content: 'Request a waiter to your table'
},
list_needs_payment: {
payment_already_requested: 'You already asked for the check',
title: 'Ask for the check',
content: 'Do you want to pay?'
},
selected_products: {
order: 'Order',
clear: 'Clear'
},
join_request: {
title: 'Join request',
body: '%{email} wants to join the table',
reject: 'Reject',
approve: 'Approve'
},
move_table: {
cannot_move_to_occupied_table: 'You cannot move to an occupied table',
moved_to_another_table: 'The table is changed.',
confirmation_title: 'Move to another table?',
confirmation_body: 'Are you sure you want to move to another table?'
}
},
list_needs_help: {
help_is_on_its_way: 'Help is already on its way',
title: 'Request a waiter',
content: 'Request a waiter to your table'
},
list_needs_payment: {
payment_already_requested: 'You already asked for the check',
title: 'Ask for the check',
content: 'Do you want to pay?'
},
selected_products: {
order: 'Order',
clear: 'Clear'
},
join_request: {
title: 'Join request',
body: '%{email} wants to join the table',
reject: 'Reject',
approve: 'Approve'
nl: {
confirmations: {
},
list_needs_help: {
help_is_on_its_way: 'Er wordt al iemand naar je tafel gestuurd',
title: 'Ik heb een vraag',
content: 'Wil je een vraag stellen?'
},
list_needs_payment: {
payment_already_requested: 'De rekening is reeds gevraagd',
title: 'Vraag om de rekening',
content: 'Wil je betalen?'
},
selected_products: {
order: 'Bestellen',
clear: 'Leegmaken'
},
join_request: {
title: 'Lijst deling',
body: '%{email} wil ook op jouw lijst bestellen',
reject: 'Afwijzen',
approve: 'Toestaan'
},
move_table: {
cannot_move_to_occupied_table: 'Je kan niet verhuizen naar een tafel die reeds gebruikt wordt.',
moved_to_another_table: 'De tafel is gewijzigd.',
confirmation_title: 'Naar een andere tafel verhuizen?',
confirmation_body: 'Ben je aan een andere tafel gaan zitten?'
}
}
}
function redirect_to(mapping, variables){
@@ -90,3 +127,10 @@ function t(path, vars){
$.each(vars, function(v, value){ result = result.replace('%{'+v+'}', value)});
return result;
}
$.ajaxSetup({
error: function(xhr, ajaxOptions, error){
if(xhr.status == 401 || xhr.status == 0){
window.location = data_host + '/user/obtain_token.html';
}
}
})
+5 -5
View File
@@ -304,19 +304,19 @@ window.Quser=
else if res.supplier_closed
redirect_to 'user_root', {message: 'supplier_is_closed'}
else
#TODO Offer to move table
## Offer to move table
Qwaiter.confirm(
ok: ->
$.post(data_host + '/user/move_table', $.extend({table_id: table.table_id}, authentication_object), (res2)->
if res2.occupied
alert('Cannot move to occupied table')
redirect_to 'user_root', {message: 'move_table.cannot_move_to_occupied_tabe'}
else
redirect_to 'list_products', {message: 'moved_to_another_table'}
redirect_to 'list_products', {message: 'move_table.moved_to_another_table'}
)
cancel: ->
redirect_to 'list_products'
title: t('confirmations.move_to_another_table_title')
content: t('confirmations.move_to_another_table')
title: t('move_table.confirmation_title')
content: t('move_table.confirmation_body')
)
else
if res.occupied
@@ -1,4 +1,5 @@
class ApplicationController < ActionController::Base
before_filter :set_locale
layout :layout_by_resource
@@ -6,6 +7,10 @@ class ApplicationController < ActionController::Base
private
def set_locale
I18n.locale = :nl
end
def layout_by_resource
if devise_controller?
"phone"
+10
View File
@@ -2,6 +2,15 @@ class UserController < ApplicationController
before_filter :allow_mobile, :authenticate_user!
layout 'phone'
def authenticate_user_wrapper!
authenticate_user! unless request.format.html?
authenticate_user! if params[:action] == 'obtain_token'
end
def obtain_token
end
alias :list :active_list
def allow_mobile
@@ -153,6 +162,7 @@ class UserController < ApplicationController
redirect_to(root_path, alert: t('messages.there_is_no_list_active')) and return unless list.present?
end
format.json do
render json: js_alert(t('messages.the_list_has_been_closed')) and return unless list.present?
render json: list.with_orders_and_join_requests_as_json.merge(supplier_name: list.supplier.name)
end
end
+4 -4
View File
@@ -11,10 +11,10 @@ html lang="en"
/[if lt IE 9]
= javascript_include_tag "http://html5shim.googlecode.com/svn/trunk/html5.js"
= stylesheet_link_tag "application", :media => "all"
link href="images/apple-touch-icon-144x144.png" rel="apple-touch-icon-precomposed" sizes="144x144"
link href="images/apple-touch-icon-114x114.png" rel="apple-touch-icon-precomposed" sizes="114x114"
link href="images/apple-touch-icon-72x72.png" rel="apple-touch-icon-precomposed" sizes="72x72"
link href="images/apple-touch-icon.png" rel="apple-touch-icon-precomposed"
link href="/images/apple-touch-icon-144x144.png" rel="apple-touch-icon-precomposed" sizes="144x144"
link href="/images/apple-touch-icon-114x114.png" rel="apple-touch-icon-precomposed" sizes="114x114"
link href="/images/apple-touch-icon-72x72.png" rel="apple-touch-icon-precomposed" sizes="72x72"
link href="/images/apple-touch-icon.png" rel="apple-touch-icon-precomposed"
link href="/favicon.ico" rel="shortcut icon"
body
+7 -2
View File
@@ -18,6 +18,9 @@ html lang="en"
link href="/favicon.ico" rel="shortcut icon"
javascript:
var data_host = 'http://data.qwaiter.com';
//var data_host = 'http://localhost:3000';
//var data_host = 'http://192.168.1.240:3000';
var $locale = '#{I18n.locale}';
// Dummy holder when Qmobile object is not supplied by the mobile phone
var QMobile, Qwaiter, Quser;
QMobile || (QMobile = {
@@ -30,9 +33,11 @@ html lang="en"
this.authentication_string_storage = 'auth_token='+token;
this.authentication_object_storage = '{"auth_token": "'+token+'"}'
},
root_url: function(){return ''}
root_url: function(){return 'file:///Users/bterkuile/Documents/workspace/Qwaiter/assets'},
root_url: function(){return ''},
goHome: function(){ window.location = QMobile.root_url() + path_mapping['user_root'] + '.html'}
});
QMobile.setAuthToken('i5brDZ1HS1okoEq3pMyh');
//QMobile.setAuthToken('i5brDZ1HS1okoEq3pMyh');
body class=action_name
.navbar.navbar-fixed-top
+4 -4
View File
@@ -12,10 +12,10 @@ html lang="en"
= javascript_include_tag "http://html5shim.googlecode.com/svn/trunk/html5.js"
= stylesheet_link_tag "supplier/application", :media => "all"
= stylesheet_link_tag "supplier/application", :media => "all"
link href="images/apple-touch-icon-144x144.png" rel="apple-touch-icon-precomposed" sizes="144x144"
link href="images/apple-touch-icon-114x114.png" rel="apple-touch-icon-precomposed" sizes="114x114"
link href="images/apple-touch-icon-72x72.png" rel="apple-touch-icon-precomposed" sizes="72x72"
link href="images/apple-touch-icon.png" rel="apple-touch-icon-precomposed"
link href="/images/apple-touch-icon-144x144.png" rel="apple-touch-icon-precomposed" sizes="144x144"
link href="/images/apple-touch-icon-114x114.png" rel="apple-touch-icon-precomposed" sizes="114x114"
link href="/images/apple-touch-icon-72x72.png" rel="apple-touch-icon-precomposed" sizes="72x72"
link href="/images/apple-touch-icon.png" rel="apple-touch-icon-precomposed"
link href="/favicon.ico" rel="shortcut icon"
body
+4
View File
@@ -12,6 +12,10 @@ dl.dl-horizontal
tr
td colspan=2 = slider_image
tfoot
.form-actions
= link_to t("helpers.links.back"), suppliers_lists_path(date: @list.created_at.strftime('%Y-%m-%d')), class: 'btn'
'
= link_to t('helpers.links.edit'), [:edit, :suppliers, @list], class: 'btn btn-info'
- content_for :footer do
javascript:
jQuery(function(){
+4
View File
@@ -0,0 +1,4 @@
- content_for :footer do
javascript:
QMobile.setAuthToken('#{current_user.authentication_token}');
QMobile.goHome();