Класс DeviceLock
(Sailfish::Mdm::DeviceLock)
Класс DeviceLock управляет кодами безопасности и блокировкой устройства. Подробнее…
Заголовочный файл: | #include <mdm-devicelock.h> |
Публичные типы
- enum ClearOption { ShutdownAfterClear, RebootAfterClear, WipePartitions, ClearExternalMedia }
- flags ClearOptions
- enum ManagerLockoutMode { NoManagerLockout, RecoverableManagerLockout, PermanentManagerLockout }
- enum Result { Success, Failure, SecurityCodeExpired, SecurityCodeInHistory, ..., NoSuchUser }
- enum State { Unlocked, Locked, ManagerLockout, CodeEntryLockout, Undefined }
Свойства
- changingSecurityCode : const bool
- clearingDevice : const bool
- homeEncrypted : const bool
- settingLockoutMode : const bool
- state : const State
Публичные методы
- DeviceLock(QObject *parent = nullptr)
- ~DeviceLock()
- void clearDevice(ClearOptions options = ShutdownAfterClear)
- void clearPassword(uid_t uid)
- void expirePassword(uid_t uid)
- void expirePasswordForAll()
- bool isChangingSecurityCode() const
- bool isClearingDevice() const
- bool isHomeEncrypted()
- bool isSettingLockoutMode() const
- void setLockoutMode(ManagerLockoutMode mode, const QVariantMap &feedback = QVariantMap())
- void setLockoutWarning(const QString &warning)
- void setOneTimePassword(uid_t uid, const QString &password)
- void setSecurityCode(const QString &password)
- void setSecurityCodeUid(uid_t uid, const QString &password)
- State state() const
- ClearOptions supportedResetOptions() const
- void updateSupportedOptions()
Публичные слоты
void | handleMethodActionCompleted(const QString &method, const QString &action) |
void | handleMethodOptionChanged(const QString &method, const QString &key, const QDBusVariant &value) |
void | handleStateChanged(int state) |
void | handleUserMethodActionCompleted(uint uid, const QString &method, const QString &action) |
Сигналы
- void changingSecurityCodeChanged()
- void clearDeviceError()
- void clearPasswordChanged()
- void clearPasswordError(Result err)
- void clearingDeviceChanged()
- void deviceCleared()
- void expirePasswordChanged()
- void expirePasswordError(DeviceLock::Result err)
- void expirePasswordForAllChanged()
- void expirePasswordForAllError()
- void lockoutModeChanged()
- void lockoutModeError()
- void securityCodeChangeError(DeviceLock::Result err)
- void securityCodeChanged()
- void securityCodeUidChangeError(DeviceLock::Result err)
- void securityCodeUidChanged()
- void setOneTimePasswordChanged()
- void setOneTimePasswordError(DeviceLock::Result err)
- void settingLockoutModeChanged()
- void settingLockoutWarningFinished(DeviceLock::Result err)
- void stateChanged()
Статические публичные члены
DeviceLock::Result | authInputResult(const QDBusError &err) |
DeviceLock::Result | authInputResult(const QString &err) |
Подробное описание
Класс DeviceLock управляет кодами безопасности и блокировкой устройства.
API позволяет клиентским приложениям блокировать/разблокировать устройство, выполнять очистку файловой системы, а также задавать код безопасности для устройства.
Для использования данного класса в qmake-настройки проекта клиента следует добавить следующее:
CONFIG += link_pkgconfig
PKGCONFIG += sailfishmdm
и затем #include <mdm-devicelock.h>
.
Пример использования:
#include <mdm-devicelock.h>
void setOrClearDeviceLock(bool lockout, QObject *parent)
{
Sailfish::Mdm::DeviceLock *lock = new Sailfish::Mdm:DeviceLock(parent);
if (lockout) {
lock->setLockoutMode(Sailfish::Mdm::DeviceLock::RecoverableManagerLockout);
QObject::connect(lock, &Sailfish::Mdm::DeviceLock::lockoutModeChanged, [] {
qInfo() << "Устройство заблокировано";
});
QObject::connect(lock, &Sailfish::Mdm::DeviceLock::lockoutModeError, [] {
qInfo() << "Не удалось выполнить блокировку устройства";
});
} else {
lock->setLockoutMode(Sailfish::Mdm::DeviceLock::NoManagerLockout);
QObject::connect(lock, &Sailfish::Mdm::DeviceLock::lockoutModeChanged, []() {
qInfo() << "Блокировка снята";
});
QObject::connect(lock, &Sailfish::Mdm::DeviceLock::lockoutModeError, []() {
qInfo() << "Не удалось снять блокировку";
});
}
}
Описание типов класса
enum DeviceLock::ClearOption flags DeviceLock::ClearOptions
В данном перечислении описаны опции, которые могут применяться при выполнении clearDevice. При выполнении этой функции можно указать несколько параметров с помощью поразрядного OR.
Константа | Значение | Описание |
---|---|---|
Sailfish::Mdm::DeviceLock::ShutdownAfterClear |
0x00 |
После очистки устройство автоматически выключится |
Sailfish::Mdm::DeviceLock::RebootAfterClear |
0x01 |
После очистки устройство будет автоматически перезагружено |
Sailfish::Mdm::DeviceLock::WipePartitions |
0x02 |
В результате очистки все разделы будут обнулены |
Sailfish::Mdm::DeviceLock::ClearExternalMedia |
0x04 |
Данные из внешнего хранилища также будут удалены |
Тип ClearOptions type — это typedef для QFlags<ClearOption>. Он хранит комбинацию OR значений ClearOption.
enum DeviceLock::ManagerLockoutMode
В данном перечислении описаны изменения, которые диспетчер устройств может внести в состояние блокировки устройств.
Константа | Значение | Описание |
---|---|---|
Sailfish::Mdm::DeviceLock::NoManagerLockout |
0 |
Сбрасывает любое восстанавливаемое состояние блокировки |
Sailfish::Mdm::DeviceLock::RecoverableManagerLockout |
1 |
Переводит устройство в обратимое состояние ManagerLockout |
Sailfish::Mdm::DeviceLock::PermanentManagerLockout |
2 |
Переводит устройство в необратимое состояние ManagerLock |
enum DeviceLock::Result
В данном перечислении описаны возможные результаты операций с изменением и истечением срока годности паролей или кодов безопасности.
Константа | Значение | Описание |
---|---|---|
Sailfish::Mdm::DeviceLock::Success |
0 |
|
Sailfish::Mdm::DeviceLock::Failure |
-1 |
|
Sailfish::Mdm::DeviceLock::SecurityCodeExpired |
-2 |
|
Sailfish::Mdm::DeviceLock::SecurityCodeInHistory |
-3 |
|
Sailfish::Mdm::DeviceLock::LockedOut |
-4 |
|
Sailfish::Mdm::DeviceLock::Evaluating |
-5 |
|
Sailfish::Mdm::DeviceLock::UserSettingsSyntaxFail |
-6 |
|
Sailfish::Mdm::DeviceLock::LoginTTLFail |
-7 |
|
Sailfish::Mdm::DeviceLock::LoginScheduleFail |
-8 |
|
Sailfish::Mdm::DeviceLock::LoginPassFail |
-9 |
|
Sailfish::Mdm::DeviceLock::NoMeetRequirements |
-10 |
Некорректный ввод |
Sailfish::Mdm::DeviceLock::NoSuchUser |
-11 |
enum DeviceLock::State
В данном перечислении описаны возможные состояния устройства, возвращаемые службой блокировки устройства.
Примечание — Экстренные вызовы доступны, даже если устройство заблокировано.
Константа | Значение | Описание |
---|---|---|
Sailfish::Mdm::DeviceLock::Unlocked |
0 |
Устройство разблокировано и может использоваться |
Sailfish::Mdm::DeviceLock::Locked |
1 |
Устройство заблокировано пользователем, для использования устройства его следует разблокировать |
Sailfish::Mdm::DeviceLock::ManagerLockout |
2 |
Устройство заблокировано приложением MDM, разблокировка возможна только через приложение MDM |
Sailfish::Mdm::DeviceLock::CodeEntryLockout |
3 |
Устройство было заблокировано в результате ввода некорректных кодов безопасности |
Sailfish::Mdm::DeviceLock::Undefined |
4 |
Неизвестное состояние блокировки устройства |
Описание свойств
changingSecurityCode : const bool
Истинно, если в настоящий момент выполняется смена кода безопасности для устройства.
Значение этого свойства обновляется при изменении состояния операции (начало, завершение или отказ) в результате вызова метода setSecurityCode.
Методы доступа:
- bool isChangingSecurityCode() const
Сигнал уведомления:
- void changingSecurityCodeChanged()
clearingDevice : const bool
Истинно, если в настоящий момент устройство очищается.
Значение этого свойства обновляется при изменении состояния операции (начало, завершение или отказ) в результате вызова метода clearDevice.
Методы доступа:
- bool isClearingDevice() const
Сигнал уведомления:
- void clearingDeviceChanged()
homeEncrypted : const bool
Истинно, если домашний раздел зашифрован.
Методы доступа:
- bool isHomeEncrypted()
settingLockoutMode : const bool
Истинно, если в настоящий момент изменяется режим блокировки устройства.
Значение этого свойства обновляется при изменении состояния операции (начало, завершение или отказ) в результате вызова метода setLockoutMode.
Методы доступа:
- bool isSettingLockoutMode() const
Сигнал уведомления:
- void settingLockoutModeChanged()
state : const State
Содержит текущее состояние блокировки устройства.
Значение этого свойства обновляется при изменении состояния блокировки устройства, возвращаемого соответствующей службой.
Методы доступа:
- State state() const
Сигнал уведомления:
- void stateChanged()
Описание методов класса
DeviceLock::DeviceLock(QObject *parent = nullptr)
Конструктор по умолчанию для класса DeviceLock.
DeviceLock::~DeviceLock()
Деструктор для класса DeviceLock.
[static] DeviceLock::Result DeviceLock::authInputResult(const QDBusError &err)
[static] DeviceLock::Result DeviceLock::authInputResult(const QString &err)
Конвертирует error, полученную через D-Bus, в DeviceLock::Result.
void DeviceLock::clearDevice(ClearOptions options = ShutdownAfterClear)
Пытается очистить устройство в соответствии с указанными options.
Эта операция асинхронная.
При успехе испускается сигнал deviceCleared. Иначе испускается сигнал clearDeviceError.
Следующие опции options могут быть указаны: ShutdownAfterClear, RebootAfterClear, WipePartitions.
[signal] void DeviceLock::clearDeviceError()
Сигнал испускается, если в результате попытки очистки файловой системы устройства путём вызова метода clearDevice произошла ошибка.
void DeviceLock::clearPassword(uid_t uid)
Очищает пароль заданного пользователя uid. Пользователь должен выбрать новый пароль, который
должен соответствовать текущей политике паролей. Пользователь не сможет перезагрузить или включить
устройство до установки нового пароля, так как для разблокировки зашифрованного раздела /home
требуется ввести правильный пароль.
Эта операция асинхронная.
При успехе испускается сигнал clearPasswordChanged. Иначе испускается сигнал clearPasswordError.
[signal] void DeviceLock::clearPasswordChanged()
Сигнал испускается, когда пароль для указанного пользователя сброшен вызовом clearPassword.
[signal] void DeviceLock::clearPasswordError(Result err)
[signal] void DeviceLock::deviceCleared()
Сигнал испускается после успешной очистки файловой системы устройства путём вызова метода clearDevice.
void DeviceLock::expirePassword(uid_t uid)
Завершает срок действия пароля данного пользователя uid. Пользователь должен изменить пароль при следующем входе в систему после успешной аутентификации с использованием текущего пароля.
Эта операция асинхронная.
В случае успеха испускается сигнал expirePasswordChanged. В противном случае испускается сигнал expirePasswordError.
[signal] void DeviceLock::expirePasswordChanged()
Сигнал испускается, когда пароль для указанного пользователя просрочен в результате вызова метода expirePassword.
[signal] void DeviceLock::expirePasswordError(DeviceLock::Result err)
void DeviceLock::expirePasswordForAll()
Завершает срок действия паролей всех пользователей, включая администраторов. Все пользователи должны изменить свои пароли при следующем входе в систему после успешной аутентификации.
Эта операция асинхронная. В случае успеха испускается сигнал expirePasswordForAllChanged. Иначе испускается сигнал expirePasswordForAllError.
[signal] void DeviceLock::expirePasswordForAllChanged()
Сигнал испускается, когда пароли для всех пользователей просрочены в результате вызова метода expirePasswordForAll.
[signal] void DeviceLock::expirePasswordForAllError()
Сигнал испускается, если вызов метода expirePasswordForAll окончился неудачей.
[slot] void DeviceLock::handleMethodActionCompleted(const QString &method, const QString &action)
[slot] void DeviceLock::handleMethodOptionChanged(const QString &method, const QString &key, const QDBusVariant &value)
[slot] void DeviceLock::handleStateChanged(int state)
[slot] void DeviceLock::handleUserMethodActionCompleted(uint uid, const QString &method, const QString &action)
[signal] void DeviceLock::lockoutModeChanged()
Сигнал испускается после изменения режима блокировки устройства в результате вызова метода setLockoutMode.
[signal] void DeviceLock::lockoutModeError()
Сигнал испускается, если вызов метода setLockoutMode окончился неудачей.
[signal] void DeviceLock::securityCodeChangeError(DeviceLock::Result err)
[signal] void DeviceLock::securityCodeChanged()
Сигнал испускается после успешного изменения кода безопасности в результате вызова метода setSecurityCode.
[signal] void DeviceLock::securityCodeUidChangeError(DeviceLock::Result err)
[signal] void DeviceLock::securityCodeUidChanged()
Сигнал испускается, когда удачно установлен код безопасности в результате вызова метода setSecurityCodeUid.
void DeviceLock::setLockoutMode(ManagerLockoutMode mode, const QVariantMap &feedback = QVariantMap())
Пытается изменить состояние блокировки диспетчера блокировок устройства на mode.
Эта операция асинхронная.
При успехе испускается сигнал lockoutModeChanged. Иначе испускается сигнал lockoutModeError.
Устройство в состоянии ManagerLockout не может быть разблокировано, кроме как клиентом MDM, состояние PermanentManagerLockout не может быть удалено никогда.
Обратная связь по умолчанию, предоставляемая пользователю, когда ему сообщают о блокировке, может быть перезаписана путём заполнения feedback. Поддерживаются следующие ключи:
warning
— текст предупреждения с описанием причины блокировки.
void DeviceLock::setLockoutWarning(const QString &warning)
Пытается изменить предупреждение о блокировке диспетчера блокировки устройства.
Эта операция асинхронная.
warning
— текст предупреждения с описанием причины блокировки.
void DeviceLock::setOneTimePassword(uid_t uid, const QString &password)
Устанавливает одноразовый пароль password для заданного пользователя uid. После успешной аутентификации с этим паролем пользователь uid должен сменить его. Новый пароль должен соответствовать текущей политике паролей.
Эта операция асинхронная. При успехе испускается сигнал setOneTimePasswordChanged. Иначе испускается сигнал setOneTimePasswordError.
[signal] void DeviceLock::setOneTimePasswordChanged()
Сигнал испускается, когда удачно установлен одноразовый пароль в результате вызова метода setOneTimePassword.
[signal] void DeviceLock::setOneTimePasswordError(DeviceLock::Result err)
void DeviceLock::setSecurityCode(const QString &password)
Пытается изменить код безопасности на указанный code.
Эта операция асинхронная.
При успехе испускается сигнал securityCodeChanged. Иначе испускается сигнал securityCodeChangeError.
void DeviceLock::setSecurityCodeUid(uid_t uid, const QString &password)
Пытается изменить код безопасности указанного пользовател uid на указанный code.
Эта операция асинхронная.
При успехе испускается сигнал securityCodeUidChanged. Иначе испускается сигнал securityCodeUidChangeError.
[signal] void DeviceLock::settingLockoutWarningFinished(DeviceLock::Result err)
ClearOptions DeviceLock::supportedResetOptions() const
Это свойство содержит поддерживаемое значение для аргумента опции очистки устройства.
Значения, не входящие в это множество, будут игнорироваться и не должны быть доступны для выбора в пользовательском интерфейсе.
void DeviceLock::updateSupportedOptions()