diff --git a/kdoorweb/kdoorweb/db.py b/kdoorweb/kdoorweb/db.py index 4d94acc..70f3903 100644 --- a/kdoorweb/kdoorweb/db.py +++ b/kdoorweb/kdoorweb/db.py @@ -145,6 +145,9 @@ class DB: ) return cur.fetchone() + def add_keycard(self, user_id, card_uid, name): + self.add_keycards([(user_id, card_uid, name)]) + def add_keycards(self, keycards): self.db.executemany(""" insert into keycards(user_id, card_uid, name) @@ -156,6 +159,24 @@ class DB: cur = self.db.execute("select id, name, created, disabled from keycards where user_id = ?", (user_id,)) return cur.fetchall() + def list_all_keycards(self): + cur = self.db.execute(""" + select + users.id as user_id, + users.user as user, + users.full_name as full_name, + k.id as card_id, + k.card_uid as card_uid + from users + join + keycards k on users.id = k.user_id + where + (users.disabled = 0 or users.disabled is null) + and + (k.disabled is 0 or k.disabled is null) + """) + return cur.fetchall() + @staticmethod def import_ad(json_file): with open(json_file) as fp: diff --git a/kdoorweb/kdoorweb/web.py b/kdoorweb/kdoorweb/web.py index 0e816e5..9e0a6cc 100644 --- a/kdoorweb/kdoorweb/web.py +++ b/kdoorweb/kdoorweb/web.py @@ -152,3 +152,9 @@ def log(db): @view("doors.html") def doors(db): return {"doors":[]} + + +# FIXME: Add door api auth +@app.route("/api/v1/cards", skip=[check_auth]) +def api_list_cards(db): + return {"keycards":[dict(card) for card in db.list_all_keycards()]}