summaryrefslogtreecommitdiffstats
path: root/src/Common/UserManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Common/UserManager.cpp')
-rw-r--r--src/Common/UserManager.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/Common/UserManager.cpp b/src/Common/UserManager.cpp
index 37cee6c..7f50f28 100644
--- a/src/Common/UserManager.cpp
+++ b/src/Common/UserManager.cpp
@@ -137,7 +137,22 @@ void UserManager::setPassword(unsigned long /*uid*/, const std::string& /*passwo
throw Core::Exception(Core::Exception::NOT_AVAILABLE);
}
+void UserManager::checkUserInfo(const UserInfo &userInfo) throw(Core::Exception) {
+ boost::shared_lock<boost::shared_mutex> lock(mutex);
+
+ if(!dbBackend)
+ throw Core::Exception(Core::Exception::NOT_AVAILABLE);
+
+ dbBackend->checkUserInfo(userInfo);
+
+ for(std::set<boost::shared_ptr<UserConfigBackend> >::iterator configBackend = configBackends.begin(); configBackend != configBackends.end(); ++configBackend) {
+ (*configBackend)->checkUserInfo(userInfo);
+ }
+}
+
void UserManager::addUser(const UserInfo &userInfo) throw(Core::Exception) {
+ checkUserInfo(userInfo);
+
boost::lock_guard<boost::shared_mutex> lock(mutex);
if(!dbBackend)
@@ -156,6 +171,8 @@ void UserManager::addUser(const UserInfo &userInfo) throw(Core::Exception) {
}
void UserManager::updateUser(unsigned long uid, const UserInfo &userInfo) throw(Core::Exception) {
+ checkUserInfo(userInfo);
+
boost::lock_guard<boost::shared_mutex> lock(mutex);
if(!dbBackend)
@@ -199,7 +216,23 @@ void UserManager::deleteUser(unsigned long uid) throw(Core::Exception) {
}
}
+
+void UserManager::checkGroupInfo(const GroupInfo &groupInfo) throw(Core::Exception) {
+ boost::shared_lock<boost::shared_mutex> lock(mutex);
+
+ if(!dbBackend)
+ throw Core::Exception(Core::Exception::NOT_AVAILABLE);
+
+ dbBackend->checkGroupInfo(groupInfo);
+
+ for(std::set<boost::shared_ptr<UserConfigBackend> >::iterator configBackend = configBackends.begin(); configBackend != configBackends.end(); ++configBackend) {
+ (*configBackend)->checkGroupInfo(groupInfo);
+ }
+}
+
void UserManager::addGroup(const GroupInfo &groupInfo) throw(Core::Exception) {
+ checkGroupInfo(groupInfo);
+
boost::lock_guard<boost::shared_mutex> lock(mutex);
if(!dbBackend)
@@ -218,6 +251,8 @@ void UserManager::addGroup(const GroupInfo &groupInfo) throw(Core::Exception) {
}
void UserManager::updateGroup(unsigned long gid, const GroupInfo &groupInfo) throw(Core::Exception) {
+ checkGroupInfo(groupInfo);
+
boost::lock_guard<boost::shared_mutex> lock(mutex);
if(!dbBackend)