Misc auth fixes
[uccvend-vendserver.git] / VendServer / VendServer.py
index 3ac2b81..aee2305 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/python
-# vim:ts=4
+# vim: ts=4 sts=4 sw=4 noexpandtab
 
 USE_MIFARE = 1
 
@@ -370,7 +370,7 @@ class VendServer():
                                self.vstatus.cur_pin = ''
                                self.vstatus.cur_user = ''
                                self.vstatus.cur_selection = ''
-                               _last_card_id = -1
+                               self._last_card_id = -1
                                self.vstatus.mk.set_messages([(self.center('BYE!'), False, 1.5)])
                                self.reset_idler(2)
                                return
@@ -385,7 +385,7 @@ class VendServer():
                                return
                        else:
                                self.vstatus.cur_selection += chr(key + ord('0'))
-                               if self.vstatus.cur_user:
+                               if self.dispense.isLoggedIn():
                                        self.make_selection()
                                        self.vstatus.cur_selection = ''
                                        self.vstatus.time_to_autologout = time() + 8
@@ -405,6 +405,7 @@ class VendServer():
        Triggered when the user has entered the id of something they would like to purchase.
        """
        def make_selection(self):
+               logging.debug('Dispense item "%s"' % (self.vstatus.cur_selection,))
                # should use sudo here
                if self.vstatus.cur_selection == '55':
                        self.vstatus.mk.set_message('OPENSESAME')
@@ -479,8 +480,8 @@ class VendServer():
                        self.vstatus.cur_pin += chr(key + ord('0'))
                        self.vstatus.mk.set_message('PIN: '+'X'*len(self.vstatus.cur_pin))
                        if len(self.vstatus.cur_pin) == PIN_LENGTH:
-                               self.dispense.authUserIdPin(self.vstatus.cur_user, self.vstatus.cur_pin)
-                               if self.dispense.getUsername():
+                               if self.dispense.authUserIdPin(self.vstatus.cur_user, self.vstatus.cur_pin):
+                                       self.vstatus.username = self.dispense.getUsername()
                                        self.v.beep(0, False)
                                        self.vstatus.cur_selection = ''
                                        self.vstatus.change_state(STATE_GET_SELECTION)
@@ -596,6 +597,7 @@ class VendServer():
                key = params
                if key == 11:
                        self.vstatus.cur_user = ''
+                       self.dispense.logOut()
                        self.reset_idler()
                        return
                
@@ -760,6 +762,7 @@ class VendServer():
                        logging.warning("Entering open door mode")
                        self.v.display("-FEED  ME-")
                        #door_open_mode(v);
+                       self.dispense.logOut()
                        self.vstatus.cur_user = ''
                        self.vstatus.cur_pin = ''
                elif params == 1:  #door closed
@@ -780,9 +783,7 @@ class VendServer():
 
                self._last_card_id = card_id
                
-               self.dispense.authMifareCard(card_id)
-               logging.info('Mapped card id to uid %s'%self.dispense.getUsername())
-               if not self.dispense.isLoggedIn():
+               if not self.dispense.authMifareCard(card_id):
                        self.v.beep(40, False)
                        self.vstatus.mk.set_messages(
                                [(self.center('BAD CARD'), False, 1.0),
@@ -794,6 +795,7 @@ class VendServer():
                        self.reset_idler(2)
                        return
                elif self.dispense.isDisabled():
+                       logging.info('Mapped card id to uid %s'%self.dispense.getUsername())
                        self.v.beep(40, False)
                        self.vstatus.mk.set_messages(
                                [(self.center('ACCT DISABLED'), False, 1.0),
@@ -802,6 +804,9 @@ class VendServer():
                        self.reset_idler(2)
                        return
                else:
+                       logging.info('Mapped card id to uid %s'%self.dispense.getUsername())
+                       self.vstatus.cur_user = '----'
+                       self.vstatus.username = self.dispense.getUsername()
                        self.vstatus.cur_selection = ''
                        self.vstatus.change_state(STATE_GET_SELECTION)
                        self.scroll_options(self.vstatus.username, self.vstatus.mk, True)

UCC git Repository :: git.ucc.asn.au