Older/WebApplication/WebApplication.cpp

65 lines
2.4 KiB
C++
Raw Normal View History

2024-10-30 23:59:59 +08:00
#include "WebApplication.h"
#include "BoostLog.h"
#include "Hello.h"
2024-11-01 19:05:20 +08:00
#include "Restful.h"
2024-10-31 19:40:29 +08:00
#include "Session.h"
2024-11-11 19:21:48 +08:00
#include <Wt/Auth/AuthService.h>
#include <Wt/Auth/HashFunction.h>
#include <Wt/Auth/PasswordService.h>
#include <Wt/Auth/PasswordStrengthValidator.h>
#include <Wt/Auth/PasswordVerifier.h>
2024-11-01 19:05:20 +08:00
#include <Wt/Dbo/SqlConnectionPool.h>
2024-10-30 23:59:59 +08:00
#include <Wt/WServer.h>
static std::unique_ptr<Wt::WApplication> createApplication(const Wt::WEnvironment &env) {
return std::make_unique<Hello>(env, false);
}
static std::unique_ptr<Wt::WApplication> createWidgetSet(const Wt::WEnvironment &env) {
return std::make_unique<Hello>(env, true);
}
WebApplication::WebApplication() {
try {
std::vector<std::string> args;
2024-11-02 00:30:14 +08:00
args.push_back("--approot=./build");
2024-10-30 23:59:59 +08:00
args.push_back("--docroot=./build");
args.push_back("--http-listen=127.0.0.1:8855");
// --docroot=. --no-compression --http-listen 127.0.0.1:8855
2024-11-11 19:21:48 +08:00
initializeAuthenticationService();
2024-10-30 23:59:59 +08:00
m_server = std::make_unique<Wt::WServer>("./build", args);
2024-11-01 19:05:20 +08:00
m_server->addEntryPoint(Wt::EntryPointType::Application, createApplication, "/hello");
2024-10-30 23:59:59 +08:00
m_server->addEntryPoint(Wt::EntryPointType::WidgetSet, createWidgetSet, "/gui/hello.js");
2024-11-14 21:53:18 +08:00
m_server->addResource(std::make_shared<AuthenticationResource>(), "/auth");
2024-11-01 19:05:20 +08:00
m_server->addResource(std::make_shared<PlaintextResource>(), "/plaintext");
m_server->addResource(std::make_shared<DbResource>("database.sqlite"), "/db");
2024-10-30 23:59:59 +08:00
2024-11-11 19:21:48 +08:00
m_server->start();
2024-10-30 23:59:59 +08:00
} catch (const std::exception &e) {
LOG(error) << e.what();
}
}
WebApplication::~WebApplication() {
2024-11-11 19:21:48 +08:00
}
2024-10-30 23:59:59 +08:00
2024-11-11 19:21:48 +08:00
void WebApplication::initializeAuthenticationService() {
m_authService = std::make_unique<Wt::Auth::AuthService>();
m_authService->setAuthTokensEnabled(true, "logincookie");
m_passwordService = std::make_unique<Wt::Auth::PasswordService>(*m_authService);
auto verifier = std::make_unique<Wt::Auth::PasswordVerifier>();
verifier->addHashFunction(std::make_unique<Wt::Auth::BCryptHashFunction>(7));
m_passwordService->setVerifier(std::move(verifier));
m_passwordService->setPasswordThrottle(std::make_unique<Wt::Auth::AuthThrottle>());
m_passwordService->setStrengthValidator(std::make_unique<Wt::Auth::PasswordStrengthValidator>());
}
const Wt::Auth::AuthService &WebApplication::authService() {
return *m_authService;
2024-10-30 23:59:59 +08:00
}
2024-11-10 18:33:39 +08:00
2024-11-11 19:21:48 +08:00
const Wt::Auth::PasswordService &WebApplication::passwordService() {
return *m_passwordService;
}