summaryrefslogtreecommitdiff
path: root/src/account.h
diff options
context:
space:
mode:
authorHuynh Tran <nthuynh75@gmail.com>2005-06-19 12:46:25 +0000
committerHuynh Tran <nthuynh75@gmail.com>2005-06-19 12:46:25 +0000
commit92705ce7bc5d3360ed79b2ecbc2aa0fc29090840 (patch)
tree1bbc827a79e2010d3ef8c669cc7577d8299e9874 /src/account.h
parentf194e2fb62234ff66d0ee12282ce4a22aa237e89 (diff)
downloadmanaserv-92705ce7bc5d3360ed79b2ecbc2aa0fc29090840.tar.gz
manaserv-92705ce7bc5d3360ed79b2ecbc2aa0fc29090840.tar.bz2
manaserv-92705ce7bc5d3360ed79b2ecbc2aa0fc29090840.tar.xz
manaserv-92705ce7bc5d3360ed79b2ecbc2aa0fc29090840.zip
Passwords are now encrypted when creating a new Account, added unit tests for the Account class and moved functors into a separate header file for reuse.
Diffstat (limited to 'src/account.h')
-rw-r--r--src/account.h191
1 files changed, 161 insertions, 30 deletions
diff --git a/src/account.h b/src/account.h
index 8bdeb7ff..aa1590c3 100644
--- a/src/account.h
+++ b/src/account.h
@@ -4,58 +4,189 @@
*
* 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 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.
+ * 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
+ * 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 ACCOUNT_H
-#define ACCOUNT_H
+
+#ifndef _TMWSERV_ACCOUNT_H_
+#define _TMWSERV_ACCOUNT_H_
+
#include <string>
#include <vector>
+
#include "object.h"
+
+// kindjal: are we actually using this?
#define ACC_MAX_CHARS 4
+
+namespace tmwserv
+{
+
+
/**
* A player account.
*/
class Account
{
public:
- Account();
- Account(const std::string &name, const std::string &password,
- const std::string &email, const std::vector<Being*> &beings);
- ~Account();
+ /**
+ * Default constructor.
+ */
+ Account(void)
+ throw();
+
+
+ /**
+ * 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 Beings& characters);
+
+
+ /**
+ * Destructor.
+ */
+ ~Account(void)
+ throw();
+
+
+ /**
+ * 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(void) const;
+
+
+ /**
+ * Set the user password.
+ * The password will be encrypted before saved into the storage.
+ *
+ * @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;
- void setName(const std::string &name);
- void setPassword(const std::string &password);
- void setEmail(const std::string &email);
- void setCharacters(const std::vector<Being*> &beings);
- const std::string& getEmail();
- const std::string& getPassword();
- const std::string& getName();
- Being* getCharacter(const std::string &name);
+ /**
+ * 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 characters.
+ *
+ * @param characters a list of characters.
+ */
+ void
+ setCharacters(const Beings& characters);
+
+
+ /**
+ * Add a new character.
+ *
+ * @param character the new character.
+ */
+ void
+ addCharacter(Being* character);
+
+
+ /**
+ * Get all the characters.
+ *
+ * @return all the characters.
+ */
+ Beings&
+ getCharacters(void);
+
+
+ /**
+ * Get a character by name.
+ *
+ * @return the character if found, NULL otherwise.
+ */
+ Being*
+ getCharacter(const std::string& name);
+
private:
- std::string name; /**< Username */
- std::string password; /**< Password (md5 hash) */
- std::string email; /**< Email address */
- std::vector<Being*> beings; /**< Player data */
+ /**
+ * Copy constructor.
+ */
+ Account(const Account& rhs);
+
+
+ /**
+ * Assignment operator.
+ */
+ Account&
+ operator=(const Account& rhs);
+
+
+ private:
+ std::string mName; /**< user name */
+ std::string mPassword; /**< user password (encrypted) */
+ std::string mEmail; /**< user email address */
+ Beings mCharacters; /**< player data */
};
-#endif
+
+} // namespace tmwserv
+
+
+#endif // _TMWSERV_ACCOUNT_H_