diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2009-08-05 23:55:44 +0200 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2009-08-05 23:55:44 +0200 |
commit | f7d433e6e8559b4584263cae025d3addd1342df4 (patch) | |
tree | 1553cd2fd935ab57667a7ac83aa0407c30a8f3da /src/Common/Backends | |
parent | 11d25f7765e6cc5f4ae501bfe78202808a880f3c (diff) | |
download | mad-f7d433e6e8559b4584263cae025d3addd1342df4.tar mad-f7d433e6e8559b4584263cae025d3addd1342df4.zip |
UserManager: Check-Funktionen hinzugefügt
Diffstat (limited to 'src/Common/Backends')
-rw-r--r-- | src/Common/Backends/NetworkUserBackend.cpp | 87 | ||||
-rw-r--r-- | src/Common/Backends/NetworkUserBackend.h | 37 |
2 files changed, 120 insertions, 4 deletions
diff --git a/src/Common/Backends/NetworkUserBackend.cpp b/src/Common/Backends/NetworkUserBackend.cpp index 39f4e5b..da964e7 100644 --- a/src/Common/Backends/NetworkUserBackend.cpp +++ b/src/Common/Backends/NetworkUserBackend.cpp @@ -62,7 +62,7 @@ void NetworkUserBackend::NameUserRequest::sendRequest() { void NetworkUserBackend::UserAddRequest::sendRequest() { XmlPacket packet; - packet.setType("AddUser"); + packet.setType(check ? "CheckUserInfo" : "AddUser"); packet.set("uid", userInfo.getUid()); packet.set("gid", userInfo.getGid()); @@ -85,6 +85,27 @@ void NetworkUserBackend::UserUpdateRequest::sendRequest() { sendPacket(packet); } +void NetworkUserBackend::GroupAddRequest::sendRequest() { + XmlPacket packet; + packet.setType(check ? "CheckGroupInfo" : "AddGroup"); + + packet.set("gid", groupInfo.getGid()); + packet.set("name", groupInfo.getName()); + + sendPacket(packet); +} + +void NetworkUserBackend::GroupUpdateRequest::sendRequest() { + XmlPacket packet; + packet.setType("UpdateGroup"); + + packet.set("origGid", gid); + packet.set("gid", groupInfo.getGid()); + packet.set("name", groupInfo.getName()); + + sendPacket(packet); +} + void NetworkUserBackend::UserGroupRequest::sendRequest() { XmlPacket packet; packet.setType(type); @@ -381,10 +402,22 @@ boost::shared_ptr<const std::multimap<unsigned long, unsigned long> > NetworkUse }*/ +void NetworkUserBackend::checkUserInfo(const UserInfo &userInfo) throw(Core::Exception) { + application->getThreadManager()->detach(); + + boost::shared_ptr<UserAddRequest> request(new UserAddRequest(application, userInfo, true)); + 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; +} + void NetworkUserBackend::addUser(const UserInfo &userInfo) throw(Core::Exception) { application->getThreadManager()->detach(); - boost::shared_ptr<UserAddRequest> request(new UserAddRequest(application, userInfo)); + boost::shared_ptr<UserAddRequest> request(new UserAddRequest(application, userInfo, false)); application->getRequestManager()->sendRequest(connection, request); request->wait(); @@ -417,6 +450,56 @@ void NetworkUserBackend::deleteUser(unsigned long uid) throw(Core::Exception) { throw result.second; } + +void NetworkUserBackend::checkGroupInfo(const GroupInfo &groupInfo) throw(Core::Exception) { + application->getThreadManager()->detach(); + + boost::shared_ptr<GroupAddRequest> request(new GroupAddRequest(application, groupInfo, true)); + 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; +} + +void NetworkUserBackend::addGroup(const GroupInfo &groupInfo) throw(Core::Exception) { + application->getThreadManager()->detach(); + + boost::shared_ptr<GroupAddRequest> request(new GroupAddRequest(application, groupInfo, false)); + 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; +} + +void NetworkUserBackend::updateGroup(unsigned long gid, const GroupInfo &groupInfo) throw(Core::Exception) { + application->getThreadManager()->detach(); + + boost::shared_ptr<GroupUpdateRequest> request(new GroupUpdateRequest(application, gid, groupInfo)); + 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; +} + +void NetworkUserBackend::deleteGroup(unsigned long gid) throw(Core::Exception) { + application->getThreadManager()->detach(); + + boost::shared_ptr<IdUserRequest> request(new IdUserRequest(application, "DeleteGroup", "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; +} + + void NetworkUserBackend::addUserToGroup(unsigned long uid, unsigned long gid) throw(Core::Exception) { application->getThreadManager()->detach(); diff --git a/src/Common/Backends/NetworkUserBackend.h b/src/Common/Backends/NetworkUserBackend.h index 6c0e94d..a3fa1a6 100644 --- a/src/Common/Backends/NetworkUserBackend.h +++ b/src/Common/Backends/NetworkUserBackend.h @@ -74,13 +74,14 @@ class NetworkUserBackend : public UserDBBackend { class UserAddRequest : public Request { private: UserInfo userInfo; + bool check; protected: virtual void sendRequest(); public: - UserAddRequest(Application *application, const UserInfo &userInfo0) - : Request(application), userInfo(userInfo0) {} + UserAddRequest(Application *application, const UserInfo &userInfo0, bool checkOnly) + : Request(application), userInfo(userInfo0), check(checkOnly) {} }; class UserUpdateRequest : public Request { @@ -96,6 +97,32 @@ class NetworkUserBackend : public UserDBBackend { : Request(application), uid(uid0), userInfo(userInfo0) {} }; + class GroupAddRequest : public Request { + private: + GroupInfo groupInfo; + bool check; + + protected: + virtual void sendRequest(); + + public: + GroupAddRequest(Application *application, const GroupInfo &groupInfo0, bool checkOnly) + : Request(application), groupInfo(groupInfo0), check(checkOnly) {} + }; + + class GroupUpdateRequest : public Request { + private: + unsigned long gid; + GroupInfo groupInfo; + + protected: + virtual void sendRequest(); + + public: + GroupUpdateRequest(Application *application, unsigned long gid0, const GroupInfo &groupInfo0) + : Request(application), gid(gid0), groupInfo(groupInfo0) {} + }; + class UserGroupRequest : public Request { private: std::string type; @@ -130,10 +157,16 @@ class NetworkUserBackend : public UserDBBackend { //virtual void setPassword(unsigned long uid, const std::string &password) throw(Core::Exception); + virtual void checkUserInfo(const UserInfo &userInfo) throw(Core::Exception); virtual void addUser(const UserInfo &userInfo) throw(Core::Exception); virtual void updateUser(unsigned long uid, const Common::UserInfo &userInfo) throw(Core::Exception); virtual void deleteUser(unsigned long uid) throw(Core::Exception); + virtual void checkGroupInfo(const GroupInfo &groupInfo) throw(Core::Exception); + virtual void addGroup(const GroupInfo &groupInfo) throw(Core::Exception); + virtual void updateGroup(unsigned long gid, const GroupInfo &groupInfo) throw(Core::Exception); + virtual void deleteGroup(unsigned long gid) throw(Core::Exception); + virtual void addUserToGroup(unsigned long uid, unsigned long gid) throw(Core::Exception); virtual void deleteUserFromGroup(unsigned long uid, unsigned long gid) throw(Core::Exception); |