summaryrefslogtreecommitdiffstats
path: root/src/Server
diff options
context:
space:
mode:
Diffstat (limited to 'src/Server')
-rw-r--r--src/Server/UserBackend.h22
-rw-r--r--src/Server/UserManager.cpp80
-rw-r--r--src/Server/UserManager.h5
3 files changed, 107 insertions, 0 deletions
diff --git a/src/Server/UserBackend.h b/src/Server/UserBackend.h
index 2a51d1b..001ee49 100644
--- a/src/Server/UserBackend.h
+++ b/src/Server/UserBackend.h
@@ -28,6 +28,7 @@
#include <Net/Exception.h>
#include <map>
+#include <set>
#include <string>
#include <boost/smart_ptr.hpp>
@@ -52,10 +53,31 @@ class UserBackend {
throw(Net::Exception(Net::Exception::NOT_IMPLEMENTED));
}
+ virtual boost::shared_ptr<Common::UserInfo> getUserInfoByName(const std::string &name _UNUSED_PARAMETER_) throw(Net::Exception) {
+ throw(Net::Exception(Net::Exception::NOT_IMPLEMENTED));
+ }
+
+ virtual boost::shared_ptr<std::set<unsigned long> > getUserGroups(unsigned long uid _UNUSED_PARAMETER_) throw(Net::Exception) {
+ throw(Net::Exception(Net::Exception::NOT_IMPLEMENTED));
+ }
+
+
virtual boost::shared_ptr<std::map<unsigned long, Common::GroupInfo> > getGroupList() throw(Net::Exception) {
throw(Net::Exception(Net::Exception::NOT_IMPLEMENTED));
}
+ virtual std::string getGroupName(unsigned long gid _UNUSED_PARAMETER_) throw(Net::Exception) {
+ throw(Net::Exception(Net::Exception::NOT_IMPLEMENTED));
+ }
+
+ virtual unsigned long getGroupId(const std::string &name _UNUSED_PARAMETER_) throw(Net::Exception) {
+ throw(Net::Exception(Net::Exception::NOT_IMPLEMENTED));
+ }
+
+ virtual boost::shared_ptr<std::set<unsigned long> > getGroupUsers(unsigned long gid _UNUSED_PARAMETER_) throw(Net::Exception) {
+ throw(Net::Exception(Net::Exception::NOT_IMPLEMENTED));
+ }
+
// TODO Better interface...
virtual void setPassword(unsigned long uid _UNUSED_PARAMETER_, const std::string &password _UNUSED_PARAMETER_) throw(Net::Exception) {
throw(Net::Exception(Net::Exception::NOT_IMPLEMENTED));
diff --git a/src/Server/UserManager.cpp b/src/Server/UserManager.cpp
index 7101b2c..e38f458 100644
--- a/src/Server/UserManager.cpp
+++ b/src/Server/UserManager.cpp
@@ -66,6 +66,38 @@ boost::shared_ptr<Common::UserInfo> UserManager::getUserInfo(unsigned long uid)
throw e;
}
+boost::shared_ptr<Common::UserInfo> UserManager::getUserInfoByName(const std::string &name) throw(Net::Exception) {
+ Net::Exception e(Net::Exception::NOT_IMPLEMENTED);
+
+ for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) {
+ try {
+ return (*backend)->getUserInfoByName(name);
+ }
+ catch(Net::Exception e2) {
+ if(e.getErrorCode() == Net::Exception::NOT_IMPLEMENTED && e2.getErrorCode() != Net::Exception::NOT_IMPLEMENTED)
+ e = e2;
+ }
+ }
+
+ throw e;
+}
+
+boost::shared_ptr<std::set<unsigned long> > UserManager::getUserGroups(unsigned long uid) throw(Net::Exception) {
+ Net::Exception e(Net::Exception::NOT_IMPLEMENTED);
+
+ for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) {
+ try {
+ return (*backend)->getUserGroups(uid);
+ }
+ catch(Net::Exception e2) {
+ if(e.getErrorCode() == Net::Exception::NOT_IMPLEMENTED && e2.getErrorCode() != Net::Exception::NOT_IMPLEMENTED)
+ e = e2;
+ }
+ }
+
+ throw e;
+}
+
boost::shared_ptr<std::map<unsigned long, Common::GroupInfo> > UserManager::getGroupList() throw(Net::Exception) {
Net::Exception e(Net::Exception::NOT_IMPLEMENTED);
@@ -82,6 +114,54 @@ boost::shared_ptr<std::map<unsigned long, Common::GroupInfo> > UserManager::getG
throw e;
}
+std::string UserManager::getGroupName(unsigned long gid) throw(Net::Exception) {
+ Net::Exception e(Net::Exception::NOT_IMPLEMENTED);
+
+ for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) {
+ try {
+ return (*backend)->getGroupName(gid);
+ }
+ catch(Net::Exception e2) {
+ if(e.getErrorCode() == Net::Exception::NOT_IMPLEMENTED && e2.getErrorCode() != Net::Exception::NOT_IMPLEMENTED)
+ e = e2;
+ }
+ }
+
+ throw e;
+}
+
+unsigned long UserManager::getGroupId(const std::string &name) throw(Net::Exception) {
+ Net::Exception e(Net::Exception::NOT_IMPLEMENTED);
+
+ for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) {
+ try {
+ return (*backend)->getGroupId(name);
+ }
+ catch(Net::Exception e2) {
+ if(e.getErrorCode() == Net::Exception::NOT_IMPLEMENTED && e2.getErrorCode() != Net::Exception::NOT_IMPLEMENTED)
+ e = e2;
+ }
+ }
+
+ throw e;
+}
+
+boost::shared_ptr<std::set<unsigned long> > UserManager::getGroupUsers(unsigned long gid) throw(Net::Exception) {
+ Net::Exception e(Net::Exception::NOT_IMPLEMENTED);
+
+ for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) {
+ try {
+ return (*backend)->getGroupUsers(gid);
+ }
+ catch(Net::Exception e2) {
+ if(e.getErrorCode() == Net::Exception::NOT_IMPLEMENTED && e2.getErrorCode() != Net::Exception::NOT_IMPLEMENTED)
+ e = e2;
+ }
+ }
+
+ throw e;
+}
+
void UserManager::setPassword(unsigned long uid, const std::string &password) throw(Net::Exception) {
Net::Exception e(Net::Exception::NOT_IMPLEMENTED);
diff --git a/src/Server/UserManager.h b/src/Server/UserManager.h
index 3377727..fe0ef3f 100644
--- a/src/Server/UserManager.h
+++ b/src/Server/UserManager.h
@@ -59,8 +59,13 @@ class UserManager : boost::noncopyable {
boost::shared_ptr<std::map<unsigned long, Common::UserInfo> > getUserList() throw(Net::Exception);
boost::shared_ptr<Common::UserInfo> getUserInfo(unsigned long uid) throw(Net::Exception);
+ boost::shared_ptr<Common::UserInfo> getUserInfoByName(const std::string &name) throw(Net::Exception);
+ boost::shared_ptr<std::set<unsigned long> > getUserGroups(unsigned long uid) throw(Net::Exception);
boost::shared_ptr<std::map<unsigned long, Common::GroupInfo> > getGroupList() throw(Net::Exception);
+ std::string getGroupName(unsigned long gid) throw(Net::Exception);
+ unsigned long getGroupId(const std::string &name) throw(Net::Exception);
+ boost::shared_ptr<std::set<unsigned long> > getGroupUsers(unsigned long gid) throw(Net::Exception);
void setPassword(unsigned long uid, const std::string &password) throw(Net::Exception);