X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcoresession.cpp;h=6ae077fce91228a60be7b5f84519942633e06ace;hb=2c4e055125a3e3ab7a2bd0d9c0ea33415f6ce7cc;hp=3782f71d609acc10b57915debb5d97c485ecfbe7;hpb=13a1c223286e5cc174177810d30298cf843f0973;p=quassel.git diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 3782f71d..6ae077fc 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -105,6 +105,9 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent) p->attachSlot(SIGNAL(changePassword(PeerPtr,QString,QString,QString)), this, SLOT(changePassword(PeerPtr,QString,QString,QString))); p->attachSignal(this, SIGNAL(passwordChanged(PeerPtr,bool))); + p->attachSlot(SIGNAL(kickClient(int)), this, SLOT(kickClient(int))); + p->attachSignal(this, SIGNAL(disconnectFromCore())); + loadSettings(); initScriptEngine(); @@ -715,5 +718,18 @@ void CoreSession::changePassword(PeerPtr peer, const QString &userName, const QS if (uid.isValid() && uid == user()) success = Core::changeUserPassword(uid, newPassword); - emit passwordChanged(peer, success); + signalProxy()->restrictTargetPeers(signalProxy()->sourcePeer(), [&]{ + emit passwordChanged(nullptr, success); + }); +} + +void CoreSession::kickClient(int peerId) { + auto peer = signalProxy()->peerById(peerId); + if (peer == nullptr) { + qWarning() << "Invalid peer Id: " << peerId; + return; + } + signalProxy()->restrictTargetPeers(peer, [&]{ + emit disconnectFromCore(); + }); }