diff options
author | Petr Mrázek <peterix@gmail.com> | 2016-11-30 00:19:27 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2016-11-30 00:19:27 +0100 |
commit | 035bdc7576fab3f1757af0e3bd77058bf44748c8 (patch) | |
tree | 22553231afde8ee05a36129190a41bcbf61e4a87 /api/logic | |
parent | 4ca6878743119647213ae02d9a9bb1a410768110 (diff) | |
download | MultiMC-035bdc7576fab3f1757af0e3bd77058bf44748c8.tar MultiMC-035bdc7576fab3f1757af0e3bd77058bf44748c8.tar.gz MultiMC-035bdc7576fab3f1757af0e3bd77058bf44748c8.tar.lz MultiMC-035bdc7576fab3f1757af0e3bd77058bf44748c8.tar.xz MultiMC-035bdc7576fab3f1757af0e3bd77058bf44748c8.zip |
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.
Diffstat (limited to 'api/logic')
-rw-r--r-- | api/logic/minecraft/auth/MojangAccount.cpp | 6 | ||||
-rw-r--r-- | api/logic/minecraft/auth/MojangAccount.h | 4 |
2 files changed, 8 insertions, 2 deletions
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<YggdrasilTask> login(AuthSessionPtr session, - QString password = QString()); + std::shared_ptr<YggdrasilTask> login(AuthSessionPtr session, QString password = QString()); + void invalidateClientToken(); public: /* queries */ const QString &username() const |