summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/logic/minecraft/auth/MojangAccount.cpp6
-rw-r--r--api/logic/minecraft/auth/MojangAccount.h4
-rw-r--r--application/LaunchController.cpp1
3 files changed, 9 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
diff --git a/application/LaunchController.cpp b/application/LaunchController.cpp
index 62e582d8..e8f369be 100644
--- a/application/LaunchController.cpp
+++ b/application/LaunchController.cpp
@@ -108,6 +108,7 @@ void LaunchController::login()
auto failReasonNew = task->failReason();
if(failReasonNew == "Invalid token.")
{
+ account->invalidateClientToken();
failReason = needLoginAgain;
}
else failReason = failReasonNew;