134 lines
4.3 KiB
C++
134 lines
4.3 KiB
C++
// 认证系统使用示例和测试
|
|
#include <QApplication>
|
|
#include <QWidget>
|
|
#include <QPushButton>
|
|
#include <QVBoxLayout>
|
|
#include <QMessageBox>
|
|
#include "src/launcher/GUI/front/auth.hpp"
|
|
|
|
class TestWidget : public QWidget {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
TestWidget(QWidget* parent = nullptr) : QWidget(parent) {
|
|
setupUI();
|
|
connectSignals();
|
|
}
|
|
|
|
private slots:
|
|
void testBasicAuth() {
|
|
// 使用全局便捷函数进行基本认证
|
|
UserDataManager::authResult result = Auth::authenticate(this);
|
|
|
|
QString message;
|
|
switch(result) {
|
|
case UserDataManager::OK:
|
|
message = "认证成功!";
|
|
break;
|
|
case UserDataManager::WrongPassword:
|
|
message = "密码错误!";
|
|
break;
|
|
case UserDataManager::UserNotFound:
|
|
message = "用户不存在!";
|
|
break;
|
|
case UserDataManager::Cancelled:
|
|
message = "用户取消了认证!";
|
|
break;
|
|
default:
|
|
message = "未知错误!";
|
|
}
|
|
|
|
QMessageBox::information(this, "认证结果", message);
|
|
}
|
|
|
|
void testAuthWithCallback() {
|
|
// 使用带回调的认证
|
|
auto callback = []() -> bool {
|
|
// 这里可以执行任何需要认证后的操作
|
|
QMessageBox::information(nullptr, "回调", "认证成功后的回调函数被执行!");
|
|
return true; // 返回true表示回调成功
|
|
};
|
|
|
|
UserDataManager::authResult result = Auth::authenticateWithCallback(callback, this);
|
|
|
|
QString message;
|
|
switch(result) {
|
|
case UserDataManager::OK:
|
|
message = "认证和回调都成功!";
|
|
break;
|
|
case UserDataManager::CallBackRunFalse:
|
|
message = "认证成功但回调失败!";
|
|
break;
|
|
case UserDataManager::WrongPassword:
|
|
message = "密码错误!";
|
|
break;
|
|
case UserDataManager::UserNotFound:
|
|
message = "用户不存在!";
|
|
break;
|
|
case UserDataManager::Cancelled:
|
|
message = "用户取消了认证!";
|
|
break;
|
|
default:
|
|
message = "未知错误!";
|
|
}
|
|
|
|
QMessageBox::information(this, "认证结果", message);
|
|
}
|
|
|
|
void testUserManagement() {
|
|
// 获取用户管理器实例
|
|
UserDataManager& manager = Auth::getDefaultManager();
|
|
|
|
// 添加测试用户
|
|
bool success = manager.addUser("testuser", "testpass");
|
|
if (success) {
|
|
QMessageBox::information(this, "用户管理", "测试用户添加成功!\n用户名: testuser\n密码: testpass");
|
|
} else {
|
|
QMessageBox::warning(this, "用户管理", "测试用户添加失败!可能用户已存在。");
|
|
}
|
|
|
|
// 显示所有用户
|
|
auto users = manager.getAllUsers();
|
|
QString userList = "当前用户列表:\n";
|
|
for (const auto& user : users) {
|
|
userList += QString::fromStdString(user.username) + "\n";
|
|
}
|
|
QMessageBox::information(this, "用户列表", userList);
|
|
}
|
|
|
|
private:
|
|
void setupUI() {
|
|
setWindowTitle("认证系统测试");
|
|
setFixedSize(300, 200);
|
|
|
|
auto* layout = new QVBoxLayout(this);
|
|
|
|
auto* basicAuthBtn = new QPushButton("测试基本认证", this);
|
|
auto* callbackAuthBtn = new QPushButton("测试带回调认证", this);
|
|
auto* userMgmtBtn = new QPushButton("测试用户管理", this);
|
|
|
|
layout->addWidget(basicAuthBtn);
|
|
layout->addWidget(callbackAuthBtn);
|
|
layout->addWidget(userMgmtBtn);
|
|
|
|
connect(basicAuthBtn, &QPushButton::clicked, this, &TestWidget::testBasicAuth);
|
|
connect(callbackAuthBtn, &QPushButton::clicked, this, &TestWidget::testAuthWithCallback);
|
|
connect(userMgmtBtn, &QPushButton::clicked, this, &TestWidget::testUserManagement);
|
|
}
|
|
|
|
void connectSignals() {
|
|
// 信号连接已在setupUI中完成
|
|
}
|
|
};
|
|
|
|
int main(int argc, char *argv[]) {
|
|
QApplication app(argc, argv);
|
|
|
|
TestWidget widget;
|
|
widget.show();
|
|
|
|
return app.exec();
|
|
}
|
|
|
|
#include "auth_test_example.moc"
|