summaryrefslogtreecommitdiffstats
path: root/src/Common/Backends
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2009-08-05 23:55:44 +0200
committerMatthias Schiffer <matthias@gamezock.de>2009-08-05 23:55:44 +0200
commitf7d433e6e8559b4584263cae025d3addd1342df4 (patch)
tree1553cd2fd935ab57667a7ac83aa0407c30a8f3da /src/Common/Backends
parent11d25f7765e6cc5f4ae501bfe78202808a880f3c (diff)
downloadmad-f7d433e6e8559b4584263cae025d3addd1342df4.tar
mad-f7d433e6e8559b4584263cae025d3addd1342df4.zip
UserManager: Check-Funktionen hinzugefügt
Diffstat (limited to 'src/Common/Backends')
-rw-r--r--src/Common/Backends/NetworkUserBackend.cpp87
-rw-r--r--src/Common/Backends/NetworkUserBackend.h37
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);