diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2009-06-24 00:04:28 +0200 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2009-06-24 00:04:28 +0200 |
commit | dff7c00a0c2c3fcb64efd611d70398d711ad861b (patch) | |
tree | 93c1556c15987b37e8d2ba3421cb246006a02eac /src/Common | |
parent | 02b9e16833acbdaa820bd3b8b64d652a41a8ff58 (diff) | |
download | mad-dff7c00a0c2c3fcb64efd611d70398d711ad861b.tar mad-dff7c00a0c2c3fcb64efd611d70398d711ad861b.zip |
NetworkUserBackend implementiert
Diffstat (limited to 'src/Common')
-rw-r--r-- | src/Common/Backends/CMakeLists.txt | 6 | ||||
-rw-r--r-- | src/Common/Backends/NetworkUserBackend.cpp | 203 | ||||
-rw-r--r-- | src/Common/Backends/NetworkUserBackend.h | 91 | ||||
-rw-r--r-- | src/Common/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/Common/Requests/CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/Common/Requests/GroupListRequest.h | 38 | ||||
-rw-r--r-- | src/Common/Requests/GroupUserListRequest.cpp | 36 | ||||
-rw-r--r-- | src/Common/Requests/GroupUserListRequest.h | 44 | ||||
-rw-r--r-- | src/Common/Requests/UserGroupListRequest.cpp | 36 | ||||
-rw-r--r-- | src/Common/Requests/UserGroupListRequest.h | 44 | ||||
-rw-r--r-- | src/Common/Requests/UserInfoRequest.cpp | 36 | ||||
-rw-r--r-- | src/Common/Requests/UserInfoRequest.h | 44 | ||||
-rw-r--r-- | src/Common/Requests/UserListRequest.h | 38 | ||||
-rw-r--r-- | src/Common/UserBackend.h | 16 | ||||
-rw-r--r-- | src/Common/UserManager.cpp | 20 | ||||
-rw-r--r-- | src/Common/UserManager.h | 18 |
16 files changed, 329 insertions, 349 deletions
diff --git a/src/Common/Backends/CMakeLists.txt b/src/Common/Backends/CMakeLists.txt new file mode 100644 index 0000000..4d9d30e --- /dev/null +++ b/src/Common/Backends/CMakeLists.txt @@ -0,0 +1,6 @@ +include_directories(${INCLUDES}) + +add_library(Backends STATIC + NetworkUserBackend.cpp NetworkUserBackend.h +) +target_link_libraries(Backends Common) diff --git a/src/Common/Backends/NetworkUserBackend.cpp b/src/Common/Backends/NetworkUserBackend.cpp new file mode 100644 index 0000000..81fc94a --- /dev/null +++ b/src/Common/Backends/NetworkUserBackend.cpp @@ -0,0 +1,203 @@ +/* + * NetworkUserBackend.cpp + * + * Copyright (C) 2009 Matthias Schiffer <matthias@gamezock.de> + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "NetworkUserBackend.h" +#include "../RequestManager.h" + +namespace Mad { +namespace Common { +namespace Backends { + +void NetworkUserBackend::IdUserRequest::sendRequest() { + Common::XmlPacket packet; + packet.setType(type); + packet.set(idType, id); + + sendPacket(packet); +} + +void NetworkUserBackend::NameUserRequest::sendRequest() { + Common::XmlPacket packet; + packet.setType(type); + packet.set("name", name); + + sendPacket(packet); +} + +boost::shared_ptr<const std::map<unsigned long, UserInfo> > NetworkUserBackend::getUserList() throw(Core::Exception) { + boost::shared_ptr<SimpleUserRequest> request(new SimpleUserRequest(application, "ListUsers")); + application->getRequestManager()->sendRequest(connection, request); + request->wait(); + + std::pair<boost::shared_ptr<const XmlPacket>, Core::Exception> result = request->getResult(); + if(!result.first || result.second) + throw result.second; + + boost::shared_ptr<std::map<unsigned long, UserInfo> > userList(new std::map<unsigned long, UserInfo>); + + const XmlPacket::List *users = result.first->getList("users"); + if(users) { + for(XmlPacket::List::const_iterator user = users->begin(); user != users->end(); ++user) { + UserInfo userInfo(user->get<unsigned long>("uid"), user->get<const std::string&>("username")); + userInfo.setGid(user->get<unsigned long>("gid")); + userInfo.setFullName(user->get<const std::string&>("fullName")); + + userList->insert(std::make_pair(userInfo.getUid(), userInfo)); + } + } + + return userList; +} + +boost::shared_ptr<const UserInfo> NetworkUserBackend::getUserInfo(unsigned long uid) throw(Core::Exception) { + boost::shared_ptr<IdUserRequest> request(new IdUserRequest(application, "GetUserInfo", "uid", uid)); + application->getRequestManager()->sendRequest(connection, request); + request->wait(); + + std::pair<boost::shared_ptr<const XmlPacket>, Core::Exception> result = request->getResult(); + if(!result.first || result.second) + throw result.second; + + boost::shared_ptr<UserInfo> userInfo(new UserInfo(result.first->get<unsigned long>("uid"), result.first->get<const std::string&>("username"))); + userInfo->setGid(result.first->get<unsigned long>("gid")); + userInfo->setFullName(result.first->get<const std::string&>("fullName")); + + return userInfo; +} + +boost::shared_ptr<const UserInfo> NetworkUserBackend::getUserInfoByName(const std::string &name) throw(Core::Exception) { + boost::shared_ptr<NameUserRequest> request(new NameUserRequest(application, "GetUserInfo", name)); + application->getRequestManager()->sendRequest(connection, request); + request->wait(); + + std::pair<boost::shared_ptr<const XmlPacket>, Core::Exception> result = request->getResult(); + if(!result.first || result.second) + throw result.second; + + boost::shared_ptr<UserInfo> userInfo(new UserInfo(result.first->get<unsigned long>("uid"), result.first->get<const std::string&>("username"))); + userInfo->setGid(result.first->get<unsigned long>("gid")); + userInfo->setFullName(result.first->get<const std::string&>("fullName")); + + return userInfo; +} + +boost::shared_ptr<const std::set<unsigned long> > NetworkUserBackend::getUserGroupList(unsigned long uid) throw(Core::Exception) { + boost::shared_ptr<IdUserRequest> request(new IdUserRequest(application, "ListUserGroups", "uid", uid)); + application->getRequestManager()->sendRequest(connection, request); + request->wait(); + + std::pair<boost::shared_ptr<const XmlPacket>, Core::Exception> result = request->getResult(); + if(!result.first || result.second) + throw result.second; + + boost::shared_ptr<std::set<unsigned long> > groupList(new std::set<unsigned long>); + + const XmlPacket::List *groups = result.first->getList("groups"); + if(groups) { + for(XmlPacket::List::const_iterator group = groups->begin(); group != groups->end(); ++group) + groupList->insert(group->get<unsigned long>("gid")); + } + + return groupList; +} + +boost::shared_ptr<const std::map<unsigned long, GroupInfo> > NetworkUserBackend::getGroupList() throw(Core::Exception) { + boost::shared_ptr<SimpleUserRequest> request(new SimpleUserRequest(application, "ListGroups")); + application->getRequestManager()->sendRequest(connection, request); + request->wait(); + + std::pair<boost::shared_ptr<const XmlPacket>, Core::Exception> result = request->getResult(); + if(!result.first || result.second) + throw result.second; + + boost::shared_ptr<std::map<unsigned long, GroupInfo> > groupList(new std::map<unsigned long, GroupInfo>); + + const XmlPacket::List *groups = result.first->getList("groups"); + if(groups) { + for(XmlPacket::List::const_iterator group = groups->begin(); group != groups->end(); ++group) { + GroupInfo groupInfo(group->get<unsigned long>("gid"), group->get<const std::string&>("name")); + groupList->insert(std::make_pair(groupInfo.getGid(), groupInfo)); + } + } + + return groupList; +} + +boost::shared_ptr<const GroupInfo> NetworkUserBackend::getGroupInfo(unsigned long gid) throw(Core::Exception) { + boost::shared_ptr<IdUserRequest> request(new IdUserRequest(application, "GetGroupInfo", "gid", gid)); + application->getRequestManager()->sendRequest(connection, request); + request->wait(); + + std::pair<boost::shared_ptr<const XmlPacket>, Core::Exception> result = request->getResult(); + if(!result.first || result.second) + throw result.second; + + boost::shared_ptr<GroupInfo> groupInfo(new GroupInfo(result.first->get<unsigned long>("gid"), result.first->get<const std::string&>("name"))); + + return groupInfo; +} + +boost::shared_ptr<const GroupInfo> NetworkUserBackend::getGroupInfoByName(const std::string &name) throw(Core::Exception) { + boost::shared_ptr<NameUserRequest> request(new NameUserRequest(application, "GetGroupInfo", name)); + application->getRequestManager()->sendRequest(connection, request); + request->wait(); + + std::pair<boost::shared_ptr<const XmlPacket>, Core::Exception> result = request->getResult(); + if(!result.first || result.second) + throw result.second; + + boost::shared_ptr<GroupInfo> groupInfo(new GroupInfo(result.first->get<unsigned long>("gid"), result.first->get<const std::string&>("name"))); + + return groupInfo; +} + +boost::shared_ptr<const std::set<unsigned long> > NetworkUserBackend::getGroupUserList(unsigned long gid) throw(Core::Exception) { + boost::shared_ptr<IdUserRequest> request(new IdUserRequest(application, "ListGroupUsers", "gid", gid)); + application->getRequestManager()->sendRequest(connection, request); + request->wait(); + + std::pair<boost::shared_ptr<const XmlPacket>, Core::Exception> result = request->getResult(); + if(!result.first || result.second) + throw result.second; + + boost::shared_ptr<std::set<unsigned long> > userList(new std::set<unsigned long>); + + const XmlPacket::List *users = result.first->getList("users"); + if(users) { + for(XmlPacket::List::const_iterator user = users->begin(); user != users->end(); ++user) { + userList->insert(user->get<unsigned long>("uid")); + } + } + + return userList; +} + + +/*void NetworkUserBackend::setPassword(unsigned long uid, const std::string &password) throw(Core::Exception) { + +}*/ + + +/*void NetworkUserBackend::addUser(const UserInfo &userInfo) throw(Core::Exception) { + +}*/ + +} +} +} diff --git a/src/Common/Backends/NetworkUserBackend.h b/src/Common/Backends/NetworkUserBackend.h new file mode 100644 index 0000000..c569ab6 --- /dev/null +++ b/src/Common/Backends/NetworkUserBackend.h @@ -0,0 +1,91 @@ +/* + * NetworkUserBackend.h + * + * Copyright (C) 2009 Matthias Schiffer <matthias@gamezock.de> + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef MAD_COMMON_BACKENDS_NETWORKUSERBACKEND_H_ +#define MAD_COMMON_BACKENDS_NETWORKUSERBACKEND_H_ + +#include "../UserBackend.h" +#include "../Requests/SimpleRequest.h" + +namespace Mad { +namespace Common { +namespace Backends { + +class NetworkUserBackend : public UserBackend { + private: + class SimpleUserRequest : public Requests::SimpleRequest { + public: + SimpleUserRequest(Application *application, const std::string &type) : SimpleRequest(application, type) {} + }; + + class IdUserRequest : public Request { + private: + std::string type; + std::string idType; + unsigned long id; + + + protected: + virtual void sendRequest(); + + public: + IdUserRequest(Application *application, const std::string &type0, const std::string &idType0, unsigned long id0) + : Request(application), type(type0), idType(idType0), id(id0) {} + }; + + class NameUserRequest : public Request { + private: + std::string type; + std::string name; + + + protected: + virtual void sendRequest(); + + public: + NameUserRequest(Application *application, const std::string &type0, const std::string &name0) + : Request(application), type(type0), name(name0) {} + }; + + Application *application; + Connection *connection; + + protected: + virtual boost::shared_ptr<const std::map<unsigned long, UserInfo> > getUserList() throw(Core::Exception); + virtual boost::shared_ptr<const UserInfo> getUserInfo(unsigned long uid) throw(Core::Exception); + virtual boost::shared_ptr<const UserInfo> getUserInfoByName(const std::string &name) throw(Core::Exception); + virtual boost::shared_ptr<const std::set<unsigned long> > getUserGroupList(unsigned long uid) throw(Core::Exception); + + virtual boost::shared_ptr<const std::map<unsigned long, GroupInfo> > getGroupList() throw(Core::Exception); + virtual boost::shared_ptr<const GroupInfo> getGroupInfo(unsigned long gid) throw(Core::Exception); + virtual boost::shared_ptr<const GroupInfo> getGroupInfoByName(const std::string &name) throw(Core::Exception); + virtual boost::shared_ptr<const std::set<unsigned long> > getGroupUserList(unsigned long gid) throw(Core::Exception); + + //virtual void setPassword(unsigned long uid, const std::string &password) throw(Core::Exception); + //virtual void addUser(const UserInfo &userInfo) throw(Core::Exception); + + public: + NetworkUserBackend(Application *application0, Connection *connection0) : application(application0), connection(connection0) {} +}; + +} +} +} + +#endif /* MAD_COMMON_BACKENDS_NETWORKUSERBACKEND_H_ */ diff --git a/src/Common/CMakeLists.txt b/src/Common/CMakeLists.txt index 3ec77c4..7201ed5 100644 --- a/src/Common/CMakeLists.txt +++ b/src/Common/CMakeLists.txt @@ -1,3 +1,4 @@ +add_subdirectory(Backends) add_subdirectory(RequestHandlers) add_subdirectory(Requests) @@ -25,4 +26,4 @@ add_library(Common UserManager.cpp UserManager.h XmlPacket.cpp XmlPacket.h ) -target_link_libraries(Common RequestHandlers Requests Net ${LIBXML2_LIBRARIES} ${LTDL_LIBRARIES}) +target_link_libraries(Common Backends RequestHandlers Requests Net ${LIBXML2_LIBRARIES} ${LTDL_LIBRARIES}) diff --git a/src/Common/Requests/CMakeLists.txt b/src/Common/Requests/CMakeLists.txt index b6ff90c..d80b0fa 100644 --- a/src/Common/Requests/CMakeLists.txt +++ b/src/Common/Requests/CMakeLists.txt @@ -3,13 +3,8 @@ include_directories(${INCLUDES}) add_library(Requests STATIC DisconnectRequest.cpp DisconnectRequest.h FSInfoRequest.h - GroupListRequest.h - GroupUserListRequest.cpp GroupUserListRequest.h IdentifyRequest.cpp IdentifyRequest.h SimpleRequest.cpp SimpleRequest.h StatusRequest.h - UserGroupListRequest.cpp UserGroupListRequest.h - UserInfoRequest.cpp UserInfoRequest.h - UserListRequest.h ) target_link_libraries(Requests ${KRB5_LIBRARIES}) diff --git a/src/Common/Requests/GroupListRequest.h b/src/Common/Requests/GroupListRequest.h deleted file mode 100644 index f8760ca..0000000 --- a/src/Common/Requests/GroupListRequest.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * GroupListRequest.h - * - * Copyright (C) 2009 Matthias Schiffer <matthias@gamezock.de> - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef MAD_COMMON_REQUESTS_GROUPLISTREQUEST_H_ -#define MAD_COMMON_REQUESTS_GROUPLISTREQUEST_H_ - -#include "SimpleRequest.h" - -namespace Mad { -namespace Common { -namespace Requests { - -class GroupListRequest : public SimpleRequest { - public: - GroupListRequest(Application *application) : SimpleRequest(application, "ListGroups") {} -}; - -} -} -} - -#endif /* MAD_COMMON_REQUESTS_GROUPLISTREQUEST_H_ */ diff --git a/src/Common/Requests/GroupUserListRequest.cpp b/src/Common/Requests/GroupUserListRequest.cpp deleted file mode 100644 index 87ab1b5..0000000 --- a/src/Common/Requests/GroupUserListRequest.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - * GroupUserListRequest.cpp - * - * Copyright (C) 2008 Matthias Schiffer <matthias@gamezock.de> - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "GroupUserListRequest.h" - -namespace Mad { -namespace Common { -namespace Requests { - -void GroupUserListRequest::sendRequest() { - Common::XmlPacket packet; - packet.setType("ListGroupUsers"); - packet.set("gid", gid); - - sendPacket(packet); -} - -} -} -} diff --git a/src/Common/Requests/GroupUserListRequest.h b/src/Common/Requests/GroupUserListRequest.h deleted file mode 100644 index f95cd3b..0000000 --- a/src/Common/Requests/GroupUserListRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * GroupUserListRequest.h - * - * Copyright (C) 2009 Matthias Schiffer <matthias@gamezock.de> - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef MAD_COMMON_REQUESTS_GROUPUSERLISTREQUEST_H_ -#define MAD_COMMON_REQUESTS_GROUPUSERLISTREQUEST_H_ - -#include "../Request.h" - -namespace Mad { -namespace Common { -namespace Requests { - -class GroupUserListRequest : public Request { - private: - unsigned long gid; - - protected: - virtual void sendRequest(); - - public: - GroupUserListRequest(Application *application, unsigned long gid0) : Request(application), gid(gid0) {} -}; - -} -} -} - -#endif /* MAD_COMMON_REQUESTS_GROUPUSERLISTREQUEST_H_ */ diff --git a/src/Common/Requests/UserGroupListRequest.cpp b/src/Common/Requests/UserGroupListRequest.cpp deleted file mode 100644 index 0c1a72f..0000000 --- a/src/Common/Requests/UserGroupListRequest.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - * UserGroupListRequest.cpp - * - * Copyright (C) 2008 Matthias Schiffer <matthias@gamezock.de> - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "UserGroupListRequest.h" - -namespace Mad { -namespace Common { -namespace Requests { - -void UserGroupListRequest::sendRequest() { - Common::XmlPacket packet; - packet.setType("ListUserGroups"); - packet.set("uid", uid); - - sendPacket(packet); -} - -} -} -} diff --git a/src/Common/Requests/UserGroupListRequest.h b/src/Common/Requests/UserGroupListRequest.h deleted file mode 100644 index 4cd27b6..0000000 --- a/src/Common/Requests/UserGroupListRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * UserGroupListRequest.h - * - * Copyright (C) 2009 Matthias Schiffer <matthias@gamezock.de> - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef MAD_COMMON_REQUESTS_USERGROUPLISTREQUEST_H_ -#define MAD_COMMON_REQUESTS_USERGROUPLISTREQUEST_H_ - -#include "../Request.h" - -namespace Mad { -namespace Common { -namespace Requests { - -class UserGroupListRequest : public Request { - private: - unsigned long uid; - - protected: - virtual void sendRequest(); - - public: - UserGroupListRequest(Application *application, unsigned long uid0) : Request(application), uid(uid0) {} -}; - -} -} -} - -#endif /* MAD_COMMON_REQUESTS_USERGROUPLISTREQUEST_H_ */ diff --git a/src/Common/Requests/UserInfoRequest.cpp b/src/Common/Requests/UserInfoRequest.cpp deleted file mode 100644 index b4b6940..0000000 --- a/src/Common/Requests/UserInfoRequest.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - * UserInfoRequest.cpp - * - * Copyright (C) 2008 Matthias Schiffer <matthias@gamezock.de> - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "UserInfoRequest.h" - -namespace Mad { -namespace Common { -namespace Requests { - -void UserInfoRequest::sendRequest() { - Common::XmlPacket packet; - packet.setType("GetUserInfo"); - packet.set("uid", uid); - - sendPacket(packet); -} - -} -} -} diff --git a/src/Common/Requests/UserInfoRequest.h b/src/Common/Requests/UserInfoRequest.h deleted file mode 100644 index 7b4b2fc..0000000 --- a/src/Common/Requests/UserInfoRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * UserInfoRequest.h - * - * Copyright (C) 2008 Matthias Schiffer <matthias@gamezock.de> - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef MAD_COMMON_REQUESTS_USERINFOREQUEST_H_ -#define MAD_COMMON_REQUESTS_USERINFOREQUEST_H_ - -#include "../Request.h" - -namespace Mad { -namespace Common { -namespace Requests { - -class UserInfoRequest : public Request { - private: - unsigned long uid; - - protected: - virtual void sendRequest(); - - public: - UserInfoRequest(Application *application, unsigned long uid0) : Request(application), uid(uid0) {} -}; - -} -} -} - -#endif /* MAD_COMMON_REQUESTS_USERINFOREQUEST_H_ */ diff --git a/src/Common/Requests/UserListRequest.h b/src/Common/Requests/UserListRequest.h deleted file mode 100644 index 9196166..0000000 --- a/src/Common/Requests/UserListRequest.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * UserListRequest.h - * - * Copyright (C) 2009 Matthias Schiffer <matthias@gamezock.de> - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef MAD_COMMON_REQUESTS_USERLISTREQUEST_H_ -#define MAD_COMMON_REQUESTS_USERLISTREQUEST_H_ - -#include "SimpleRequest.h" - -namespace Mad { -namespace Common { -namespace Requests { - -class UserListRequest : public SimpleRequest { - public: - UserListRequest(Application *application) : SimpleRequest(application, "ListUsers") {} -}; - -} -} -} - -#endif /* MAD_COMMON_REQUESTS_USERLISTREQUEST_H_ */ diff --git a/src/Common/UserBackend.h b/src/Common/UserBackend.h index 16db16c..8375551 100644 --- a/src/Common/UserBackend.h +++ b/src/Common/UserBackend.h @@ -45,36 +45,36 @@ class UserBackend { UserBackend() {} - virtual boost::shared_ptr<std::map<unsigned long, UserInfo> > getUserList() throw(Core::Exception) { + virtual boost::shared_ptr<const std::map<unsigned long, UserInfo> > getUserList() throw(Core::Exception) { throw(Core::Exception(Core::Exception::NOT_IMPLEMENTED)); } - virtual boost::shared_ptr<UserInfo> getUserInfo(unsigned long uid _UNUSED_PARAMETER_) throw(Core::Exception) { + virtual boost::shared_ptr<const UserInfo> getUserInfo(unsigned long uid _UNUSED_PARAMETER_) throw(Core::Exception) { throw(Core::Exception(Core::Exception::NOT_IMPLEMENTED)); } - virtual boost::shared_ptr<UserInfo> getUserInfoByName(const std::string &name _UNUSED_PARAMETER_) throw(Core::Exception) { + virtual boost::shared_ptr<const UserInfo> getUserInfoByName(const std::string &name _UNUSED_PARAMETER_) throw(Core::Exception) { throw(Core::Exception(Core::Exception::NOT_IMPLEMENTED)); } - virtual boost::shared_ptr<std::set<unsigned long> > getUserGroupList(unsigned long uid _UNUSED_PARAMETER_) throw(Core::Exception) { + virtual boost::shared_ptr<const std::set<unsigned long> > getUserGroupList(unsigned long uid _UNUSED_PARAMETER_) throw(Core::Exception) { throw(Core::Exception(Core::Exception::NOT_IMPLEMENTED)); } - virtual boost::shared_ptr<std::map<unsigned long, GroupInfo> > getGroupList() throw(Core::Exception) { + virtual boost::shared_ptr<const std::map<unsigned long, GroupInfo> > getGroupList() throw(Core::Exception) { throw(Core::Exception(Core::Exception::NOT_IMPLEMENTED)); } - virtual std::string getGroupName(unsigned long gid _UNUSED_PARAMETER_) throw(Core::Exception) { + virtual boost::shared_ptr<const GroupInfo> getGroupInfo(unsigned long gid _UNUSED_PARAMETER_) throw(Core::Exception) { throw(Core::Exception(Core::Exception::NOT_IMPLEMENTED)); } - virtual unsigned long getGroupId(const std::string &name _UNUSED_PARAMETER_) throw(Core::Exception) { + virtual boost::shared_ptr<const GroupInfo> getGroupInfoByName(const std::string &name _UNUSED_PARAMETER_) throw(Core::Exception) { throw(Core::Exception(Core::Exception::NOT_IMPLEMENTED)); } - virtual boost::shared_ptr<std::set<unsigned long> > getGroupUserList(unsigned long gid _UNUSED_PARAMETER_) throw(Core::Exception) { + virtual boost::shared_ptr<const std::set<unsigned long> > getGroupUserList(unsigned long gid _UNUSED_PARAMETER_) throw(Core::Exception) { throw(Core::Exception(Core::Exception::NOT_IMPLEMENTED)); } diff --git a/src/Common/UserManager.cpp b/src/Common/UserManager.cpp index 6f5f548..66cbbf4 100644 --- a/src/Common/UserManager.cpp +++ b/src/Common/UserManager.cpp @@ -31,7 +31,7 @@ bool UserManager::Compare::operator() (boost::shared_ptr<UserBackend> b1, boost: } -boost::shared_ptr<std::map<unsigned long, UserInfo> > UserManager::getUserList() throw(Core::Exception) { +boost::shared_ptr<const std::map<unsigned long, UserInfo> > UserManager::getUserList() throw(Core::Exception) { Core::Exception e(Core::Exception::NOT_IMPLEMENTED); for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) { @@ -47,7 +47,7 @@ boost::shared_ptr<std::map<unsigned long, UserInfo> > UserManager::getUserList() throw e; } -boost::shared_ptr<UserInfo> UserManager::getUserInfo(unsigned long uid) throw(Core::Exception) { +boost::shared_ptr<const UserInfo> UserManager::getUserInfo(unsigned long uid) throw(Core::Exception) { Core::Exception e(Core::Exception::NOT_IMPLEMENTED); for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) { @@ -63,7 +63,7 @@ boost::shared_ptr<UserInfo> UserManager::getUserInfo(unsigned long uid) throw(Co throw e; } -boost::shared_ptr<UserInfo> UserManager::getUserInfoByName(const std::string &name) throw(Core::Exception) { +boost::shared_ptr<const UserInfo> UserManager::getUserInfoByName(const std::string &name) throw(Core::Exception) { Core::Exception e(Core::Exception::NOT_IMPLEMENTED); for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) { @@ -79,7 +79,7 @@ boost::shared_ptr<UserInfo> UserManager::getUserInfoByName(const std::string &na throw e; } -boost::shared_ptr<std::set<unsigned long> > UserManager::getUserGroupList(unsigned long uid) throw(Core::Exception) { +boost::shared_ptr<const std::set<unsigned long> > UserManager::getUserGroupList(unsigned long uid) throw(Core::Exception) { Core::Exception e(Core::Exception::NOT_IMPLEMENTED); for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) { @@ -95,7 +95,7 @@ boost::shared_ptr<std::set<unsigned long> > UserManager::getUserGroupList(unsign throw e; } -boost::shared_ptr<std::map<unsigned long, GroupInfo> > UserManager::getGroupList() throw(Core::Exception) { +boost::shared_ptr<const std::map<unsigned long, GroupInfo> > UserManager::getGroupList() throw(Core::Exception) { Core::Exception e(Core::Exception::NOT_IMPLEMENTED); for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) { @@ -111,12 +111,12 @@ boost::shared_ptr<std::map<unsigned long, GroupInfo> > UserManager::getGroupList throw e; } -std::string UserManager::getGroupName(unsigned long gid) throw(Core::Exception) { +boost::shared_ptr<const GroupInfo> UserManager::getGroupInfo(unsigned long gid) throw(Core::Exception) { Core::Exception e(Core::Exception::NOT_IMPLEMENTED); for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) { try { - return (*backend)->getGroupName(gid); + return (*backend)->getGroupInfo(gid); } catch(Core::Exception e2) { if(e.getErrorCode() == Core::Exception::NOT_IMPLEMENTED && e2.getErrorCode() != Core::Exception::NOT_IMPLEMENTED) @@ -127,12 +127,12 @@ std::string UserManager::getGroupName(unsigned long gid) throw(Core::Exception) throw e; } -unsigned long UserManager::getGroupId(const std::string &name) throw(Core::Exception) { +boost::shared_ptr<const GroupInfo> UserManager::getGroupInfoByName(const std::string &name) throw(Core::Exception) { Core::Exception e(Core::Exception::NOT_IMPLEMENTED); for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) { try { - return (*backend)->getGroupId(name); + return (*backend)->getGroupInfoByName(name); } catch(Core::Exception e2) { if(e.getErrorCode() == Core::Exception::NOT_IMPLEMENTED && e2.getErrorCode() != Core::Exception::NOT_IMPLEMENTED) @@ -143,7 +143,7 @@ unsigned long UserManager::getGroupId(const std::string &name) throw(Core::Excep throw e; } -boost::shared_ptr<std::set<unsigned long> > UserManager::getGroupUserList(unsigned long gid) throw(Core::Exception) { +boost::shared_ptr<const std::set<unsigned long> > UserManager::getGroupUserList(unsigned long gid) throw(Core::Exception) { Core::Exception e(Core::Exception::NOT_IMPLEMENTED); for(std::set<boost::shared_ptr<UserBackend> >::iterator backend = backends.begin(); backend != backends.end(); ++backend) { diff --git a/src/Common/UserManager.h b/src/Common/UserManager.h index bdf39c1..215fde8 100644 --- a/src/Common/UserManager.h +++ b/src/Common/UserManager.h @@ -58,15 +58,15 @@ class UserManager : boost::noncopyable { backends.erase(backend); } - boost::shared_ptr<std::map<unsigned long, UserInfo> > getUserList() throw(Core::Exception); - boost::shared_ptr<UserInfo> getUserInfo(unsigned long uid) throw(Core::Exception); - boost::shared_ptr<UserInfo> getUserInfoByName(const std::string &name) throw(Core::Exception); - boost::shared_ptr<std::set<unsigned long> > getUserGroupList(unsigned long uid) throw(Core::Exception); - - boost::shared_ptr<std::map<unsigned long, GroupInfo> > getGroupList() throw(Core::Exception); - std::string getGroupName(unsigned long gid) throw(Core::Exception); - unsigned long getGroupId(const std::string &name) throw(Core::Exception); - boost::shared_ptr<std::set<unsigned long> > getGroupUserList(unsigned long gid) throw(Core::Exception); + boost::shared_ptr<const std::map<unsigned long, UserInfo> > getUserList() throw(Core::Exception); + boost::shared_ptr<const UserInfo> getUserInfo(unsigned long uid) throw(Core::Exception); + boost::shared_ptr<const UserInfo> getUserInfoByName(const std::string &name) throw(Core::Exception); + boost::shared_ptr<const std::set<unsigned long> > getUserGroupList(unsigned long uid) throw(Core::Exception); + + boost::shared_ptr<const std::map<unsigned long, GroupInfo> > getGroupList() throw(Core::Exception); + boost::shared_ptr<const GroupInfo> getGroupInfo(unsigned long gid) throw(Core::Exception); + boost::shared_ptr<const GroupInfo> getGroupInfoByName(const std::string &name) throw(Core::Exception); + boost::shared_ptr<const std::set<unsigned long> > getGroupUserList(unsigned long gid) throw(Core::Exception); void setPassword(unsigned long uid, const std::string &password) throw(Core::Exception); |