Migrate password change RPC to the new target restriction system
[quassel.git] / src / core / coresession.cpp
index 635067a..518246a 100644 (file)
@@ -106,6 +106,7 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent)
     p->attachSignal(this, SIGNAL(passwordChanged(PeerPtr,bool)));
 
     p->attachSlot(SIGNAL(kickClient(int)), this, SLOT(kickClient(int)));
+    p->attachSignal(this, SIGNAL(disconnectFromCore()));
 
     loadSettings();
     initScriptEngine();
@@ -717,13 +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) {
+    if (peer == nullptr) {
         qWarning() << "Invalid peer Id: " << peerId;
+        return;
     }
-    peer->close("Terminated by user action");
+    signalProxy()->restrictTargetPeers({peer}, [&]{
+        emit disconnectFromCore();
+    });
 }