From 09adcde8e4f65f78daa4ebe95262f8edaa165db2 Mon Sep 17 00:00:00 2001 From: chenhongtao Date: Mon, 9 Oct 2023 14:22:05 +0800 Subject: [PATCH] feat: no password unlock Log: --- src/app/dde-lock.cpp | 1 + src/dde-lock/lockframe.cpp | 1 + src/dde-lock/lockframe.h | 1 + src/dde-lock/lockworker.cpp | 13 +++++++++++++ src/dde-lock/lockworker.h | 2 ++ 5 files changed, 18 insertions(+) diff --git a/src/app/dde-lock.cpp b/src/app/dde-lock.cpp index 093216ba..74bede0d 100644 --- a/src/app/dde-lock.cpp +++ b/src/app/dde-lock.cpp @@ -163,6 +163,7 @@ int main(int argc, char *argv[]) if (model->isUseWayland()) { QObject::connect(lockFrame, &LockFrame::requestDisableGlobalShortcutsForWayland, worker, &LockWorker::disableGlobalShortcutsForWayland); } + QObject::connect(lockFrame, &LockFrame::requestCheckAccount, worker, &LockWorker::checkAccount); lockFrame->setVisible(model->visible()); emit lockService.Visible(true); return lockFrame; diff --git a/src/dde-lock/lockframe.cpp b/src/dde-lock/lockframe.cpp index 0928e00c..cce234a6 100644 --- a/src/dde-lock/lockframe.cpp +++ b/src/dde-lock/lockframe.cpp @@ -70,6 +70,7 @@ LockFrame::LockFrame(SessionBaseModel *const model, QWidget *parent) emit requestEnableHotzone(true); emit authFinished(); }); + connect(m_lockContent, &LockContent::requestCheckAccount, this, &LockFrame::requestCheckAccount); connect(model, &SessionBaseModel::showUserList, this, &LockFrame::showUserList); connect(model, &SessionBaseModel::showLockScreen, this, &LockFrame::showLockScreen); connect(model, &SessionBaseModel::showShutdown, this, &LockFrame::showShutdown); diff --git a/src/dde-lock/lockframe.h b/src/dde-lock/lockframe.h index 6e364e02..8fbe3e12 100644 --- a/src/dde-lock/lockframe.h +++ b/src/dde-lock/lockframe.h @@ -41,6 +41,7 @@ class LockFrame: public FullscreenBackground void sendTokenToAuth(const QString &account, const int authType, const QString &token); void requestEndAuthentication(const QString &account, const int authType); void authFinished(); + void requestCheckAccount(const QString &account); public slots: void showUserList(); diff --git a/src/dde-lock/lockworker.cpp b/src/dde-lock/lockworker.cpp index 01188ca8..b97d3bc4 100644 --- a/src/dde-lock/lockworker.cpp +++ b/src/dde-lock/lockworker.cpp @@ -536,6 +536,10 @@ void LockWorker::createAuthentication(const QString &account) std::shared_ptr user_ptr = m_model->findUserByName(account); if (user_ptr) { user_ptr->updatePasswordExpiredInfo(); + if (user_ptr->isNoPasswordLogin()) { + qInfo() << "User is no password login"; + return; + } } m_account = account; @@ -763,3 +767,12 @@ void LockWorker::disableGlobalShortcutsForWayland(const bool enable) qWarning() << "call setActiveByUniqueName failed" << reply.error(); } } + +void LockWorker::checkAccount(const QString &account) +{ + Q_UNUSED(account) + if (m_model->currentUser() && m_model->currentUser()->isNoPasswordLogin()) { + qInfo() << "Current user has set 'no password login' : " << account; + onAuthFinished(); + } +} diff --git a/src/dde-lock/lockworker.h b/src/dde-lock/lockworker.h index 7f54e107..25a350b5 100644 --- a/src/dde-lock/lockworker.h +++ b/src/dde-lock/lockworker.h @@ -56,6 +56,8 @@ public slots: void disableGlobalShortcutsForWayland(const bool enable); + void checkAccount(const QString &account); + private: void initConnections(); void initData();