From 035bdc7576fab3f1757af0e3bd77058bf44748c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Wed, 30 Nov 2016 00:19:27 +0100 Subject: GH-1524 Regenerate Minecraft client token when the auth token is invalid This makes the case where users copy MultiMC to other machines easier to handle. It doesn't require manual intervention and the tokens do not go in a desync loop. --- api/logic/minecraft/auth/MojangAccount.cpp | 6 ++++++ api/logic/minecraft/auth/MojangAccount.h | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'api/logic/minecraft/auth') diff --git a/api/logic/minecraft/auth/MojangAccount.cpp b/api/logic/minecraft/auth/MojangAccount.cpp index 2b073aac..e6247608 100644 --- a/api/logic/minecraft/auth/MojangAccount.cpp +++ b/api/logic/minecraft/auth/MojangAccount.cpp @@ -298,3 +298,9 @@ void MojangAccount::incrementUses() qWarning() << "Account" << m_username << "is now in use."; } } + +void MojangAccount::invalidateClientToken() +{ + m_clientToken = QUuid::createUuid().toString().remove(QRegExp("[{}-]")); + emit changed(); +} diff --git a/api/logic/minecraft/auth/MojangAccount.h b/api/logic/minecraft/auth/MojangAccount.h index 4902ec11..86d81c63 100644 --- a/api/logic/minecraft/auth/MojangAccount.h +++ b/api/logic/minecraft/auth/MojangAccount.h @@ -95,8 +95,8 @@ public: /* manipulation */ * Attempt to login. Empty password means we use the token. * If the attempt fails because we already are performing some task, it returns false. */ - std::shared_ptr login(AuthSessionPtr session, - QString password = QString()); + std::shared_ptr login(AuthSessionPtr session, QString password = QString()); + void invalidateClientToken(); public: /* queries */ const QString &username() const -- cgit v1.2.3