From c61cf67acaec83ac6122aaf084a9a9007bcce5df Mon Sep 17 00:00:00 2001 From: huayadong Date: Wed, 4 Jan 2023 09:57:33 +0800 Subject: [PATCH] fix-invalid-automatic-login --- ...er-3.0.4-fix-invalid-automatic-login.patch | 175 ++++++++++++++++++ ukui-control-center.spec | 15 +- 2 files changed, 188 insertions(+), 2 deletions(-) create mode 100644 ukui-control-center-3.0.4-fix-invalid-automatic-login.patch diff --git a/ukui-control-center-3.0.4-fix-invalid-automatic-login.patch b/ukui-control-center-3.0.4-fix-invalid-automatic-login.patch new file mode 100644 index 0000000..41004a6 --- /dev/null +++ b/ukui-control-center-3.0.4-fix-invalid-automatic-login.patch @@ -0,0 +1,175 @@ +From 354eaef4c59308e58792258fc37bfef4d74eaaf5 Mon Sep 17 00:00:00 2001 +From: huayadong +Date: Wed, 4 Jan 2023 15:03:57 +0800 +Subject: [PATCH] xxxxxxxxxxxxxxxxxx + +--- + data/95-SeatDefaults.conf | 2 ++ + .../userinfo/qtdbus/userdispatcher.cpp | 4 ++-- + .../account/userinfo/qtdbus/userdispatcher.h | 2 +- + plugins/account/userinfo/userinfo.cpp | 21 ++++++------------- + registeredQDbus/sysdbusregister.cpp | 10 ++++++--- + registeredQDbus/sysdbusregister.h | 2 +- + ukui-control-center.pro | 6 +++++- + 7 files changed, 24 insertions(+), 23 deletions(-) + create mode 100644 data/95-SeatDefaults.conf + +diff --git a/data/95-SeatDefaults.conf b/data/95-SeatDefaults.conf +new file mode 100644 +index 0000000..bf666a2 +--- /dev/null ++++ b/data/95-SeatDefaults.conf +@@ -0,0 +1,2 @@ ++[SeatDefaults] ++autologin-user= +diff --git a/plugins/account/userinfo/qtdbus/userdispatcher.cpp b/plugins/account/userinfo/qtdbus/userdispatcher.cpp +index a13d4fa..8617b79 100644 +--- a/plugins/account/userinfo/qtdbus/userdispatcher.cpp ++++ b/plugins/account/userinfo/qtdbus/userdispatcher.cpp +@@ -104,7 +104,7 @@ void UserDispatcher::change_user_name(QString newName){ + useriface->call("SetRealName", QVariant(newName)); + } + +-void UserDispatcher::change_user_autologin(QString username){ ++void UserDispatcher::change_user_autologin(bool checked, QString username){ + QDBusInterface * tmpSysinterface = new QDBusInterface("com.control.center.qt.systemdbus", + "/", + "com.control.center.interface", +@@ -114,7 +114,7 @@ void UserDispatcher::change_user_autologin(QString username){ + qCritical() << "Create Client Interface Failed When : " << QDBusConnection::systemBus().lastError(); + return; + } +- tmpSysinterface->call("setAutoLoginStatus", username); ++ tmpSysinterface->call("setAutoLoginStatus", checked, username); + + delete tmpSysinterface; + tmpSysinterface = nullptr; +diff --git a/plugins/account/userinfo/qtdbus/userdispatcher.h b/plugins/account/userinfo/qtdbus/userdispatcher.h +index b498c15..41b2425 100644 +--- a/plugins/account/userinfo/qtdbus/userdispatcher.h ++++ b/plugins/account/userinfo/qtdbus/userdispatcher.h +@@ -51,7 +51,7 @@ public: + QString change_user_pwd(QString pwd, QString hint); + void change_user_type(int atype); + void change_user_face(QString facefile); +- void change_user_autologin(QString username); ++ void change_user_autologin(bool checked, QString username); + void change_user_name(QString newName); + bool get_autoLogin_status(); + +diff --git a/plugins/account/userinfo/userinfo.cpp b/plugins/account/userinfo/userinfo.cpp +index a86088b..9727c00 100644 +--- a/plugins/account/userinfo/userinfo.cpp ++++ b/plugins/account/userinfo/userinfo.cpp +@@ -765,11 +765,15 @@ void UserInfo::setUserConnect(){ + Q_UNUSED(checked) + showChangeGroupDialog(); + }); ++ UserInfomation username = allUserInfoMap.value(g_get_user_name()); ++ autoLoginSBtn->setChecked(!getAutomaticLogin().compare(username.username, Qt::CaseSensitive)); + + //自动登录登录 + connect(autoLoginSBtn, &SwitchButton::checkedChanged, autoLoginSBtn, [=](bool checked){ + UserInfomation user = allUserInfoMap.value(g_get_user_name()); + ++ UserDispatcher * userdispatcher = new UserDispatcher(user.objpath); ++ + QString autoUser = getAutomaticLogin(); + qDebug() << "Current Auto User:" << autoUser; + +@@ -783,20 +787,7 @@ void UserInfo::setUserConnect(){ + return; + } + } +- +- QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.Accounts", +- user.objpath, +- "org.freedesktop.Accounts.User", +- "SetAutomaticLogin"); +- message << checked; +- QDBusMessage response = QDBusConnection::systemBus().call(message); +- +- if (response.type() == QDBusMessage::ErrorMessage){ +- +- autoLoginSBtn->blockSignals(true); +- autoLoginSBtn->setChecked(!checked); +- autoLoginSBtn->blockSignals(false); +- } ++ userdispatcher->change_user_autologin(checked, user.username); + }); + + //免密登录 +@@ -981,7 +972,7 @@ bool UserInfo::isLastAdmin(QString uname){ + + QString UserInfo::getAutomaticLogin() { + +- QString filename = "/etc/lightdm/lightdm.conf"; ++ QString filename = "/usr/share/lightdm/lightdm.conf.d/95-SeatDefaults.conf"; + autoSettings = new QSettings(filename, QSettings::IniFormat); + autoSettings->beginGroup("SeatDefaults"); + +diff --git a/registeredQDbus/sysdbusregister.cpp b/registeredQDbus/sysdbusregister.cpp +index d928d41..8b05278 100644 +--- a/registeredQDbus/sysdbusregister.cpp ++++ b/registeredQDbus/sysdbusregister.cpp +@@ -167,7 +167,7 @@ int SysdbusRegister::setNoPwdLoginStatus(bool status,QString username) + } + + // 设置自动登录状态 +-int SysdbusRegister::setAutoLoginStatus(QString username) { ++int SysdbusRegister::setAutoLoginStatus(bool checked, QString username) { + //密码校验 + QDBusConnection conn = connection(); + QDBusMessage msg = message(); +@@ -175,11 +175,15 @@ int SysdbusRegister::setAutoLoginStatus(QString username) { + if (!authoriyAutoLogin(conn.interface()->servicePid(msg.service()).value())){ + return 0; + } +- QString filename = "/etc/lightdm/lightdm.conf"; ++ QString filename = "/usr/share/lightdm/lightdm.conf.d/95-SeatDefaults.conf"; + QSharedPointer autoSettings = QSharedPointer(new QSettings(filename, QSettings::IniFormat)); + autoSettings->beginGroup("SeatDefaults"); + +- autoSettings->setValue("autologin-user", username); ++ if(true == checked){ ++ autoSettings->setValue("autologin-user", username); ++ }else{ ++ autoSettings->setValue("autologin-user", ""); ++ } + + autoSettings->endGroup(); + autoSettings->sync(); +diff --git a/registeredQDbus/sysdbusregister.h b/registeredQDbus/sysdbusregister.h +index d9fca66..7942715 100644 +--- a/registeredQDbus/sysdbusregister.h ++++ b/registeredQDbus/sysdbusregister.h +@@ -95,7 +95,7 @@ public slots: + Q_SCRIPTABLE QString getNoPwdLoginStatus(); + + // 设置自动登录状态 +- Q_SCRIPTABLE int setAutoLoginStatus(QString username); ++ Q_SCRIPTABLE int setAutoLoginStatus(bool checked, QString username); + + Q_SCRIPTABLE int DeleteUser(qint64 userId, bool removeWhole); + +diff --git a/ukui-control-center.pro b/ukui-control-center.pro +index 39966b2..e5c8556 100644 +--- a/ukui-control-center.pro ++++ b/ukui-control-center.pro +@@ -36,8 +36,12 @@ search_file.files = shell/res/search.xml + + INCLUDEPATH += /usr/lib/gcc/aarch64-linux-gnu/9/include/ + ++lightdm.files = data/95-SeatDefaults.conf ++lightdm.path = /usr/share/lightdm/lightdm.conf.d/ ++ + INSTALLS += qm_files \ +- search_file ++ search_file \ ++ lightdm + + HEADERS += \ + shell/utils/mthread.h \ +-- +2.33.0 + diff --git a/ukui-control-center.spec b/ukui-control-center.spec index 120ea29..a9e7d0c 100644 --- a/ukui-control-center.spec +++ b/ukui-control-center.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-control-center Version: 3.1.2 -Release: 6 +Release: 7 Summary: utilities to configure the UKUI desktop License: GPL-2+ URL: http://www.ukui.org @@ -11,6 +11,7 @@ Patch02: 0001-modify-version-info-error.patch Patch03: 0003-fix-power-missing-issue.patch Patch05: 0005-Fix-the-problem-of-displaying-none-in-the-interface-version-information.patch Patch07: 0007-modify-icon-theme-not-display.patch +Patch08: ukui-control-center-3.0.4-fix-invalid-automatic-login.patch BuildRequires: qt5-qtsvg-devel @@ -82,7 +83,7 @@ The UKUI control center contains configuration applets for the UKUI des allowing %build qmake-qt5 -make -j24 +make -j2 %install rm -rf $RPM_BUILD_ROOT @@ -97,6 +98,12 @@ glib-compile-schemas /usr/share/glib-2.0/schemas/ &> /dev/null ||: chown root:root /usr/bin/checkUserPwd chmod u+s /usr/bin/checkUserPwd +sed -i "1iauth sufficient pam_succeed_if.so user ingroup nopasswdlogin" /etc/pam.d/lightdm +groupadd nopasswdlogin &> /dev/null ||: + +%postun +sed -i "/auth sufficient pam_succeed_if.so user ingroup nopasswdlogin/d" /etc/pam.d/lightdm + %clean rm -rf $RPM_BUILD_ROOT @@ -115,6 +122,7 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/ukui/faces/* %{_datadir}/ukui-control-center/shell/res/* %{_libdir}/ukui-control-center/* +%{_datadir}/lightdm/lightdm.conf.d/95-SeatDefaults.conf %files -n libukcc-devel %{_includedir}/ukcc/interface/*.h @@ -123,6 +131,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Fri Dec 30 2022 huayadong - 3.1.2-7 +- Fix invalid automatic login, fix invalid password free login + * Thu Dec 29 2022 peijiankang - 3.1.2-6 - modify icon theme not display