Granular Access Level Control

This commit is contained in:
iranl
2024-03-12 21:06:14 +01:00
parent ca483fb173
commit 5497a7a81d
6 changed files with 15 additions and 13 deletions

View File

@@ -497,6 +497,7 @@ LockActionResult NukiOpenerWrapper::onLockActionReceivedCallback(const char *val
if((action == NukiOpener::LockAction::ActivateRTO && nukiOpenerPreferences->getBool(preference_acl_act_rto)) || (action == NukiOpener::LockAction::DeactivateRTO && nukiOpenerPreferences->getBool(preference_acl_deact_rto)) || (action == NukiOpener::LockAction::ElectricStrikeActuation && nukiOpenerPreferences->getBool(preference_acl_act_esa)) || (action == NukiOpener::LockAction::ActivateCM && nukiOpenerPreferences->getBool(preference_acl_act_cm)) || (action == NukiOpener::LockAction::DeactivateCM && nukiOpenerPreferences->getBool(preference_acl_deact_cm)) || (action == NukiOpener::LockAction::FobAction1 && nukiOpenerPreferences->getBool(preference_acl_opn_fob1)) || (action == NukiOpener::LockAction::FobAction2 && nukiOpenerPreferences->getBool(preference_acl_opn_fob2)) || (action == NukiOpener::LockAction::FobAction3 && nukiOpenerPreferences->getBool(preference_acl_opn_fob3)))
{
nukiOpenerPreferences->end();
nukiOpenerInst->_nextLockAction = action;
return LockActionResult::Success;
}
@@ -541,7 +542,7 @@ void NukiOpenerWrapper::gpioActionCallback(const GpioAction &action, const int&
void NukiOpenerWrapper::onConfigUpdateReceived(const char *topic, const char *value)
{
if(!_preferences->getBool(preference_admin_config_enabled)) return;
if(!_preferences->getBool(preference_admin_enabled)) return;
if(strcmp(topic, mqtt_topic_config_button_enabled) == 0)
{

View File

@@ -69,7 +69,7 @@ private:
void printCommandResult(Nuki::CmdResult result);
NukiOpener::LockAction lockActionToEnum(const char* str); // char array at least 14 charactersz
NukiOpener::LockAction lockActionToEnum(const char* str); // char array at least 14 characters
std::string _deviceName;
NukiDeviceId* _deviceId = nullptr;

View File

@@ -67,7 +67,7 @@ void NukiWrapper::initialize(const bool& firstStart)
_preferences->putInt(preference_command_nr_of_retries, 3);
_preferences->putInt(preference_command_retry_delay, 1000);
_preferences->putInt(preference_restart_ble_beacon_lost, 60);
_preferences->putBool(preference_admin_config_enabled, true);
_preferences->putBool(preference_admin_enabled, true);
_preferences->putBool(preference_acl_lock, true);
_preferences->putBool(preference_acl_unlock, true);
_preferences->putBool(preference_acl_unlatch, true);
@@ -487,6 +487,7 @@ LockActionResult NukiWrapper::onLockActionReceivedCallback(const char *value)
if((action == NukiLock::LockAction::Lock && nukiLockPreferences->getBool(preference_acl_lock)) || (action == NukiLock::LockAction::Unlock && nukiLockPreferences->getBool(preference_acl_unlock)) || (action == NukiLock::LockAction::Unlatch && nukiLockPreferences->getBool(preference_acl_unlatch)) || (action == NukiLock::LockAction::LockNgo && nukiLockPreferences->getBool(preference_acl_lockngo)) || (action == NukiLock::LockAction::LockNgoUnlatch && nukiLockPreferences->getBool(preference_acl_lockngo_unlatch)) || (action == NukiLock::LockAction::FullLock && nukiLockPreferences->getBool(preference_acl_fulllock)) || (action == NukiLock::LockAction::FobAction1 && nukiLockPreferences->getBool(preference_acl_lck_fob1)) || (action == NukiLock::LockAction::FobAction2 && nukiLockPreferences->getBool(preference_acl_lck_fob2)) || (action == NukiLock::LockAction::FobAction3 && nukiLockPreferences->getBool(preference_acl_lck_fob3)))
{
nukiLockPreferences->end();
nukiInst->_nextLockAction = action;
return LockActionResult::Success;
}
@@ -528,7 +529,7 @@ void NukiWrapper::gpioActionCallback(const GpioAction &action, const int& pin)
void NukiWrapper::onConfigUpdateReceived(const char *topic, const char *value)
{
if(!_preferences->getBool(preference_admin_config_enabled)) return;
if(!_preferences->getBool(preference_admin_enabled)) return;
if(strcmp(topic, mqtt_topic_config_button_enabled) == 0)
{

View File

@@ -43,7 +43,7 @@
#define preference_query_interval_battery "batInterval"
#define preference_query_interval_keypad "kpInterval"
#define preference_access_level "accLvl"
#define preference_admin_config_enabled "aclConfigEnabled"
#define preference_admin_enabled "aclConfig"
#define preference_keypad_info_enabled "kpInfoEnabled"
#define preference_keypad_control_enabled "kpCntrlEnabled"
#define preference_publish_authdata "pubAuth"
@@ -94,7 +94,7 @@ private:
preference_hostname, preference_network_timeout, preference_restart_on_disconnect,
preference_restart_ble_beacon_lost, preference_query_interval_lockstate,
preference_query_interval_configuration, preference_query_interval_battery, preference_query_interval_keypad,
preference_keypad_control_enabled, preference_admin_config_enabled, preference_keypad_info_enabled, preference_acl_lock,
preference_keypad_control_enabled, preference_admin_enabled, preference_keypad_info_enabled, preference_acl_lock,
preference_acl_unlock, preference_acl_unlatch, preference_acl_lockngo, preference_acl_lockngo_unlatch, preference_acl_fulllock,
preference_acl_lck_fob1, preference_acl_lck_fob2, preference_acl_lck_fob3, preference_acl_act_rto, preference_acl_deact_rto,
preference_acl_act_esa, preference_acl_act_cm, preference_acl_deact_cm, preference_acl_opn_fob1, preference_acl_opn_fob2, preference_acl_opn_fob3,
@@ -112,7 +112,7 @@ private:
std::vector<char*> _boolPrefs =
{
preference_started_before, preference_mqtt_log_enabled, preference_check_updates, preference_lock_enabled, preference_opener_enabled, preference_opener_continuous_mode,
preference_restart_on_disconnect, preference_keypad_control_enabled, preference_admin_config_enabled, preference_keypad_info_enabled, preference_acl_lock,
preference_restart_on_disconnect, preference_keypad_control_enabled, preference_admin_enabled, preference_keypad_info_enabled, preference_acl_lock,
preference_acl_unlock, preference_acl_unlatch, preference_acl_lockngo, preference_acl_lockngo_unlatch, preference_acl_fulllock,
preference_acl_lck_fob1, preference_acl_lck_fob2, preference_acl_lck_fob3, preference_acl_act_rto, preference_acl_deact_rto,
preference_acl_act_esa, preference_acl_act_cm, preference_acl_deact_cm, preference_acl_opn_fob1, preference_acl_opn_fob2, preference_acl_opn_fob3,

View File

@@ -459,9 +459,9 @@ bool WebCfgServer::processArgs(String& message)
_preferences->putInt(preference_restart_ble_beacon_lost, value.toInt());
configChanged = true;
}
else if(key == "ACLCONFIG")
else if(key == "ACLCNF")
{
_preferences->putBool(preference_admin_config_enabled, (value == "1"));
_preferences->putBool(preference_admin_enabled, (value == "1"));
configChanged = true;
}
else if(key == "KPPUB")
@@ -940,7 +940,7 @@ void WebCfgServer::buildAccLvlHtml(String &response)
response.concat("<form method=\"post\" action=\"savecfg\">");
response.concat("<h3>Nuki General Access Control</h3>");
response.concat("<table><tr><th>Setting</th><th>Enabled</th></tr>");
printCheckBox(response, "ACLCONFIG", "Change Nuki configuration", _preferences->getBool(preference_admin_config_enabled));
printCheckBox(response, "ACLCNF", "Change Nuki configuration", _preferences->getBool(preference_admin_enabled));
if((_nuki != nullptr && _nuki->hasKeypad()) || (_nukiOpener != nullptr && _nukiOpener->hasKeypad()))
{
printCheckBox(response, "KPPUB", "Publish keypad codes information", _preferences->getBool(preference_keypad_info_enabled));

View File

@@ -168,7 +168,7 @@ bool initPreferences()
{
case 0:
preferences->putBool(preference_keypad_control_enabled, true);
preferences->putBool(preference_admin_config_enabled, true);
preferences->putBool(preference_admin_enabled, true);
preferences->putBool(preference_acl_lock, true);
preferences->putBool(preference_acl_unlock, true);
preferences->putBool(preference_acl_unlatch, true);
@@ -189,7 +189,7 @@ bool initPreferences()
break;
case 1:
preferences->putBool(preference_keypad_control_enabled, false);
preferences->putBool(preference_admin_config_enabled, false);
preferences->putBool(preference_admin_enabled, false);
preferences->putBool(preference_acl_lock, true);
preferences->putBool(preference_acl_unlock, false);
preferences->putBool(preference_acl_unlatch, false);
@@ -210,7 +210,7 @@ bool initPreferences()
break;
case 3:
preferences->putBool(preference_keypad_control_enabled, false);
preferences->putBool(preference_admin_config_enabled, false);
preferences->putBool(preference_admin_enabled, false);
preferences->putBool(preference_acl_lock, true);
preferences->putBool(preference_acl_unlock, true);
preferences->putBool(preference_acl_unlatch, false);