работающая авторизация

This commit is contained in:
2024-11-05 10:33:52 +03:00
parent b561dedb2b
commit 0eacd76810
10 changed files with 150 additions and 61 deletions

View File

@@ -5,7 +5,8 @@
#include "utils.h"
http::auth::User::User(const std::string &username, const std::string &passwordHash): username(username), passwordHash(passwordHash) {}
http::auth::User::User(const std::string &username, const std::string &passwordHash): username(username),
passwordHash(passwordHash.empty() ? utils::sha256(username) : passwordHash) {}
bool http::auth::User::checkPassword(const std::string &pass) const {
return utils::sha256(pass) == passwordHash;
@@ -57,21 +58,16 @@ std::shared_ptr<http::auth::User> http::auth::AuthProvider::doAuth(const std::st
}
std::shared_ptr<http::auth::User> http::auth::AuthProvider::getSession(const server::Request &req) {
for (const auto& header: req.headers) {
if (boost::iequals(header.name, "cookie")) {
auto t = jwt::Jwt::fromCookies(header.value);
if (t.isValid()) {
const auto name = t.getUsername();
// токен валидный, ищем юзера
for (auto& u: users) {
if (u->username == name) {
return u;
}
}
BOOST_LOG_TRIVIAL(warning) << "http::auth::AuthProvider::getSession(): Found valid session for a non-existent user " << name;
auto t = jwt::Jwt::fromCookies(req.getHeaderValue("cookie"));
if (t.isValid()) {
const auto name = t.getUsername();
// токен валидный, ищем юзера
for (auto& u: users) {
if (u->username == name) {
return u;
}
}
BOOST_LOG_TRIVIAL(warning) << "http::auth::AuthProvider::getSession(): Found valid session for a non-existent user " << name;
}
return nullptr;
}