Implement authentication
This commit is contained in:
23
src/services/UserManager.cpp
Normal file
23
src/services/UserManager.cpp
Normal file
@@ -0,0 +1,23 @@
|
||||
#include "UserManager.h"
|
||||
|
||||
#include <drogon/utils/Utilities.h>
|
||||
#include "dependency_injection/DependencyContainer.h"
|
||||
#include "models/User.h"
|
||||
#include "services/encryption/PasswordEncryptor.h"
|
||||
|
||||
UserManager::UserManager()
|
||||
{
|
||||
m_passwordEncryptor = DependencyContainer::Resolve<PasswordEncryptor>();
|
||||
}
|
||||
|
||||
bool UserManager::validateCredentials(const User& userData, std::string&& rawPassword)
|
||||
{
|
||||
auto hashedPassword = hashPassword(std::move(rawPassword));
|
||||
auto base64Hash = drogon::utils::base64Encode(hashedPassword.data(), hashedPassword.size());
|
||||
return base64Hash == userData.passwordHash;
|
||||
}
|
||||
|
||||
std::vector<uint8_t> UserManager::hashPassword(std::string&& rawPassword)
|
||||
{
|
||||
return m_passwordEncryptor->encryptPassword(std::move(rawPassword));
|
||||
}
|
||||
Reference in New Issue
Block a user