From 073dee6c0b93b531b9567ec44ecdc6209a841c22 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 14 Nov 2017 12:39:18 +0100 Subject: Support autologin via guest session --- src/global.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/global.cpp (limited to 'src/global.cpp') diff --git a/src/global.cpp b/src/global.cpp new file mode 100644 index 0000000..7039bc1 --- /dev/null +++ b/src/global.cpp @@ -0,0 +1,51 @@ +#include "global.h" +#include +#include +#include +#include +#include +#include + +bool Global::m_testMode = false; + +QLightDM::Greeter* Global::m_Greeter = nullptr; +QLightDM::PowerInterface* Global::m_Power = nullptr; +QLightDM::SessionsModel* Global::m_Sessions = nullptr; + +void Global::initGreeter() +{ + m_Greeter = new QLightDM::Greeter(); + if (!m_Greeter->connectSync()) { + m_Greeter->deleteLater(); + m_Greeter = nullptr; + } +} + +bool Global::autoLoginGuest() +{ + GreeterCb *cb = new GreeterCb(); + GreeterCb::connect(greeter(), SIGNAL(authenticationComplete()), cb, SLOT(authenticationComplete())); + GreeterCb::connect(greeter(), SIGNAL(autologinTimerExpired()), cb, SLOT(autologinTimerExpired())); + GreeterCb::connect(greeter(), SIGNAL(reset()), cb, SLOT(reset())); + qWarning() << "Trying to auth as guest"; + greeter()->authenticateAsGuest(); + QTimer::singleShot(3000, cb, SLOT(customTimeout())); + while (!cb->authComplete && !cb->authError && greeter()->inAuthentication()) { + QCoreApplication::instance()->processEvents(QEventLoop::AllEvents); + } + qWarning() << "Complete:" << cb->authComplete << "Error:" + << cb->authError << "InAuth:" << greeter()->inAuthentication() << "isAuthenticated" << greeter()->isAuthenticated(); + if (cb->authComplete && greeter()->isAuthenticated()) { + cb->deleteLater(); + return startSession(); + } + cb->deleteLater(); + return false; +} + +bool Global::startSession() +{ + QModelIndex i = sessions()->index(0, 0); + QString s = m_Sessions->data(i, QLightDM::SessionsModel::KeyRole).toString(); + return m_Greeter->startSessionSync(s); +} -- cgit v1.2.3-55-g7522