Added ID validation

This commit is contained in:
Jaculabilis 2018-01-27 17:45:16 -06:00
parent 47e75ecd1a
commit 9e8e03ac25
1 changed files with 16 additions and 9 deletions

View File

@ -3,6 +3,7 @@
import sys import sys
from datetime import datetime from datetime import datetime
import time import time
import json
import RPi.GPIO as IO import RPi.GPIO as IO
import zmq import zmq
@ -51,8 +52,12 @@ def read_loop():
socket = context.socket(zmq.SUB) socket = context.socket(zmq.SUB)
socket.setsockopt(zmq.SUBSCRIBE, "") socket.setsockopt(zmq.SUBSCRIBE, "")
socket.connect(SCANSERVADDRESS) socket.connect(SCANSERVADDRESS)
# TODO: Open the access database # Open the access database
access_raw = open("access.json").read()
try:
access = json.loads(access_raw)
except:
raise SystemExit("Could not load access file!")
# Initialize the PWM pin for opening the door # Initialize the PWM pin for opening the door
pwm_pin = setup_pwm() pwm_pin = setup_pwm()
# Open the log file in append mode # Open the log file in append mode
@ -63,21 +68,23 @@ def read_loop():
while True: while True:
# Read in the ID # Read in the ID
scanned_id = socket.recv() scanned_id = socket.recv()
# TODO: Check if the ID is authorized # Determine ID authorization
authorized = True authorized = id in access and "authorized" in access[id] and access[id]["authorized"]
user = access[id]["user"] if id in access and "user" in access[id] else "unknown id"
# If the user is not authorized, deny access # If the user is not authorized, deny access
if not authorized: if not authorized:
s = timestamped("##### denied\n") s = timestamped("Denied {} ({})\n".format(id, user))
log_file.write(s) log_file.write(s)
print s,
# If the user is authorized, perform the unlock procedure # If the user is authorized, perform the unlock procedure
else: else:
s = timestamped("##### <Username> validated\n") s = timestamped("Validated {} {}\n".format(id, user))
log_file.write(s) log_file.write(s)
print s, print s,
# TODO: Play open tone # TODO: Play open tone
# TODO: Run unlock procedure if "sound" in access[id]:
pass
# Run unlock procedure
unlock_door(pwm_pin) unlock_door(pwm_pin)
if __name__ == "__main__": if __name__ == "__main__":