summaryrefslogtreecommitdiffstats
path: root/src/Common/Backends
diff options
context:
space:
mode:
Diffstat (limited to 'src/Common/Backends')
-rw-r--r--src/Common/Backends/NetworkUserBackend.cpp27
-rw-r--r--src/Common/Backends/NetworkUserBackend.h17
2 files changed, 37 insertions, 7 deletions
diff --git a/src/Common/Backends/NetworkUserBackend.cpp b/src/Common/Backends/NetworkUserBackend.cpp
index da964e7..00bd378 100644
--- a/src/Common/Backends/NetworkUserBackend.cpp
+++ b/src/Common/Backends/NetworkUserBackend.cpp
@@ -115,6 +115,15 @@ void NetworkUserBackend::UserGroupRequest::sendRequest() {
sendPacket(packet);
}
+void NetworkUserBackend::PasswordRequest::sendRequest() {
+ XmlPacket packet;
+ packet.setType("SetPassword");
+ packet.set("uid", uid);
+ packet.set("password", password);
+
+ sendPacket(packet);
+}
+
boost::shared_ptr<const std::map<unsigned long, UserInfo> > NetworkUserBackend::getUserList(boost::posix_time::ptime *timestamp) throw(Core::Exception) {
application->getThreadManager()->detach();
@@ -397,11 +406,6 @@ boost::shared_ptr<const std::multimap<unsigned long, unsigned long> > NetworkUse
}
-/*void NetworkUserBackend::setPassword(unsigned long uid, const std::string &password) throw(Core::Exception) {
-
-}*/
-
-
void NetworkUserBackend::checkUserInfo(const UserInfo &userInfo) throw(Core::Exception) {
application->getThreadManager()->detach();
@@ -524,6 +528,19 @@ void NetworkUserBackend::deleteUserFromGroup(unsigned long uid, unsigned long gi
throw result.second;
}
+
+void NetworkUserBackend::setPassword(unsigned long uid, const std::string &password) throw(Core::Exception) {
+ application->getThreadManager()->detach();
+
+ boost::shared_ptr<PasswordRequest> request(new PasswordRequest(application, uid, password));
+ 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;
+}
+
}
}
}
diff --git a/src/Common/Backends/NetworkUserBackend.h b/src/Common/Backends/NetworkUserBackend.h
index a3fa1a6..1ab0b58 100644
--- a/src/Common/Backends/NetworkUserBackend.h
+++ b/src/Common/Backends/NetworkUserBackend.h
@@ -137,6 +137,19 @@ class NetworkUserBackend : public UserDBBackend {
: Request(application), type(type0), uid(uid0), gid(gid0) {}
};
+ class PasswordRequest : public Request {
+ private:
+ unsigned long uid;
+ std::string password;
+
+ protected:
+ virtual void sendRequest();
+
+ public:
+ PasswordRequest(Application *application, unsigned long uid0, const std::string &password0)
+ : Request(application), uid(uid0), password(password0) {}
+ };
+
static const std::string name;
Application *application;
@@ -155,8 +168,6 @@ class NetworkUserBackend : public UserDBBackend {
virtual boost::shared_ptr<const std::multimap<unsigned long, unsigned long> > getFullUserGroupList(boost::posix_time::ptime *timestamp) throw(Core::Exception);
- //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);
@@ -170,6 +181,8 @@ class NetworkUserBackend : public UserDBBackend {
virtual void addUserToGroup(unsigned long uid, unsigned long gid) throw(Core::Exception);
virtual void deleteUserFromGroup(unsigned long uid, unsigned long gid) throw(Core::Exception);
+ virtual void setPassword(unsigned long uid, const std::string &password) throw(Core::Exception);
+
public:
NetworkUserBackend(Application *application0, Connection *connection0) : application(application0), connection(connection0) {}