77 lines
2.1 KiB
C++
77 lines
2.1 KiB
C++
#include "manager/UserManager.h"
|
|
|
|
#include "database/UserRepository.h"
|
|
#include "type/UserFilter.h"
|
|
#include "type/SaltFilter.h"
|
|
#include "utility/MetadataRetriever.h"
|
|
#include "utility/PasswordEncryption.h"
|
|
|
|
namespace manager {
|
|
UserManager::UserManager(const model::BinaryPath& bConf) : m_bConf(bConf) { }
|
|
|
|
|
|
model::RegisterResult UserManager::registerUser(model::User& user) {
|
|
model::RegisterResult result;
|
|
result.username = user.username;
|
|
printUser(user);
|
|
|
|
utility::PasswordEncryption passEnc;
|
|
auto hashed = passEnc.hashPassword(user);
|
|
user.password = hashed.hashPassword;
|
|
|
|
database::UserRepository usrRepo(m_bConf);
|
|
usrRepo.saveUserRecord(user);
|
|
|
|
model::User usr;
|
|
usr.username = user.username;
|
|
|
|
std::cout << usr.username << "\n";
|
|
usr = usrRepo.retrieveUserRecord(usr, type::UserFilter::username);
|
|
hashed.hashPassword = usr.password;
|
|
hashed.userId = usr.id;
|
|
|
|
usrRepo.saveUserSalt(hashed);
|
|
result.registered = true;
|
|
result.message = "successfully registered";
|
|
printUser(usr);
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
bool UserManager::doesUserExist(const model::User& user) {
|
|
database::UserRepository userRepo(m_bConf);
|
|
|
|
return userRepo.doesUserRecordExist(user, type::UserFilter::username);
|
|
}
|
|
|
|
bool UserManager::validatePassword(const model::User& user) {
|
|
database::UserRepository userRepo(m_bConf);
|
|
model::User usr;
|
|
usr.username = user.username;
|
|
usr = userRepo.retrieveUserRecord(usr, type::UserFilter::username);
|
|
|
|
model::PassSec userSec;
|
|
userSec.userId = usr.id;
|
|
userSec = userRepo.retrieverUserSaltRecord(userSec, type::SaltFilter::userId);
|
|
userSec.hashPassword = usr.password;
|
|
|
|
utility::PasswordEncryption passEnc;
|
|
|
|
return passEnc.isPasswordValid(user, userSec);
|
|
}
|
|
|
|
|
|
void UserManager::printUser(const model::User& user) {
|
|
std::cout << "\nuser info\n";
|
|
std::cout << "id: " << user.id << "\n";
|
|
std::cout << "firstname: " << user.firstname << "\n";
|
|
std::cout << "lastname: " << user.lastname << "\n";
|
|
std::cout << "phone: " << user.phone << "\n";
|
|
std::cout << "email: " << user.email << "\n";
|
|
std::cout << "username: " << user.username << "\n";
|
|
std::cout << "password: " << user.password<< "\n";
|
|
}
|
|
|
|
}
|