|
|
|
|
@ -9,11 +9,15 @@ |
|
|
|
|
|
|
|
|
|
namespace dss |
|
|
|
|
{ |
|
|
|
|
namespace module |
|
|
|
|
namespace module_v2 |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
Dp4LoginModule::Dp4LoginModule(QObject *parent) |
|
|
|
|
: QObject(parent) |
|
|
|
|
, m_loginWidget(nullptr) |
|
|
|
|
, m_appData(nullptr) |
|
|
|
|
, m_callback(nullptr) |
|
|
|
|
, m_msgCallback(nullptr) |
|
|
|
|
{ |
|
|
|
|
setObjectName(QStringLiteral("Dp4LoginModule")); |
|
|
|
|
installTranslator(); |
|
|
|
|
@ -21,17 +25,51 @@ Dp4LoginModule::Dp4LoginModule(QObject *parent) |
|
|
|
|
|
|
|
|
|
Dp4LoginModule::~Dp4LoginModule() |
|
|
|
|
{ |
|
|
|
|
if (m_loginWidget) { |
|
|
|
|
m_loginWidget->deleteLater(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Dp4LoginModule::init() |
|
|
|
|
{ |
|
|
|
|
if (m_loginWidget) { |
|
|
|
|
m_loginWidget->reset(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
m_loginWidget = new Dp4LoginWidget; |
|
|
|
|
m_loginWidget->reset(); |
|
|
|
|
connect(m_loginWidget, &Dp4LoginWidget::requestSendAuthen, this, [ this ](const QString &account, const QString &token) { |
|
|
|
|
// 发送认证的信息
|
|
|
|
|
if (m_callback && m_appData) { |
|
|
|
|
AuthCallbackData data; |
|
|
|
|
data.account = account; |
|
|
|
|
data.token = token; |
|
|
|
|
data.result = 1; |
|
|
|
|
m_callback(&data, &m_appData); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Dp4LoginModule::setAppData(AppDataPtr appData) |
|
|
|
|
{ |
|
|
|
|
m_appData = appData; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Dp4LoginModule::setAuthCallback(AuthCallbackFun callback) |
|
|
|
|
{ |
|
|
|
|
m_callback = callback; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Dp4LoginModule::setMessageCallback(MessageCallbackFunc msgCallback) |
|
|
|
|
{ |
|
|
|
|
m_msgCallback = msgCallback; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
QWidget *Dp4LoginModule::content() |
|
|
|
|
{ |
|
|
|
|
// 此处返回窗体必须从此处创建,因为该插件是在子线程中加载,而窗体需要在主线程中显示,因此此处第一次获取的时候再返回它的窗体即可
|
|
|
|
|
static Dp4LoginWidget dp4Widget; |
|
|
|
|
return &dp4Widget; |
|
|
|
|
return m_loginWidget; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Dp4LoginModule::reset() |
|
|
|
|
@ -52,19 +90,13 @@ void Dp4LoginModule::installTranslator() |
|
|
|
|
QApplication::installTranslator(&translator); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Dp4LoginModule::setCallback(LoginCallBack *callback) |
|
|
|
|
{ |
|
|
|
|
Dp4LoginWidget *loginWidget = static_cast<Dp4LoginWidget *>(content()); |
|
|
|
|
loginWidget->setCallback(callback); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::string Dp4LoginModule::onMessage(const std::string &message) |
|
|
|
|
QString Dp4LoginModule::message(const QString &message) |
|
|
|
|
{ |
|
|
|
|
qInfo() << Q_FUNC_INFO; |
|
|
|
|
QJsonParseError jsonParseError; |
|
|
|
|
const QJsonDocument messageDoc = QJsonDocument::fromJson(QByteArray::fromStdString(message), &jsonParseError); |
|
|
|
|
const QJsonDocument messageDoc = QJsonDocument::fromJson(message.toLatin1(), &jsonParseError); |
|
|
|
|
if (jsonParseError.error != QJsonParseError::NoError || messageDoc.isEmpty()) { |
|
|
|
|
qWarning() << Q_FUNC_INFO << "Failed to obtain message from shell!: " << QString::fromStdString(message); |
|
|
|
|
qWarning() << Q_FUNC_INFO << "Failed to obtain message from shell!: " << message; |
|
|
|
|
return ""; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -77,12 +109,13 @@ std::string Dp4LoginModule::onMessage(const std::string &message) |
|
|
|
|
QJsonObject data = msgObj.value("Data").toObject(); |
|
|
|
|
qInfo() << "Cmd type: " << cmdType; |
|
|
|
|
if (cmdType == "CurrentUserChanged") { |
|
|
|
|
QJsonObject data = msgObj.value("Data").toObject(); |
|
|
|
|
QString userName = data.value("Name").toString(); |
|
|
|
|
QString fullName = data.value("Fullname").toString(); |
|
|
|
|
QString avatar = data.value("Avatar").toString(); |
|
|
|
|
Dp4LoginWidget *loginWidget = static_cast<Dp4LoginWidget *>(content()); |
|
|
|
|
loginWidget->setCurrentAccount(userName, fullName, avatar); |
|
|
|
|
if (m_loginWidget) { |
|
|
|
|
QJsonObject data = msgObj.value("Data").toObject(); |
|
|
|
|
QString userName = data.value("Name").toString(); |
|
|
|
|
QString fullName = data.value("Fullname").toString(); |
|
|
|
|
QString avatar = data.value("Avatar").toString(); |
|
|
|
|
m_loginWidget->setCurrentAccount(userName, fullName, avatar); |
|
|
|
|
} |
|
|
|
|
} else if (cmdType == "GetConfigs") { |
|
|
|
|
QJsonObject retDataObj; |
|
|
|
|
retDataObj["ShowAvatar"] = false; |
|
|
|
|
@ -90,22 +123,27 @@ std::string Dp4LoginModule::onMessage(const std::string &message) |
|
|
|
|
retDataObj["ShowSwitchButton"] = false; |
|
|
|
|
retDataObj["ShowLockButton"] = false; |
|
|
|
|
retDataObj["DefaultAuthLevel"] = DefaultAuthLevel::StrongDefault; |
|
|
|
|
retDataObj["showBackGroundColor"] = false; |
|
|
|
|
retDataObj["DisableOtherAuthentications"] = true; |
|
|
|
|
retDataObj["ShowBackGroundColor"] = false; |
|
|
|
|
retDataObj["SwitchUserWhenCheckAccount"] = false; |
|
|
|
|
retDataObj["AuthType"] = AuthType::AT_Custom; |
|
|
|
|
retDataObj["width"] = content()->width(); |
|
|
|
|
retDataObj["height"] = content()->height(); |
|
|
|
|
|
|
|
|
|
retObj["Data"] = retDataObj; |
|
|
|
|
} else if (cmdType == "StartAuth") { |
|
|
|
|
} else if (cmdType == "AuthState") { |
|
|
|
|
// 认证类型
|
|
|
|
|
Dp4LoginWidget *loginWidget = static_cast<Dp4LoginWidget *>(content()); |
|
|
|
|
loginWidget->updateAuthenResult(data.value("AuthType").toInt(), data.value("AuthState").toInt()); |
|
|
|
|
int authType = data.value("AuthType").toInt(); |
|
|
|
|
int authState = data.value("AuthState").toInt(); |
|
|
|
|
if (authType == AuthType::AT_All && authState == AuthState::AS_Success) { |
|
|
|
|
init(); |
|
|
|
|
} else if (m_loginWidget) { |
|
|
|
|
m_loginWidget->updateAuthenResult(authType, authState); |
|
|
|
|
} |
|
|
|
|
} else if (cmdType == "LimitsInfo") { |
|
|
|
|
} else if (cmdType == "message") { |
|
|
|
|
} else if (cmdType == "AccountError") { |
|
|
|
|
// 验证后接收到了错误的消息
|
|
|
|
|
Dp4LoginWidget *loginWidget = static_cast<Dp4LoginWidget *>(content()); |
|
|
|
|
loginWidget->setMessage(data.value("type").toString(), data.value("message").toString()); |
|
|
|
|
if (m_loginWidget) |
|
|
|
|
m_loginWidget->setAccountError(); |
|
|
|
|
} else if (cmdType == "GetAuthenInfo") { |
|
|
|
|
QJsonObject retDataObj; |
|
|
|
|
// 是否需要调用外部的登录方式
|
|
|
|
|
@ -120,7 +158,7 @@ std::string Dp4LoginModule::onMessage(const std::string &message) |
|
|
|
|
|
|
|
|
|
QJsonDocument doc; |
|
|
|
|
doc.setObject(retObj); |
|
|
|
|
return doc.toJson().toStdString(); |
|
|
|
|
return doc.toJson(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|