summaryrefslogtreecommitdiffstats
path: root/src/modules/UserBackendMysql/UserBackendMysql.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/UserBackendMysql/UserBackendMysql.cpp')
-rw-r--r--src/modules/UserBackendMysql/UserBackendMysql.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/modules/UserBackendMysql/UserBackendMysql.cpp b/src/modules/UserBackendMysql/UserBackendMysql.cpp
index f169593..e076b10 100644
--- a/src/modules/UserBackendMysql/UserBackendMysql.cpp
+++ b/src/modules/UserBackendMysql/UserBackendMysql.cpp
@@ -124,6 +124,14 @@ bool UserBackendMysql::handleConfigEntry(const Core::ConfigEntry &entry, bool ha
if(entry[3].empty())
queryDeleteUser = entry[2][0];
}
+ else if(entry[2].getKey().matches("AddUserToGroup")) {
+ if(entry[3].empty())
+ queryAddUserToGroup = entry[2][0];
+ }
+ else if(entry[2].getKey().matches("DeleteUserFromGroup")) {
+ if(entry[3].empty())
+ queryDeleteUserFromGroup = entry[2][0];
+ }
else if(!entry[2].empty())
return false;
}
@@ -529,6 +537,44 @@ void UserBackendMysql::deleteUser(unsigned long uid) throw(Core::Exception) {
lastUpdate = boost::posix_time::microsec_clock::universal_time();
}
+void UserBackendMysql::addUserToGroup(unsigned long uid, unsigned long gid) throw(Core::Exception) {
+ application->getThreadManager()->detach();
+
+ boost::lock_guard<boost::mutex> lock(mutex);
+
+ ArgumentMap args;
+ args.insert(std::make_pair("UID", uid));
+ args.insert(std::make_pair("GID", gid));
+
+ Result result = query(queryAddUserToGroup, args);
+
+ if(result.getErrno()) {
+ if(result.getErrno() == ER_DUP_ENTRY)
+ return;
+ else
+ throw Core::Exception(Core::Exception::NOT_AVAILABLE);
+ }
+
+ lastUpdate = boost::posix_time::microsec_clock::universal_time();
+}
+
+void UserBackendMysql::deleteUserFromGroup(unsigned long uid, unsigned long gid) throw(Core::Exception) {
+ application->getThreadManager()->detach();
+
+ boost::lock_guard<boost::mutex> lock(mutex);
+
+ ArgumentMap args;
+ args.insert(std::make_pair("UID", uid));
+ args.insert(std::make_pair("GID", gid));
+
+ Result result = query(queryDeleteUserFromGroup, args);
+
+ if(result.getErrno())
+ throw Core::Exception(Core::Exception::NOT_AVAILABLE);
+
+ lastUpdate = boost::posix_time::microsec_clock::universal_time();
+}
+
}
}
}