Commit cc0339b0 authored by Raine Makelainen's avatar Raine Makelainen

Merge branch 'jb45803' into 'master'

Handle authentication evaluating state when checking code

See merge request !42
parents bba86117 d62f20a9
Name: nemo-qml-plugin-devicelock
Summary: Device lock plugin for Nemo Mobile
Version: 0.2.1
Version: 0.2.21
Release: 1
Group: System/Libraries
License: LGPLv2.1
......
......@@ -45,6 +45,7 @@ namespace NemoDeviceLock
static const auto authenticatorInterface = QStringLiteral("org.nemomobile.devicelock.client.Authenticator");
static const auto securityCodeInterface = QStringLiteral("org.nemomobile.devicelock.client.SecurityCodeSettings");
static const auto attemptsRemaining = QStringLiteral("attemptsRemaining");
HostAuthenticatorAdaptor::HostAuthenticatorAdaptor(HostAuthenticator *authenticator)
: QDBusAbstractAdaptor(authenticator)
......@@ -493,6 +494,10 @@ void HostAuthenticator::authorize()
void HostAuthenticator::checkCodeFinished(int result)
{
const FeedbackFunction feebackFunction = (m_state & EvaluatingFlag)
? &HostAuthenticationInput::authenticationResumed
: static_cast<void (HostAuthenticationInput::*)(AuthenticationInput::Feedback, const QVariantMap &, Authenticator::Methods)>(&HostAuthenticationInput::feedback);
m_state = State(m_state & ~EvaluatingFlag);
switch (m_state) {
......@@ -500,6 +505,8 @@ void HostAuthenticator::checkCodeFinished(int result)
case RequestingPermission:
switch (result) {
case Evaluating:
authenticationEvaluating();
m_state = State(m_state | EvaluatingFlag);
return;
case Success:
case SecurityCodeExpired:
......@@ -528,10 +535,12 @@ void HostAuthenticator::checkCodeFinished(int result)
case AuthenticatingForChange:
switch (result) {
case Evaluating:
authenticationEvaluating();
m_state = State(m_state | EvaluatingFlag);
return;
case Success:
case SecurityCodeExpired:
enterCodeChangeState(&HostAuthenticationInput::feedback, Authenticator::SecurityCode);
enterCodeChangeState(feebackFunction, Authenticator::SecurityCode);
return;
case LockedOut:
lockedOut();
......@@ -544,6 +553,8 @@ void HostAuthenticator::checkCodeFinished(int result)
case AuthenticatingForClear: {
switch (result) {
case Evaluating:
authenticationEvaluating();
m_state = State(m_state | EvaluatingFlag);
return;
case Success:
if (clearCode(m_currentCode)) {
......@@ -563,19 +574,21 @@ void HostAuthenticator::checkCodeFinished(int result)
return;
}
const int attempts = result;
const int maximum = maximumAttempts();
QVariantMap data;
if (maximum > 0 && attempts > 0) {
feedback(AuthenticationInput::IncorrectSecurityCode, qMax(0, maximum - attempts));
data.insert(attemptsRemaining, qMax(0, maximum - attempts));
(this->*feebackFunction)(AuthenticationInput::IncorrectSecurityCode, data, Authenticator::Methods());
if (attempts >= maximum) {
lockedOut();
return;
}
} else {
feedback(AuthenticationInput::IncorrectSecurityCode, -1);
data.insert(attemptsRemaining, -1);
(this->*feebackFunction)(AuthenticationInput::IncorrectSecurityCode, data, Authenticator::Methods());
}
}
......
......@@ -61,6 +61,7 @@ target.path = /usr/lib
QMAKE_PKGCONFIG_NAME = nemodevicelock
QMAKE_PKGCONFIG_DESCRIPTION = Library for Nemo device lock.
QMAKE_PKGCONFIG_LIBDIR = $$target.path
QMAKE_PKGCONFIG_VERSION = $$VERSION
QMAKE_PKGCONFIG_INCDIR = /usr/include
QMAKE_PKGCONFIG_DESTDIR = pkgconfig
QMAKE_PKGCONFIG_VERSION = $$VERSION
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment