diff options
Diffstat (limited to 'src/Common/UserManager.cpp')
-rw-r--r-- | src/Common/UserManager.cpp | 35 |
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) |