From f06bfe20301e919bca3c432b2d5de757aafe32b0 Mon Sep 17 00:00:00 2001 From: Jean Jacques Avril Date: Fri, 1 Oct 2021 14:01:34 +0200 Subject: [PATCH] switched to Users lib --- src/Users.cpp | 10 +++++----- src/Users.h | 32 +++++++++++++++++++++----------- src/main.cpp | 41 ++++++++++------------------------------- 3 files changed, 36 insertions(+), 47 deletions(-) diff --git a/src/Users.cpp b/src/Users.cpp index 0c6bace..bb42b79 100644 --- a/src/Users.cpp +++ b/src/Users.cpp @@ -2,8 +2,8 @@ Users::Users(/* args */) { - this->userdb.insert(user_account{.uid = 012345, .first_name = "John", .last_name = "Doe", .rfid_uid = "8C 75 6C 17", .user_pin = "2424"}); - this->userdb.insert(user_account{.uid = 010202, .first_name = "Max", .last_name = "Mustermann and Sons", .rfid_uid = "D3 4E 03 0B", .user_pin = "1212"}); + this->_userdb.insert(user_account{.uid = 012345, .first_name = "John", .last_name = "Doe", .rfid_uid = "8C 75 6C 17", .user_pin = "2424"}); + this->_userdb.insert(user_account{.uid = 010202, .first_name = "Max", .last_name = "Mustermann and Sons", .rfid_uid = "D3 4E 03 0B", .user_pin = "1212"}); } Users::~Users() @@ -11,14 +11,14 @@ Users::~Users() } bool Users::checkPin(String pin_code, std::vector *logon_users) { - std::copy_if(this->userdb.begin(), this->userdb.end(), inserter(*logon_users,logon_users->end()), [=](user_account user) + std::copy_if(this->_userdb.begin(), this->_userdb.end(), inserter(*logon_users,logon_users->end()), [=](user_account user) { return pin_code == user.user_pin; }); return (logon_users->size()>0); } bool Users::checkRfid(String rfid_code, std::vector *logon_users) { - std::copy_if(this->userdb.begin(), this->userdb.end(), inserter(*logon_users,logon_users->end()), [=](user_account user) + std::copy_if(this->_userdb.begin(), this->_userdb.end(), inserter(*logon_users,logon_users->end()), [=](user_account user) { return rfid_code == user.rfid_uid; }); return (logon_users->size()>0); -} \ No newline at end of file +} \ No newline at end of file diff --git a/src/Users.h b/src/Users.h index 51b3c31..99652dc 100644 --- a/src/Users.h +++ b/src/Users.h @@ -4,19 +4,26 @@ #include class Users { -typedef struct User -{ - unsigned long uid; - String first_name; - String last_name; - String rfid_uid; - String user_pin; - bool operator < (const User &o) const { return uid userdb; + std::set _userdb; /* data */ public: @@ -24,4 +31,7 @@ public: ~Users(); bool checkRfid(String rfid_code, std::vector *logon_users); bool checkPin(String pin_code, std::vector *logon_users); + bool addUser(unsingend long id, String first_name, String last_name, String rifd_uid, String user_pin); + bool delUser(unsingend long id); + bool updateUser(unsingend long id, ATTRIBUTES attr, String value); }; \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index c90a7a6..4fa2019 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -16,21 +16,13 @@ Rfid rfid; Keyboard keyboard(200); Interface iface; // Wifi control -IPAddress local_IP(192,168,4,22); -IPAddress gateway(192,168,4,9); -IPAddress subnet(255,255,255,0); +IPAddress local_IP(192, 168, 4, 22); +IPAddress gateway(192, 168, 4, 9); +IPAddress subnet(255, 255, 255, 0); // User DB +Users users; -typedef struct -{ - String uid; - String first_name; - String last_name; - String rfid_uid; - String user_pin; -} user_account; -std::vector userdb; void setup() { Serial.begin(9600); @@ -41,32 +33,19 @@ void setup() keyboard.begin(&Wire); rfid.begin(); iface.begin(&keyboard); - userdb.push_back(user_account{.uid = "010202", .first_name = "Max", .last_name = "Mustermann and Sons", .rfid_uid = "D3 4E 03 0B", .user_pin = "1212"}); - userdb.push_back(user_account{.uid = "012345", .first_name = "John", .last_name = "Doe", .rfid_uid = "8C 75 6C 17", .user_pin = "2424"}); + } void loop() { keyboard.scanAsync(); rfid.scan(); - std::vector logon_users; - if (iface.pinAvailable()) - { - String entered_pin = iface.getPin(); - std::copy_if(userdb.begin(), userdb.end(), std::back_inserter(logon_users), [=](user_account user) - { return entered_pin == user.user_pin; }); - if (logon_users.size() == 0) - iface.showMessage("Login failed!", "-> Pin incorrect",3000); - } - else if (rfid.available()) - { - String rfid_card_uid = rfid.getID(); - std::copy_if(userdb.begin(), userdb.end(), std::back_inserter(logon_users), [=](user_account user) - { return rfid_card_uid == user.rfid_uid; }); - if (logon_users.size() == 0) + std::vector logon_users; + if (iface.pinAvailable() && !users.checkPin(iface.getPin(), &logon_users)) + iface.showMessage("Login failed!", "-> Pin incorrect", 3000); + else if (rfid.available() && !users.checkRfid(rfid.getID(), &logon_users)) iface.showMessage("Login failed!", "-> Unkown Card",3000); - } - if (logon_users.size() > 0) + else if (logon_users.size() > 0) { iface.greetUser(logon_users[0].first_name + " " + logon_users[0].last_name); logon_users.clear();