66 lines
1.5 KiB
C++
66 lines
1.5 KiB
C++
#ifndef __WEBAPPLICATION_H__
|
|
#define __WEBAPPLICATION_H__
|
|
|
|
#include "Singleton.h"
|
|
#include <Wt/WApplication.h>
|
|
#include <memory>
|
|
|
|
namespace Wt {
|
|
class WServer;
|
|
class WApplication;
|
|
class WEnvironment;
|
|
|
|
namespace Auth {
|
|
class AuthService;
|
|
class PasswordService;
|
|
} // namespace Auth
|
|
|
|
}; // namespace Wt
|
|
|
|
class Session;
|
|
class LoginPage;
|
|
class NavigationBar;
|
|
|
|
namespace WebToolkit {
|
|
|
|
class Application : public Wt::WApplication {
|
|
public:
|
|
Application(const Wt::WEnvironment &env, bool embedded);
|
|
~Application();
|
|
|
|
protected:
|
|
void authEvent();
|
|
void handlePathChange(const std::string &path);
|
|
|
|
private:
|
|
std::unique_ptr<Session> m_session;
|
|
std::string m_externalPath;
|
|
|
|
Wt::WContainerWidget *m_root = nullptr;
|
|
NavigationBar *m_navigationBar = nullptr;
|
|
std::unique_ptr<LoginPage> m_loginPage;
|
|
LoginPage *m_loginPageRef = nullptr;
|
|
};
|
|
|
|
class Server {
|
|
friend class Amass::Singleton<Server>;
|
|
|
|
public:
|
|
~Server();
|
|
|
|
void initializeAuthenticationService();
|
|
Wt::Auth::AuthService &authService();
|
|
const Wt::Auth::PasswordService &passwordService();
|
|
|
|
protected:
|
|
Server(uint16_t port, const std::string &applicationRoot, const std::string &documentRoot);
|
|
std::unique_ptr<Wt::WApplication> createApplication(const Wt::WEnvironment &env, bool embedded);
|
|
|
|
private:
|
|
std::unique_ptr<Wt::WServer> m_server;
|
|
|
|
std::unique_ptr<Wt::Auth::AuthService> m_authService;
|
|
std::unique_ptr<Wt::Auth::PasswordService> m_passwordService;
|
|
};
|
|
} // namespace WebToolkit
|
|
#endif // __WEBAPPLICATION_H__
|