diff options
Diffstat (limited to 'src/modules/UserBackendMysql.h')
-rw-r--r-- | src/modules/UserBackendMysql.h | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/src/modules/UserBackendMysql.h b/src/modules/UserBackendMysql.h index 85a25ee..60b2bd9 100644 --- a/src/modules/UserBackendMysql.h +++ b/src/modules/UserBackendMysql.h @@ -24,6 +24,8 @@ #include <Common/Configurable.h> #include <Common/ConfigManager.h> +#include <mysql/mysql.h> + namespace Mad { namespace Modules { @@ -32,37 +34,36 @@ class UserBackendMysql : private Core::UserBackend, private Common::Configurable private: static UserBackendMysql *backend; - std::string host, username, password, db; + std::string host, username, passwd, db, unixSocket; + uint16_t port; std::string queryListUsers, queryListGroups; std::string queryListUserGroups, queryListGroupUsers; std::string queryUserById, queryUserByName; std::string queryGroupById, queryGroupByName; - UserBackendMysql() {} + MYSQL *mysql; + + UserBackendMysql() : port(0), mysql(0) {} protected: virtual bool handleConfigEntry(const Common::ConfigEntry &entry, bool); virtual void configFinished(); - public: - static void registerBackend() { - if(backend) - return; + virtual bool userList(const sigc::slot<void, const std::map<unsigned long, Common::UserInfo>& > &callback); + virtual bool userInfo(unsigned long uid, const sigc::slot<void, const Common::UserInfo&> &callback); + virtual bool password(unsigned long uid, const std::string &password, const sigc::slot<void, bool> &callback); - backend = new UserBackendMysql(); - Common::ConfigManager::get()->registerConfigurable(backend); + public: + virtual ~UserBackendMysql() { + if(mysql) { + mysql_close(mysql); + mysql = 0; + } } - static void unregisterBackend() { - if(!backend) - return; - - Common::ConfigManager::get()->unregisterConfigurable(backend); - UserBackend::unregisterBackend(backend); - delete backend; - backend = 0; - } + static void registerBackend(); + static void unregisterBackend(); }; } |