mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-10-19 20:12:13 +00:00
feat: Lock devices with password set on boot
This commit is contained in:
@@ -68,7 +68,7 @@ Fully autonomous, independent of Auto-lock and of any key combo:
|
|||||||
|
|
||||||
### Lock-screen password
|
### Lock-screen password
|
||||||
|
|
||||||
Enable **LockPass** in **Settings › Display** to require a password when unlocking the device.
|
Enable **LockPass** in **Settings › Display** to require a password when unlocking or powering up the device.
|
||||||
|
|
||||||
Upon enabling the setting the keyboard will show, requiring you to submit a new password.
|
Upon enabling the setting the keyboard will show, requiring you to submit a new password.
|
||||||
Attempting to unlock the device will then require the same password to be typed and submitted to reach the home screen.
|
Attempting to unlock the device will then require the same password to be typed and submitted to reach the home screen.
|
||||||
|
|||||||
@@ -1592,6 +1592,13 @@ void UITask::begin(DisplayDriver* display, SensorManager* sensors, NodePrefs* no
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Lock device on boot if password is enabled to prevent bypassing it by resetting device
|
||||||
|
if (passwordLockEnabled()) {
|
||||||
|
_locked = true;
|
||||||
|
// Add BOOT_SCREEN_MILLIS to make sure splash screen still shows
|
||||||
|
_lock_wake_until = millis() + BOOT_SCREEN_MILLIS + 5000;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(PIN_USER_BTN)
|
#if defined(PIN_USER_BTN)
|
||||||
user_btn.begin();
|
user_btn.begin();
|
||||||
#endif
|
#endif
|
||||||
@@ -2976,12 +2983,17 @@ void UITask::loop() {
|
|||||||
_next_refresh = millis() + delay_millis;
|
_next_refresh = millis() + delay_millis;
|
||||||
} else if (_locked && millis() >= _next_refresh && home) {
|
} else if (_locked && millis() >= _next_refresh && home) {
|
||||||
_display->startFrame();
|
_display->startFrame();
|
||||||
home->render(*_display);
|
if (curr && curr != home) {
|
||||||
|
// Boot splash is still up on a boot-locked device
|
||||||
|
_next_refresh = millis() + curr->render(*_display);
|
||||||
|
} else {
|
||||||
|
home->render(*_display);
|
||||||
|
_next_refresh = millis() + Features::LOCKSCREEN_REFRESH_MS;
|
||||||
|
}
|
||||||
// Alert overlay on top — without this a ringing alarm on a locked device
|
// Alert overlay on top — without this a ringing alarm on a locked device
|
||||||
// played its melody against a screen that never said what was ringing.
|
// played its melody against a screen that never said what was ringing.
|
||||||
if (millis() < _alert_expiry) renderAlertOverlay();
|
if (millis() < _alert_expiry) renderAlertOverlay();
|
||||||
_display->endFrame();
|
_display->endFrame();
|
||||||
_next_refresh = millis() + Features::LOCKSCREEN_REFRESH_MS;
|
|
||||||
} else if (!_locked && millis() >= _next_refresh && curr) {
|
} else if (!_locked && millis() >= _next_refresh && curr) {
|
||||||
_display->startFrame();
|
_display->startFrame();
|
||||||
_kb.beginFrame();
|
_kb.beginFrame();
|
||||||
|
|||||||
Reference in New Issue
Block a user