// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "service-desktop/USBSecurityModel.hpp" #include "Service/Service.hpp" #include "service-desktop/DesktopMessages.hpp" #include "service-desktop/WorkerDesktop.hpp" #include #include namespace sdesktop { USBSecurityModel::USBSecurityModel(sys::Service *ownerSrv, settings::Settings *srvSettings) { settings = srvSettings; phoneLocked = PhoneLockState::Locked; } auto USBSecurityModel::isPasscodeEnabled() const -> bool { return utils::getNumericValue( settings->getValue(settings::SystemProperties::lockScreenPasscodeIsOn, settings::SettingsScope::Global)); } auto USBSecurityModel::setPhoneLocked() -> void { phoneLocked = PhoneLockState::Locked; } auto USBSecurityModel::setPhoneUnlocked() -> void { phoneLocked = PhoneLockState::Unlocked; } auto USBSecurityModel::isPhoneLocked() const -> bool { return phoneLocked == PhoneLockState::Locked; } auto USBSecurityModel::isSecurityEnabled() const -> bool { return isPasscodeEnabled() && isPhoneLocked(); } auto USBSecurityModel::isEulaAccepted() const -> bool { return utils::getNumericValue( settings->getValue(settings::SystemProperties::eulaAccepted, settings::SettingsScope::Global)); } auto USBSecurityModel::getEndpointSecurity() const -> endpointSecurity_t { if (!isEulaAccepted()) { return {EndpointSecurity::Block, BlockReason::EulaNotAccepted}; } else if (isSecurityEnabled()) { return {EndpointSecurity::Block, BlockReason::DeviceLocked}; } else { return {EndpointSecurity::Allow, BlockReason::NoReason}; } } auto USBSecurityModel::updatePhoneLockTime(const time_t newPhoneLockTime) -> void { phoneLockTime = newPhoneLockTime; } auto USBSecurityModel::getPhoneLockTime() const -> time_t { return phoneLockTime; } } // namespace sdesktop