#pragma once #include "../database/database.h" #include "../shared/crypto/argon2_wrapper.h" #include "../shared/auth/jwt.h" #include #include namespace scar { class Authenticator { public: Authenticator(std::shared_ptr 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 db_; std::string jwt_secret_; }; } // namespace scar