diff --git a/include/caosdb/acm/user.h b/include/caosdb/acm/user.h index 2310bd2195186cf1237d59593b26369d01f2baa7..9c1ae91ec9451c7d7a33b4b209646676fa2d7eb0 100644 --- a/include/caosdb/acm/user.h +++ b/include/caosdb/acm/user.h @@ -40,30 +40,96 @@ class Connection; namespace caosdb::acm { +/** + * The UserImpl class is the delegate of the User class. It hides the + * implementation details from the clients. + */ class UserImpl; +/** + * The User class is a delegator. The actual data is stored in a wrapped + * UserImpl object. + */ class User { public: + /** + * Default constructor. + * + * Initialize a user without any name, realm, password... + */ User(); + /** + * Constructor. Initialize a user in the given realm with the given name. + */ explicit User(std::string realm, std::string name); + /** + * Constructor. Initialize a user with the given name. + */ explicit User(std::string name); - explicit User(std::unique_ptr<UserImpl> wrapped); + /** + * Copy constructor. + */ User(const User &user); + /** + * Move constructor. + * + * The moved-from user is empty, but still usable. + */ User(User &&user) noexcept; + /** + * Copy assignment. + */ auto operator=(const User &user) -> User &; + /** + * Move assignment. + * + * The moved-from user is empty, but still usable. + */ auto operator=(User &&user) noexcept -> User &; + /** + * Dtor. + */ ~User(); + + /** + * Return a string representation of this user. + */ auto ToString() const -> std::string; + /** + * Return the name of this user or the empty string. + */ [[nodiscard]] auto GetName() const -> const std::string &; + /** + * Set the name of this user. + */ auto SetName(const std::string &name) -> void; + /** + * Return the realm of this user or the empty. + */ [[nodiscard]] auto GetRealm() const -> const std::string &; + /** + * Set the realm of this user. + */ auto SetRealm(const std::string &realm) -> void; + /** + * Return the password of this user or the empty string. + */ [[nodiscard]] auto GetPassword() const -> const std::string &; + /** + * Set the password of this user. + */ auto SetPassword(const std::string &password) -> void; friend class caosdb::connection::Connection; private: + /** + * Constructor. Create a user object from the given UserImpl delegate. + */ + explicit User(std::unique_ptr<UserImpl> wrapped); + /** + * The UserImpl delegate. + */ std::unique_ptr<UserImpl> wrapped; };