#include #include #include #include #include #include #include // Db types #include "AudioTypes.hpp" #include "FileTypes.hpp" #include "MediaDirectory.hpp" #include "User.hpp" #include "DatabaseHandler.hpp" namespace Database { namespace { Wt::Auth::AuthService authService; Wt::Auth::PasswordService passwordService(authService); } void Handler::configureAuth(void) { authService.setEmailVerificationEnabled(true); Wt::Auth::PasswordVerifier *verifier = new Wt::Auth::PasswordVerifier(); verifier->addHashFunction(new Wt::Auth::BCryptHashFunction(8)); passwordService.setVerifier(verifier); passwordService.setAttemptThrottlingEnabled(true); passwordService.setStrengthValidator(new Wt::Auth::PasswordStrengthValidator()); } const Wt::Auth::AuthService& Handler::getAuthService() { return authService; } const Wt::Auth::PasswordService& Handler::getPasswordService() { return passwordService; } Handler::Handler(boost::filesystem::path db) : _dbBackend( db.string() ) { _session.setConnection(_dbBackend); _session.mapClass("genre"); _session.mapClass("track"); _session.mapClass("artist"); _session.mapClass("release"); _session.mapClass("release"); _session.mapClass("path"); _session.mapClass("video"); _session.mapClass("media_directory"); _session.mapClass("media_directory_settings"); _session.mapClass("user"); _session.mapClass("auth_info"); _session.mapClass("auth_identity"); _session.mapClass("auth_token"); try { _session.createTables(); } catch(std::exception& e) { std::cerr << "Cannot create tables: " << e.what() << std::endl; } _dbBackend.executeSql("pragma journal_mode=WAL"); _users = new UserDatabase(_session); } Handler::~Handler() { delete _users; } Wt::Auth::AbstractUserDatabase& Handler::getUserDatabase() { return *_users; } } // namespace Database