diff --git a/src/common/Messages.h b/src/common/Messages.h index 41660f6..9f2e4ee 100644 --- a/src/common/Messages.h +++ b/src/common/Messages.h @@ -50,6 +50,7 @@ namespace DDM { InformationMessage, UserActivateMessage, SwitchToGreeter, + UserLoggedIn, }; enum Capability { diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp index 214e20f..fcef17d 100644 --- a/src/daemon/Display.cpp +++ b/src/daemon/Display.cpp @@ -31,6 +31,8 @@ #include "SocketServer.h" #include "Greeter.h" #include "Utils.h" +#include "Messages.h" +#include "SocketWriter.h" #include #include @@ -149,6 +151,9 @@ namespace DDM { connect(m_displayServer, &DisplayServer::started, this, &Display::displayServerStarted); connect(m_displayServer, &DisplayServer::stopped, this, &Display::stop); + // connect connected signal + connect(m_socketServer, &SocketServer::connected, this, &Display::connected); + // connect login signal connect(m_socketServer, &SocketServer::login, this, &Display::login); @@ -365,6 +370,16 @@ namespace DDM { emit stopped(); } + void Display::connected(QLocalSocket *socket) { + m_socket = socket; + // send logined user (for possible crash recovery) + SocketWriter writer(socket); + for (Auth *auth : loginedSession()) { + if (auth->isActive()) + writer << quint32(DaemonMessages::UserLoggedIn) << auth->user(); + } + } + void Display::login(QLocalSocket *socket, const QString &user, const QString &password, const Session &session) { diff --git a/src/daemon/Display.h b/src/daemon/Display.h index e44e7ce..7d8eddd 100644 --- a/src/daemon/Display.h +++ b/src/daemon/Display.h @@ -75,6 +75,7 @@ namespace DDM { bool start(); void stop(); + void connected(QLocalSocket *socket); void login(QLocalSocket *socket, const QString &user, const QString &password, const Session &session);