basic authentication stuff
This commit is contained in:
@@ -1,6 +1,18 @@
|
|||||||
|
#FB.init appId: '168928633304849'
|
||||||
|
|
||||||
|
#Ember.Application.initializer
|
||||||
|
#name: 'authentication',
|
||||||
|
#initialize: (container, application)->
|
||||||
|
## register the Facebook authenticator so the session can find it
|
||||||
|
#container.register 'authenticators:facebook', App.FacebookAuthenticator
|
||||||
|
#Ember.SimpleAuth.setup(container, application)
|
||||||
|
|
||||||
@App = Ember.Application.create
|
@App = Ember.Application.create
|
||||||
LOG_TRANSITIONS: true
|
LOG_TRANSITIONS: true
|
||||||
rootElement: '#ember-app-container'
|
rootElement: '#ember-app-container'
|
||||||
|
obtain_token: (message)->
|
||||||
|
message ||= ''
|
||||||
|
window.location = "#{$root_url}/obtain_token?message=#{message}"
|
||||||
|
|
||||||
Ember.$.ajaxPrefilter (options) ->
|
Ember.$.ajaxPrefilter (options) ->
|
||||||
if options.type.toUpperCase() == 'GET'
|
if options.type.toUpperCase() == 'GET'
|
||||||
|
|||||||
@@ -14,6 +14,10 @@ App.ProductOrdersController = Ember.ArrayController.extend
|
|||||||
order = @store.createRecord('order', list: list, table: table)
|
order = @store.createRecord('order', list: list, table: table)
|
||||||
new_product_orders = @store.all('product_order').filterProperty('order', null)
|
new_product_orders = @store.all('product_order').filterProperty('order', null)
|
||||||
order.get('product_orders').pushObjects(new_product_orders)
|
order.get('product_orders').pushObjects(new_product_orders)
|
||||||
|
#error = @ajaxError (jqXHR)=>
|
||||||
|
#new_product_orders.invoke 'eraseRecord'
|
||||||
|
#@redirect_to 'index', message: 'order_could_not_be_processed'
|
||||||
|
|
||||||
order.save().then (response)=>
|
order.save().then (response)=>
|
||||||
new_product_orders.invoke 'eraseRecord'
|
new_product_orders.invoke 'eraseRecord'
|
||||||
if @get('controllers.application.list')
|
if @get('controllers.application.list')
|
||||||
@@ -22,10 +26,10 @@ App.ProductOrdersController = Ember.ArrayController.extend
|
|||||||
# Get list info from the server
|
# Get list info from the server
|
||||||
@get('controllers.application').setCurrentList ->
|
@get('controllers.application').setCurrentList ->
|
||||||
@transitionToRoute 'active_list'
|
@transitionToRoute 'active_list'
|
||||||
, (jqXHR)=>
|
, @ajaxError (jqXHR)=>
|
||||||
|
debugger
|
||||||
new_product_orders.invoke 'eraseRecord'
|
new_product_orders.invoke 'eraseRecord'
|
||||||
@redirect_to 'index', message: 'order_could_not_be_processed'
|
@redirect_to 'index', message: 'order_could_not_be_processed'
|
||||||
|
|
||||||
#orders = @store.all('product_order').toArray()
|
#orders = @store.all('product_order').toArray()
|
||||||
#data = orders.map( (order)->order.serialize() )
|
#data = orders.map( (order)->order.serialize() )
|
||||||
#dataObject = {order: {}}
|
#dataObject = {order: {}}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ App.SelectQrcodeController = Ember.Controller.extend
|
|||||||
selectQr: (table)->
|
selectQr: (table)->
|
||||||
Qstorage.setItem 'table_id', table._id
|
Qstorage.setItem 'table_id', table._id
|
||||||
@secured ->
|
@secured ->
|
||||||
$.getJSON(data_host + '/user/table_info.json?'+@authentication_string+'&table_id='+table._id).then (res)=>
|
$.getJSON($data_host + '/user/table_info.json?'+@authentication_string+'&table_id='+table._id).then (res)=>
|
||||||
if res.current_table_id
|
if res.current_table_id
|
||||||
if res.other_supplier
|
if res.other_supplier
|
||||||
@redirect_to 'user_root', message: 'table_is_from_other_supplier'
|
@redirect_to 'user_root', message: 'table_is_from_other_supplier'
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ App.TableController = Ember.ObjectController.extend
|
|||||||
@store.createRecord 'product_order', product: product
|
@store.createRecord 'product_order', product: product
|
||||||
joinOccupiedTable: ->
|
joinOccupiedTable: ->
|
||||||
#@secured =>
|
#@secured =>
|
||||||
$.post('/user/join_occupied_table.json', table_id: @get('model.id'))
|
Ember.$.post('/user/join_occupied_table.json', table_id: @get('model.id'))
|
||||||
@set 'join_request_sent', true # keeps the button deactivated
|
@set 'join_request_sent', true # keeps the button deactivated
|
||||||
toggleProductCategory: (product_category)->
|
toggleProductCategory: (product_category)->
|
||||||
product_category.set 'collapsed', not product_category.get('collapsed')
|
product_category.set 'collapsed', not product_category.get('collapsed')
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
|
ControllerExtensions = Ember.Mixin.create
|
||||||
|
ajaxError: (callback)->
|
||||||
|
handler = (jqXHR, textStatus, errorThrown)=>
|
||||||
|
console.log "Error: #{textStatus}: #{errorThrown}"
|
||||||
|
callback.call(@, jqXHR)
|
||||||
|
if jqXHR.status == 401
|
||||||
|
App.__container__.lookup('route:application').unauthorized()
|
||||||
|
handler
|
||||||
|
Ember.ArrayController.reopen ControllerExtensions
|
||||||
Ember.Controller.reopen
|
Ember.Controller.reopen
|
||||||
needs: ['application']
|
needs: ['application']
|
||||||
secured: (callback)->
|
secured: (callback)->
|
||||||
unless Qstorage.getItem('auth_token') && typeof(Qstorage.getItem('auth_token')) == 'string' && Qstorage.getItem('auth_token').length > 0
|
unless Qstorage.getItem('auth_token') && typeof(Qstorage.getItem('auth_token')) == 'string' && Qstorage.getItem('auth_token').length > 0
|
||||||
return @transitionToRoute('obtain_token')
|
return App.obtain_token()
|
||||||
@authentication_string = 'auth_token='+Qstorage.getItem('auth_token')
|
@authentication_string = 'auth_token='+Qstorage.getItem('auth_token')
|
||||||
@authentication_object = {auth_token: Qstorage.getItem('auth_token')}
|
@authentication_object = {auth_token: Qstorage.getItem('auth_token')}
|
||||||
callback.call(@) if callback
|
callback.call(@) if callback
|
||||||
@@ -52,7 +61,7 @@ Ember.ArrayController.reopen
|
|||||||
needs: ['application']
|
needs: ['application']
|
||||||
secured: (callback)->
|
secured: (callback)->
|
||||||
unless Qstorage.getItem('auth_token') && typeof(Qstorage.getItem('auth_token')) == 'string' && Qstorage.getItem('auth_token').length > 0
|
unless Qstorage.getItem('auth_token') && typeof(Qstorage.getItem('auth_token')) == 'string' && Qstorage.getItem('auth_token').length > 0
|
||||||
return @transitionToRoute('obtain_token')
|
return App.obtain_token()
|
||||||
@authentication_string = 'auth_token='+Qstorage.getItem('auth_token')
|
@authentication_string = 'auth_token='+Qstorage.getItem('auth_token')
|
||||||
@authentication_object = {auth_token: Qstorage.getItem('auth_token')}
|
@authentication_object = {auth_token: Qstorage.getItem('auth_token')}
|
||||||
callback.call(@) if callback
|
callback.call(@) if callback
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ App.Router.reopen
|
|||||||
|
|
||||||
App.Router.map ->
|
App.Router.map ->
|
||||||
@route 'select_qrcode'
|
@route 'select_qrcode'
|
||||||
@route 'obtain_token'
|
#@route 'obtain_token'
|
||||||
@route 'active_list'
|
@route 'active_list'
|
||||||
@route 'table', path: '/tables/:table_id'
|
@route 'table', path: '/tables/:table_id'
|
||||||
@resource 'join_requests'
|
@resource 'join_requests'
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
App.ApplicationRoute = Ember.Route.extend
|
App.ApplicationRoute = Ember.Route.extend
|
||||||
setupController: (controller)->
|
setupController: (controller)->
|
||||||
#@controllerFor('product_orders').set 'model', @store.filter('product_order', (po)-> !po.get('order')) # does not work (yet)
|
#@controllerFor('product_orders').set 'model', @store.filter('product_order', (po)-> !po.get('order')) # does not work (yet)
|
||||||
|
debugger
|
||||||
@controllerFor('product_orders').set 'model', @store.filter('product_order', (po)-> !po.get('id'))
|
@controllerFor('product_orders').set 'model', @store.filter('product_order', (po)-> !po.get('id'))
|
||||||
controller.secured ->
|
controller.secured ->
|
||||||
faye = new Faye.Client(event_host)
|
faye = new Faye.Client($event_host)
|
||||||
user_id = Qstorage.getItem('user_id')
|
user_id = Qstorage.getItem('user_id')
|
||||||
faye.subscribe "/user/"+user_id, (e)=>
|
faye.subscribe "/user/"+user_id, (e)=>
|
||||||
console.log e
|
console.log e
|
||||||
@@ -13,8 +14,7 @@ App.ApplicationRoute = Ember.Route.extend
|
|||||||
unauthorized: ->
|
unauthorized: ->
|
||||||
Qstorage.setItem('auth_token', '')
|
Qstorage.setItem('auth_token', '')
|
||||||
@controllerFor('application').set 'list', null
|
@controllerFor('application').set 'list', null
|
||||||
@transitionTo('obtain_token').then =>
|
App.obtain_token(t('messages.unauthorized'))
|
||||||
@controllerFor('application').set('notice', t('messages.unauthorized'))
|
|
||||||
actions:
|
actions:
|
||||||
openModal: (modalName, model)->
|
openModal: (modalName, model)->
|
||||||
@controllerFor(modalName).set('model', model)
|
@controllerFor(modalName).set('model', model)
|
||||||
@@ -33,12 +33,14 @@ App.ApplicationRoute = Ember.Route.extend
|
|||||||
ok: options.ok
|
ok: options.ok
|
||||||
listNeedsPayment: ->
|
listNeedsPayment: ->
|
||||||
@get('controller').secured ->
|
@get('controller').secured ->
|
||||||
$.post(data_host + '/user/list_needs_payment.json', @authentication_object).then (res) =>
|
Ember.$.post '/user/list_needs_payment.json'
|
||||||
@set('list.needs_payment', true)
|
#Ember.$.post('/user/list_needs_payment.json').then (res) =>
|
||||||
|
#@set('list.needs_payment', true) # also done by faye
|
||||||
listNeedsHelp: ->
|
listNeedsHelp: ->
|
||||||
@get('controller').secured ->
|
@get('controller').secured ->
|
||||||
$.post(data_host + '/user/needs_help.json', @authentication_object).then (res) =>
|
Ember.$.post '/user/needs_help.json'
|
||||||
@set('list.needs_help', true)
|
#Ember.$.post('/user/needs_help.json').then (res) =>
|
||||||
|
#@set('list.needs_help', true) # also done by faye
|
||||||
scanQr: ->
|
scanQr: ->
|
||||||
@transitionTo 'select_qrcode'
|
@transitionTo 'select_qrcode'
|
||||||
events: ->
|
events: ->
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
@import foundation_and_overrides
|
||||||
|
|
||||||
|
.form-row
|
||||||
|
@extend .row
|
||||||
|
.form-label
|
||||||
|
@media #{$small-only}
|
||||||
|
+grid-column($columns:10, $center:true)
|
||||||
|
@media #{$medium-only}
|
||||||
|
+grid-column($columns:4, $offset:1)
|
||||||
|
@media #{$large-up}
|
||||||
|
+grid-column(3)
|
||||||
|
.form-field
|
||||||
|
@media #{$small-only}
|
||||||
|
+grid-column($columns:10, $center:true, $last-column:true)
|
||||||
|
@media #{$medium-only}
|
||||||
|
+grid-column($columns:4, $last-column:true)
|
||||||
|
@media #{$large-up}
|
||||||
|
+grid-column($columns: 3, $last-column:true)
|
||||||
@@ -267,6 +267,23 @@ class UserController < Users::ApplicationController
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def obtain_token
|
||||||
|
redirect_to user_omniauth_authorize_path('facebook') and return unless current_user.present?
|
||||||
|
respond_to do |format|
|
||||||
|
format.html { render layout: 'user/obtain_token' }
|
||||||
|
format.json do
|
||||||
|
render json: json_response(ok: false, status: 401) and return unless params[:user].present? && params[:user][:email].present? && params[:user][:password].present?
|
||||||
|
user = User.find_by_email(params[:user][:email])
|
||||||
|
render json: json_response(ok: false, status: 401) and return unless user
|
||||||
|
render json: json_response(ok: false, status: 401) and return unless user.valid_password?(params[:user][:password])
|
||||||
|
user.ensure_authentication_token
|
||||||
|
sign_in user
|
||||||
|
render json: json_response(ok: true, auth_token: user.authentication_token, user_id: user.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def move_table
|
def move_table
|
||||||
render json: json_alert('messages.no_active_list', list_active: false) and return unless list.present?
|
render json: json_alert('messages.no_active_list', list_active: false) and return unless list.present?
|
||||||
render json: json_alert('messages.table_not_found') and return unless params[:table_id].present?
|
render json: json_alert('messages.table_not_found') and return unless params[:table_id].present?
|
||||||
|
|||||||
@@ -20,23 +20,6 @@ module Users
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def obtain_token
|
|
||||||
redirect_to user_omniauth_authorize_path('facebook') and return unless current_user.present?
|
|
||||||
respond_to do |format|
|
|
||||||
format.html
|
|
||||||
format.json do
|
|
||||||
render json: json_response(ok: false, status: 401) and return unless params[:user].present? && params[:user][:email].present? && params[:user][:password].present?
|
|
||||||
user = User.find_by_email(params[:user][:email])
|
|
||||||
render json: json_response(ok: false, status: 401) and return unless user
|
|
||||||
render json: json_response(ok: false, status: 401) and return unless user.valid_password?(params[:user][:password])
|
|
||||||
user.ensure_authentication_token
|
|
||||||
sign_in user
|
|
||||||
render json: json_response(ok: true, auth_token: user.authentication_token, user_id: user.id)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def handle_message_params
|
def handle_message_params
|
||||||
flash.now[:notice] = t('messages.the_list_has_been_closed', list: List.model_name.human) if params[:list_closed].present?
|
flash.now[:notice] = t('messages.the_list_has_been_closed', list: List.model_name.human) if params[:list_closed].present?
|
||||||
flash.now[:notice] = t("messages.#{params[:message]}", list: List.model_name.human, supplier: Supplier.model_name.human) if params[:message].present? && params[:message] =~ /^\w+$/
|
flash.now[:notice] = t("messages.#{params[:message]}", list: List.model_name.human, supplier: Supplier.model_name.human) if params[:message].present? && params[:message] =~ /^\w+$/
|
||||||
|
|||||||
@@ -24,8 +24,16 @@ module ApplicationHelper
|
|||||||
|
|
||||||
def user_dynamic_data_host
|
def user_dynamic_data_host
|
||||||
case Rails.env
|
case Rails.env
|
||||||
when 'test' then "data_host = 'http://#{request.host}:#{request.port}';".html_safe
|
when 'test' then "$data_host = data_host = 'http://#{request.host}:#{request.port}';".html_safe
|
||||||
when 'development' then "data_host = 'http://localhost:3000';".html_safe
|
when 'development' then "$data_host = data_host = 'http://localhost:3000';".html_safe
|
||||||
|
else ''
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def user_dynamic_root_url
|
||||||
|
case Rails.env
|
||||||
|
when 'test' then "$root_url = 'http://#{request.host}:#{request.port}/user';".html_safe
|
||||||
|
when 'development' then "$root_url = 'http://localhost:3000/user';".html_safe
|
||||||
else ''
|
else ''
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -7,22 +7,24 @@ html lang="en"
|
|||||||
title Qwaiter
|
title Qwaiter
|
||||||
= stylesheet_link_tag "user/foundation/application"
|
= stylesheet_link_tag "user/foundation/application"
|
||||||
= javascript_include_tag "vendor/modernizr"
|
= javascript_include_tag "vendor/modernizr"
|
||||||
|
/= javascript_include_tag 'http://connect.facebook.net/en_US/all.js'
|
||||||
= javascript_include_tag "user/flat/application"
|
= javascript_include_tag "user/flat/application"
|
||||||
- if ENV['QWAITER_MOBILE_EXPORT'] == 'yes'
|
- if ENV['QWAITER_MOBILE_EXPORT'] == 'yes'
|
||||||
javascript:
|
javascript:
|
||||||
var QMobile, Qwaiter, Quser;
|
var QMobile, Qwaiter, Quser;
|
||||||
var data_host = 'http://data.qwaiter.com';
|
var $data_host = 'http://data.qwaiter.com';
|
||||||
var event_host = '#{Qwaiter.event_host}';
|
var $event_host = '#{Qwaiter.event_host}';
|
||||||
var $asset_path = '##assets_path##';
|
var $asset_path = '##assets_path##';
|
||||||
var Qstorage = localStorage;
|
var Qstorage = localStorage;
|
||||||
|
var $root_url = 'http://www.qwaiter.com/user';
|
||||||
- else
|
- else
|
||||||
javascript:
|
javascript:
|
||||||
var QMobile, Qwaiter, Quser;
|
var QMobile, Qwaiter, Quser;
|
||||||
var data_host = 'http://data.qwaiter.com';
|
var $event_host = '#{Qwaiter.event_host}';
|
||||||
var event_host = '#{Qwaiter.event_host}';
|
|
||||||
var $asset_path = '/assets/';
|
var $asset_path = '/assets/';
|
||||||
var Qstorage = localStorage;
|
var Qstorage = localStorage;
|
||||||
#{user_dynamic_data_host}
|
#{user_dynamic_data_host};
|
||||||
|
#{user_dynamic_root_url};
|
||||||
QMobile || (QMobile = {
|
QMobile || (QMobile = {
|
||||||
scanQr: function(){window.location = '/select_qrcode'},
|
scanQr: function(){window.location = '/select_qrcode'},
|
||||||
activateRotation: function(){},
|
activateRotation: function(){},
|
||||||
@@ -35,7 +37,7 @@ html lang="en"
|
|||||||
this.authentication_object_storage = '{"auth_token": "'+token+'"}'
|
this.authentication_object_storage = '{"auth_token": "'+token+'"}'
|
||||||
},
|
},
|
||||||
root_url: function(){return 'file:///Users/bterkuile/Documents/workspace/Qwaiter/assets/user'},
|
root_url: function(){return 'file:///Users/bterkuile/Documents/workspace/Qwaiter/assets/user'},
|
||||||
root_url: function(){return '/user'},
|
$root_url: function(){return '/user'},
|
||||||
goHome: function(){ redirect_to('user_root')},
|
goHome: function(){ redirect_to('user_root')},
|
||||||
connection_problem: function(){alert('There is a problem connecting to the server')},
|
connection_problem: function(){alert('There is a problem connecting to the server')},
|
||||||
token: function(){return this.auth_token},
|
token: function(){return this.auth_token},
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
doctype html
|
||||||
|
html lang="en"
|
||||||
|
head
|
||||||
|
meta charset="utf-8"
|
||||||
|
meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"
|
||||||
|
meta name="viewport" content="width=device-width, initial-scale=1.0"
|
||||||
|
title Qwaiter
|
||||||
|
= stylesheet_link_tag "user/foundation/application"
|
||||||
|
= javascript_include_tag "vendor/modernizr"
|
||||||
|
javascript:
|
||||||
|
var Qstorage = localStorage;
|
||||||
|
body
|
||||||
|
= yield
|
||||||
@@ -1,20 +1,21 @@
|
|||||||
= top_bar title: 'obtain_token.title' do
|
.row
|
||||||
span
|
h1 data-t='obtain_token.title' = t('user.obtain_token.title')
|
||||||
|
hr
|
||||||
.well
|
form
|
||||||
.alert.alert-warming.user-alert.hide
|
.form-row
|
||||||
form.form-horizontal
|
.form-label
|
||||||
.control-group
|
label.control-label data-t='attributes.user.email' = User.human_attribute_name(:email)
|
||||||
label.control-label data-t='attributes.user.email' Email
|
.form-field
|
||||||
.controls
|
input#user-email.email type="email" placeholder=User.human_attribute_name(:email)
|
||||||
input#user-email.email type="email" placeholder="Email"
|
.form-row
|
||||||
.control-group
|
.form-label
|
||||||
label.control-label data-t='attributes.user.password' Password
|
label.control-label data-t='attributes.user.password' Password
|
||||||
.controls
|
.form-field
|
||||||
input#user-password.password type="password" placeholder="Password"
|
input#user-password.password type="password" placeholder="Password"
|
||||||
.control-group
|
.form-row
|
||||||
.controls
|
.form-label
|
||||||
button.btn.btn-primary data-t="obtain_token.obtain" onclick="Quser.authenticate_user(); return false"
|
.form-field
|
||||||
|
button.btn.btn-primary data-t="obtain_token.obtain" onclick="Quser.authenticate_user(); return false" = t('user.obtain_token.obtain')
|
||||||
- unless current_user.blank? || ENV['QWAITER_MOBILE_EXPORT']=='yes'
|
- unless current_user.blank? || ENV['QWAITER_MOBILE_EXPORT']=='yes'
|
||||||
javascript:
|
javascript:
|
||||||
Qstorage.setItem('auth_token', '#{current_user.authentication_token}');
|
Qstorage.setItem('auth_token', '#{current_user.authentication_token}');
|
||||||
|
|||||||
@@ -58,4 +58,5 @@ en:
|
|||||||
from_number: From number
|
from_number: From number
|
||||||
to_number: To number
|
to_number: To number
|
||||||
created_at: Created
|
created_at: Created
|
||||||
|
user:
|
||||||
|
email: 'E-mail'
|
||||||
|
|||||||
@@ -59,3 +59,5 @@ nl:
|
|||||||
from_number: Vanaf nummer
|
from_number: Vanaf nummer
|
||||||
to_number: Tot nummer
|
to_number: Tot nummer
|
||||||
created_at: Aangemaakt
|
created_at: Aangemaakt
|
||||||
|
user:
|
||||||
|
email: 'E-mail'
|
||||||
|
|||||||
Reference in New Issue
Block a user