/* * NetworkUserBackend.h * * Copyright (C) 2009 Matthias Schiffer * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with this program. If not, see . */ #ifndef MAD_COMMON_BACKENDS_NETWORKUSERBACKEND_H_ #define MAD_COMMON_BACKENDS_NETWORKUSERBACKEND_H_ #include "../export.h" #include "../UserDBBackend.h" #include "../Request.h" namespace Mad { namespace Common { namespace Backends { class MAD_COMMON_EXPORT NetworkUserBackend : public UserDBBackend { private: class MAD_COMMON_EXPORT SimpleUserRequest : public Request { private: std::string type; boost::posix_time::ptime timestamp; protected: virtual void sendRequest(); public: SimpleUserRequest(Application *application, const std::string &type0, boost::posix_time::ptime *timestamp0) : Request(application), type(type0), timestamp(timestamp0 ? *timestamp0 : boost::posix_time::not_a_date_time) {} }; class MAD_COMMON_EXPORT IdUserRequest : public Request { private: std::string type; std::string idType; unsigned long id; boost::posix_time::ptime timestamp; protected: virtual void sendRequest(); public: IdUserRequest(Application *application, const std::string &type0, const std::string &idType0, unsigned long id0, boost::posix_time::ptime *timestamp0 = 0) : Request(application), type(type0), idType(idType0), id(id0), timestamp(timestamp0 ? *timestamp0 : boost::posix_time::not_a_date_time) {} }; class MAD_COMMON_EXPORT NameUserRequest : public Request { private: std::string type; std::string name; boost::posix_time::ptime timestamp; protected: virtual void sendRequest(); public: NameUserRequest(Application *application, const std::string &type0, const std::string &name0, boost::posix_time::ptime *timestamp0) : Request(application), type(type0), name(name0), timestamp(timestamp0 ? *timestamp0 : boost::posix_time::not_a_date_time) {} }; class MAD_COMMON_EXPORT UserAddRequest : public Request { private: UserInfo userInfo; bool check; protected: virtual void sendRequest(); public: UserAddRequest(Application *application, const UserInfo &userInfo0, bool checkOnly) : Request(application), userInfo(userInfo0), check(checkOnly) {} }; class MAD_COMMON_EXPORT UserUpdateRequest : public Request { private: unsigned long uid; UserInfo userInfo; protected: virtual void sendRequest(); public: UserUpdateRequest(Application *application, unsigned long uid0, const UserInfo &userInfo0) : Request(application), uid(uid0), userInfo(userInfo0) {} }; class MAD_COMMON_EXPORT 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 MAD_COMMON_EXPORT 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 MAD_COMMON_EXPORT UserGroupRequest : public Request { private: std::string type; unsigned long uid; unsigned long gid; protected: virtual void sendRequest(); public: UserGroupRequest(Application *application, const std::string &type0, unsigned long uid0, unsigned long gid0) : Request(application), type(type0), uid(uid0), gid(gid0) {} }; class MAD_COMMON_EXPORT 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; Connection *connection; protected: virtual boost::shared_ptr > getUserList(boost::posix_time::ptime *timestamp) throw(Core::Exception); virtual boost::shared_ptr getUserInfo(unsigned long uid, boost::posix_time::ptime *timestamp) throw(Core::Exception); virtual boost::shared_ptr getUserInfoByName(const std::string &name, boost::posix_time::ptime *timestamp) throw(Core::Exception); virtual boost::shared_ptr > getUserGroupList(unsigned long uid, boost::posix_time::ptime *timestamp) throw(Core::Exception); virtual boost::shared_ptr > getGroupList(boost::posix_time::ptime *timestamp) throw(Core::Exception); virtual boost::shared_ptr getGroupInfo(unsigned long gid, boost::posix_time::ptime *timestamp) throw(Core::Exception); virtual boost::shared_ptr getGroupInfoByName(const std::string &name, boost::posix_time::ptime *timestamp) throw(Core::Exception); virtual boost::shared_ptr > getGroupUserList(unsigned long gid, boost::posix_time::ptime *timestamp) throw(Core::Exception); virtual boost::shared_ptr > getFullUserGroupList(boost::posix_time::ptime *timestamp) 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); virtual void setPassword(unsigned long uid, const std::string &password) throw(Core::Exception); public: NetworkUserBackend(Application *application0, Connection *connection0) : application(application0), connection(connection0) {} virtual const std::string& getName() { return name; } }; } } } #endif /* MAD_COMMON_BACKENDS_NETWORKUSERBACKEND_H_ */