From c9fcceb74d861525b2defec8219374edb9c1455a Mon Sep 17 00:00:00 2001 From: Nikita Kostovsky Date: Sun, 22 Jun 2025 21:39:13 +0200 Subject: add User class --- src/user.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/user.h (limited to 'src/user.h') diff --git a/src/user.h b/src/user.h new file mode 100644 index 0000000..6826ed4 --- /dev/null +++ b/src/user.h @@ -0,0 +1,54 @@ +#pragma once + +#include + +// TODO: tests +// - empty fields +// - too long fields (use arrays instead of QByteArray?) +// - try to break salt/hash fields + +// TODO: make all public fields private +class User +{ +public: + /*! + * \brief User - create user with given `login` and `password`. `salt` and + * `passwordHash` will be generated and stored instead of real `password`. + * Will *not* be committed to db automatically. + * \param login - max len is 32 + * \param password - max len is 32 + */ + explicit User(const QString &login, const QString &password); + +public: + /*! + * \brief getDbId - check if user with corresponding `link` exists in db + * and return db id if any + * \return id on success, 0 otherwise + */ + int getDbId(); + + /*! + * \brief createInDb - create user in db + * \return new user id on success, 0 otherwise + */ + int createInDb(); + + /*! + * \brief getOrInsertDbId - get existing user id or try to create a new + * user and get its id + * \return existing or new user id on success, 0 otherwise + */ + int getOrInsertDbId(); + + bool verifyPassword(const QString &password); + +public: + int id{0}; + QString login; + QByteArray salt; + QByteArray passwordHash; + +private: + QByteArray hashPassword(const QString &password); +}; -- cgit v1.2.3-70-g09d2