switched to Users lib
This commit is contained in:
		
							parent
							
								
									a46725cf03
								
							
						
					
					
						commit
						f06bfe2030
					
				| @ -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<Users::User> *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<Users::User> *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); | ||||
| } | ||||
| }   | ||||
							
								
								
									
										32
									
								
								src/Users.h
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								src/Users.h
									
									
									
									
									
								
							| @ -4,19 +4,26 @@ | ||||
| #include <vector> | ||||
| 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 <o.uid; } | ||||
|     bool operator == (const User &o) const { return uid ==o.uid; } | ||||
| } user_account; | ||||
| public: | ||||
|     enum ATTRIBUTES{ | ||||
|         FIRST_NAME, | ||||
|         LAST_NAME, | ||||
|         RFID_UID, | ||||
|         USER_PIN | ||||
|     }; | ||||
|     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 <o.uid; } | ||||
|         bool operator == (const User &o) const { return uid ==o.uid; } | ||||
|     } user_account; | ||||
| 
 | ||||
| private: | ||||
|     std::set<User> userdb; | ||||
|     std::set<User> _userdb; | ||||
| 
 | ||||
|     /* data */ | ||||
| public: | ||||
| @ -24,4 +31,7 @@ public: | ||||
|     ~Users(); | ||||
|     bool checkRfid(String rfid_code, std::vector<Users::User> *logon_users); | ||||
|     bool checkPin(String pin_code, std::vector<Users::User> *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); | ||||
| }; | ||||
							
								
								
									
										41
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								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<user_account> 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<user_account> 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<Users::User> 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(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user