#pragma once #include #include #include namespace visione::auth { struct UserContext { long long id{0}; std::string email; std::string role; }; std::optional bearerToken(const drogon::HttpRequestPtr &request); std::optional authenticate(const drogon::HttpRequestPtr &request); bool hasRole(const UserContext &user, const std::string &role); bool canManageReports(const UserContext &user); bool isAdmin(const UserContext &user); } // namespace visione::auth