Granular Access Level Control
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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));
|
||||
|
||||
6
main.cpp
6
main.cpp
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user