From 962639aa6d58d88fae32159ed4e2c70ec120991e Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 11 Nov 2013 12:59:59 -0600 Subject: [PATCH] Added data structures for Mojang Account. --- CMakeLists.txt | 4 +++ logic/auth/MojangAccount.cpp | 55 ++++++++++++++++++++++++++++ logic/auth/MojangAccount.h | 70 ++++++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 logic/auth/MojangAccount.cpp create mode 100644 logic/auth/MojangAccount.h diff --git a/CMakeLists.txt b/CMakeLists.txt index e150c459..97ceba1b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -267,6 +267,10 @@ logic/net/LoginTask.cpp logic/net/S3ListBucket.h logic/net/S3ListBucket.cpp +# Yggdrasil login stuff +logic/auth/MojangAccount.h +logic/auth/MojangAccount.cpp + # legacy instances logic/LegacyInstance.h diff --git a/logic/auth/MojangAccount.cpp b/logic/auth/MojangAccount.cpp new file mode 100644 index 00000000..f796794e --- /dev/null +++ b/logic/auth/MojangAccount.cpp @@ -0,0 +1,55 @@ +/* Copyright 2013 MultiMC Contributors + * + * Authors: Orochimarufan + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "MojangAccount.h" + +#include + +MojangAccount::MojangAccount(const QString& username, QObject* parent) : + QObject(parent) +{ + // Generate a client token. + m_clientToken = QUuid::createUuid().toString(); + + m_username = username; +} + +MojangAccount::MojangAccount(const QString& username, const QString& clientToken, + const QString& accessToken, QObject* parent) : + QObject(parent) +{ + m_username = username; + m_clientToken = clientToken; + m_accessToken = accessToken; +} + + +QString MojangAccount::username() const +{ + return m_username; +} + +QString MojangAccount::clientToken() const +{ + return m_clientToken; +} + +QString MojangAccount::accessToken() const +{ + return m_accessToken; +} + diff --git a/logic/auth/MojangAccount.h b/logic/auth/MojangAccount.h new file mode 100644 index 00000000..b7f90659 --- /dev/null +++ b/logic/auth/MojangAccount.h @@ -0,0 +1,70 @@ +/* Copyright 2013 Andrew Okin + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include + +/** + * Object that stores information about a certain Mojang account. + * + * Said information may include things such as that account's username, client token, and access + * token if the user chose to stay logged in. + */ +class MojangAccount : public QObject +{ +Q_OBJECT +public: + /** + * Constructs a new MojangAccount with the given username. + * The client token will be generated automatically and the access token will be blank. + */ + explicit MojangAccount(const QString& username, QObject* parent = 0); + + /** + * Constructs a new MojangAccount with the given username, client token, and access token. + */ + explicit MojangAccount(const QString& username, const QString& clientToken, const QString& accessToken, QObject* parent = 0); + + + /** + * This MojangAccount's username. May be an email address if the account is migrated. + */ + QString username() const; + + /** + * This MojangAccount's client token. This is a UUID used by Mojang's auth servers to identify this client. + * This is unique for each MojangAccount. + */ + QString clientToken() const; + + /** + * This MojangAccount's access token. + * If the user has not chosen to stay logged in, this will be an empty string. + */ + QString accessToken() const; + + /** + * Changes this MojangAccount's access token to the given value. + */ + QString setAccessToken(const QString& token); + +protected: + QString m_username; + QString m_clientToken; + QString m_accessToken; // Blank if not logged in. +}; +