From e655e7642cf310189a27fece806dd1ffb0562dd0 Mon Sep 17 00:00:00 2001 From: Matthew Newton Date: Sat, 9 Mar 2024 22:32:19 +0000 Subject: [PATCH 1/2] need to get acctype setting from the user data before using it --- src/rfid.esp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/rfid.esp b/src/rfid.esp index 27da00ab..1bbea63e 100644 --- a/src/rfid.esp +++ b/src/rfid.esp @@ -365,9 +365,8 @@ void rfidProcess() activateRelay[currentRelay] = true; accountTypes[currentRelay] = json["acctype"]; } else { - bool isRelayActive = accountTypes[currentRelay] == ACCESS_GRANTED; - activateRelay[currentRelay] = isRelayActive; accountTypes[currentRelay] = json["acctype" + String(currentRelay + 1)]; + activateRelay[currentRelay] = (accountTypes[currentRelay] == ACCESS_GRANTED); } if (processingState == validAdmin) { From 8c1f85a5de1556dcf037be4f5a0afef3905269d0 Mon Sep 17 00:00:00 2001 From: Matthew Newton Date: Sat, 9 Mar 2024 23:00:39 +0000 Subject: [PATCH 2/2] simplify relay activation code (accountTypes[0] == ACCESS_GRANTED) will always be true if we got this far --- src/rfid.esp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/rfid.esp b/src/rfid.esp index 1bbea63e..5f130b2e 100644 --- a/src/rfid.esp +++ b/src/rfid.esp @@ -357,17 +357,25 @@ void rfidProcess() processingState = notValid; } + /* + * If user is valid and opening hour time is allowed, go through each relay + * in turn to see if it needs to be activated + */ if (processingState == valid || processingState == validAdmin) { for (int currentRelay = 0; currentRelay < config.numRelays; currentRelay++) { + // Get user data JSON access type entry for this relay if (currentRelay == 0) { - activateRelay[currentRelay] = true; accountTypes[currentRelay] = json["acctype"]; } else { accountTypes[currentRelay] = json["acctype" + String(currentRelay + 1)]; - activateRelay[currentRelay] = (accountTypes[currentRelay] == ACCESS_GRANTED); } + + // Enable activation if permissions are correct + activateRelay[currentRelay] = (accountTypes[currentRelay] == ACCESS_GRANTED); + + // ...except Admin, which always activates everything if (processingState == validAdmin) { activateRelay[currentRelay] = true;