30 lines
810 B
C
30 lines
810 B
C
|
|
#pragma once
|
||
|
|
|
||
|
|
#include "../database/database.h"
|
||
|
|
#include "../shared/crypto/argon2_wrapper.h"
|
||
|
|
#include "../shared/auth/jwt.h"
|
||
|
|
#include <memory>
|
||
|
|
#include <string>
|
||
|
|
|
||
|
|
namespace scar {
|
||
|
|
|
||
|
|
class Authenticator {
|
||
|
|
public:
|
||
|
|
Authenticator(std::shared_ptr<Database> db, const std::string& jwt_secret);
|
||
|
|
|
||
|
|
// Authenticate user with username/password (returns JWT token on success)
|
||
|
|
std::string authenticate(const std::string& username, const std::string& password);
|
||
|
|
|
||
|
|
// Verify JWT token (returns username on success, empty string on failure)
|
||
|
|
std::string verifyToken(const std::string& token);
|
||
|
|
|
||
|
|
// Create new user
|
||
|
|
bool createUser(const std::string& username, const std::string& password);
|
||
|
|
|
||
|
|
private:
|
||
|
|
std::shared_ptr<Database> db_;
|
||
|
|
std::string jwt_secret_;
|
||
|
|
};
|
||
|
|
|
||
|
|
} // namespace scar
|