10#include <userver/components/component_context.hpp>
11#include <userver/server/handlers/auth/auth_checker_base.hpp>
12#include <userver/server/handlers/handler_config.hpp>
13#include <userver/utils/not_null.hpp>
15USERVER_NAMESPACE_BEGIN
17namespace server::handlers::auth {
22 virtual ~AuthCheckerFactoryBase() =
default;
24 virtual AuthCheckerBasePtr MakeAuthChecker(
const HandlerAuthConfig&)
const = 0;
31void DoRegisterAuthCheckerFactory(std::string_view auth_type, AuthCheckerFactoryFactory factory);
34MakeAuthCheckerFactory(std::string_view auth_type,
const components::ComponentContext& context);
36std::vector<std::string> GetAllAuthTypes();
38template <
typename AuthCheckerFactory>
40 return utils::MakeUniqueRef<AuthCheckerFactory>(context);
51template <
typename AuthCheckerFactory>
53 const auto auth_type = std::string_view{AuthCheckerFactory::kAuthType};
54 impl::DoRegisterAuthCheckerFactory(auth_type, &impl::MakeAuthCheckerFactory<AuthCheckerFactory>);