From ef590793f21ad10bcdc24390b27ff0b6002ec333 Mon Sep 17 00:00:00 2001 From: Will Bradley Date: Tue, 3 Dec 2013 01:42:08 -0700 Subject: [PATCH] Card upload would fail due to being logged out halfway thru; changed arduino auth mechanism --- app/models/card.rb | 50 ++++++++++++++-------------------------------- 1 file changed, 15 insertions(+), 35 deletions(-) diff --git a/app/models/card.rb b/app/models/card.rb index 700cb3b..de67177 100644 --- a/app/models/card.rb +++ b/app/models/card.rb @@ -11,21 +11,14 @@ class Card < ActiveRecord::Base door_access_url = APP_CONFIG['door_access_url'] door_access_password = APP_CONFIG['door_access_password'] - # connect to door access system - source = open("#{door_access_url}?e=#{door_access_password}").read - results = source.scan(/ok/) - if(results.size > 0) then - #only continue if we've got an OK login - cardid = self.id.to_s.rjust(3, '0') #TODO: provide ability for + cardid = self.id.to_s.rjust(3, '0') cardperm = self.card_permissions.to_s.rjust(3, '0') cardnum = self.card_number.rjust(8, '0') - source = open("#{door_access_url}?m#{cardid}&p#{cardperm}&t#{cardnum}").read + # login and send the command all in one go (auto-logout is a feature of the arduino when used this way) + source = open("#{door_access_url}?m#{cardid}&p#{cardperm}&t#{cardnum}&e=#{door_access_password}").read results = source.scan(/cur/) - #logout - open("#{door_access_url}?e=0000") - if(results.size > 0) then #only return true if we got some kind of decent response return true @@ -33,10 +26,6 @@ class Card < ActiveRecord::Base # We didn't get a decent response. return false end - else - # We didn't get an OK login. - return false - end end def self.upload_all_to_door @@ -47,30 +36,21 @@ class Card < ActiveRecord::Base door_access_url = APP_CONFIG['door_access_url'] door_access_password = APP_CONFIG['door_access_password'] - source = open("#{door_access_url}?e=#{door_access_password}").read - results = source.scan(/ok/) - if(results.size > 0) then - @cards.each do |u| - #only continue if we've got an OK login - cardid = u.id.to_s.rjust(3, '0') - cardperm = u.card_permissions.to_s.rjust(3, '0') - cardnum = u.card_number.rjust(8, '0') + @cards.each do |u| + cardid = u.id.to_s.rjust(3, '0') + cardperm = u.card_permissions.to_s.rjust(3, '0') + cardnum = u.card_number.rjust(8, '0') - source = open("#{door_access_url}?m#{cardid}&p#{cardperm}&t#{cardnum}").read - results = source.scan(/cur/) + # login and send the command all in one go (auto-logout is a feature of the arduino when used this way) + source = open("#{door_access_url}?m#{cardid}&p#{cardperm}&t#{cardnum}&e=#{door_access_password}").read + results = source.scan(/cur/) - if(results.size > 0) then - #only return true if we got some kind of decent response - @end_results.push([cardid,"OK"]) - else - @end_results.push([cardid,"FAIL"]) - end + if(results.size > 0) then + #only return true if we got some kind of decent response + @end_results.push([cardid,"OK"]) + else + @end_results.push([cardid,"FAIL"]) end - - #logout - open("#{door_access_url}?e=0000") - else - @end_results.push([cardid,"FAIL"]) end return @end_results