diff options
Diffstat (limited to 'src/account-server/account.hpp')
-rw-r--r-- | src/account-server/account.hpp | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/src/account-server/account.hpp b/src/account-server/account.hpp new file mode 100644 index 00000000..e9d9e408 --- /dev/null +++ b/src/account-server/account.hpp @@ -0,0 +1,232 @@ +/* + * The Mana World Server + * Copyright 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or any later version. + * + * The Mana World 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 General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with The Mana World; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id$ + */ + +#ifndef _TMWSERV_ACCOUNT_H_ +#define _TMWSERV_ACCOUNT_H_ + +#include <string> + +#include "player.h" + +/** + * Notes: + * - change from the previous implementation: this class does not encrypt + * passwords anymore and will just store the passwords as they are + * passed to setPassword(). + * - the encryption should and must be performed externally from this + * class or else we would end up with the password being encrypted many + * times (e.g setPassword(getPassword()) would encrypt the password + * twice or setPassword(encrypted_password_from_database) would also + * encrypt the password twice). + */ + + +/** + * A player account. + */ +class Account +{ + public: + /** + * Constructor with initial account info. + * + * @param name the user name. + * @param password the user password. + * @param email the user email. + */ + Account(const std::string& name, + const std::string& password, + const std::string& email, + int id = -1); + + + /** + * Constructor with initial account info. + * + * @param name the user name. + * @param password the user password. + * @param email the user email. + * @param characters the characters. + */ + Account(const std::string& name, + const std::string& password, + const std::string& email, + const Players& characters); + + + /** + * Destructor. + */ + ~Account(); + + + /** + * Set the user name. + * + * @param name the user name. + */ + void + setName(const std::string& name); + + + /** + * Get the user name. + * + * @return the user name. + */ + const std::string& + getName() const; + + + /** + * Set the user password. + * + * @param password the user password. + */ + void + setPassword(const std::string& password); + + + /** + * Get the user password. + * + * @return the user password. + */ + const std::string + getPassword(void) const; + + + /** + * Set the user email address. + * + * @param email the user email address. + */ + void + setEmail(const std::string& email); + + + /** + * Get the user email address. + * + * @return the user email address. + */ + const std::string& + getEmail(void) const; + + + /** + * Set the account level. + * + * @param level the new level. + */ + void + setLevel(AccountLevel level); + + + /** + * Get the account level. + * + * @return the account level. + */ + AccountLevel + getLevel() const; + + + /** + * Set the characters. + * + * @param characters a list of characters. + */ + void + setCharacters(const Players& characters); + + + /** + * Add a new character. + * + * @param character the new character. + */ + void + addCharacter(PlayerPtr character); + + /** + * Remove a character. + * + * @param name The character's name to delete. + */ + bool + delCharacter(std::string const &name); + + + /** + * Get all the characters. + * + * @return all the characters. + */ + Players& + getCharacters(); + + /** + * Get a character by name. + * + * @return the character if found, NULL otherwise. + */ + PlayerPtr + getCharacter(const std::string& name); + + /** + * Get account ID. + * + * @return the unique ID of the account, a negative number if none yet. + */ + int getID() const + { return mID; } + + /** + * Set account ID. + * The account shall not have any ID yet. + */ + void setID(int); + + private: + Account(); + Account(Account const &rhs); + Account &operator=(Account const &rhs); + + + private: + int mID; /**< unique id */ + std::string mName; /**< user name */ + std::string mPassword; /**< user password (encrypted) */ + std::string mEmail; /**< user email address */ + Players mCharacters; /**< player data */ + AccountLevel mLevel; /**< account level */ +}; + + +/** + * Type definition for a smart pointer to Account. + */ +typedef utils::CountedPtr<Account> AccountPtr; + + +#endif // _TMWSERV_ACCOUNT_H_ |