Resolves https://github.com/unmojang/FjordLauncher/issues/29 and obsoletes https://github.com/unmojang/FjordLauncher/pull/34. This implementation follows the authlib-injector specification: https://github.com/yushijinhun/authlib-injector/wiki/%E5%90%AF%E5%8A%A8%E5%99%A8%E6%8A%80%E6%9C%AF%E8%A7%84%E8%8C%83#%E8%B4%A6%E6%88%B7%E7%9A%84%E6%B7%BB%E5%8A%A0 ([Google translate to English](https://github-com.translate.goog/yushijinhun/authlib-injector/wiki/%E5%90%AF%E5%8A%A8%E5%99%A8%E6%8A%80%E6%9C%AF%E8%A7%84%E8%8C%83?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en-US))
38 lines
809 B
C++
38 lines
809 B
C++
#pragma once
|
|
#include <QObject>
|
|
#include <optional>
|
|
|
|
#include "minecraft/auth/AuthStep.h"
|
|
#include "net/NetJob.h"
|
|
#include "net/Upload.h"
|
|
|
|
class Yggdrasil;
|
|
|
|
class YggdrasilStep : public AuthStep {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit YggdrasilStep(AccountData* data, std::optional<QString> password);
|
|
virtual ~YggdrasilStep() noexcept = default;
|
|
|
|
void perform() override;
|
|
|
|
QString describe() override;
|
|
|
|
private slots:
|
|
void onRequestDone();
|
|
|
|
private:
|
|
void login(QString password);
|
|
void refresh();
|
|
|
|
void processResponse(QJsonObject responseData);
|
|
void processError(QJsonObject responseData);
|
|
|
|
std::optional<QString> m_password;
|
|
std::shared_ptr<QByteArray> m_response;
|
|
Net::Upload::Ptr m_request;
|
|
NetJob::Ptr m_task;
|
|
bool m_didSelectProfile = false;
|
|
};
|