p->attachSignal(this, SIGNAL(passwordChanged(PeerPtr,bool)));
p->attachSlot(SIGNAL(kickClient(int)), this, SLOT(kickClient(int)));
+ p->attachSignal(this, SIGNAL(disconnectFromCore()));
loadSettings();
initScriptEngine();
}
}
-void CoreSession::changePassword(PeerPtr peer, const QString &userName, const QString &oldPassword, const QString &newPassword)
-{
+void CoreSession::changePassword(PeerPtr peer, const QString &userName, const QString &oldPassword, const QString &newPassword) {
+ Q_UNUSED(peer);
+
bool success = false;
UserId uid = Core::validateUser(userName, oldPassword);
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();
+ });
}