Offline mode can be used even when online.

Allow the user to pick a player name for offline mode.
Big auth refactor. Now using session objects instead of the accounts themselves.
Sessions only last for one instance start and hold all the auth and player data.
This commit is contained in:
Petr Mrázek
2014-01-27 03:00:49 +01:00
parent d7113de3bd
commit ffbc5bb62c
27 changed files with 417 additions and 278 deletions

49
logic/auth/AuthSession.h Normal file
View File

@ -0,0 +1,49 @@
#pragma once
#include <QString>
#include <QMultiMap>
#include <memory>
struct User
{
QString id;
QMultiMap<QString, QString> properties;
};
struct AuthSession
{
bool MakeOffline(QString offline_playername);
QString serializeUserProperties();
enum Status
{
Undetermined,
RequiresPassword,
PlayableOffline,
PlayableOnline
} status = Undetermined;
User u;
// client token
QString client_token;
// account user name
QString username;
// combined session ID
QString session;
// volatile auth token
QString access_token;
// profile name
QString player_name;
// profile ID
QString uuid;
// 'legacy' or 'mojang', depending on account type
QString user_type;
// Did the auth server reply?
bool auth_server_online = false;
// Did the user request online mode?
bool wants_online = true;
};
typedef std::shared_ptr<AuthSession> AuthSessionPtr;