26#ifndef ROUTER_SRC_REST_MRS_SRC_MRS_AUTHENTICATION_OAUTH2_HANDLER_H_
27#define ROUTER_SRC_REST_MRS_SRC_MRS_AUTHENTICATION_OAUTH2_HANDLER_H_
45namespace authentication {
50 using duration = std::chrono::steady_clock::duration;
53 using time_point = std::chrono::steady_clock::time_point;
103 using OutPair = std::pair<const char *, VariantPointer>;
141 const std::string &body,
Definition: cache_manager.h:41
Definition: variant_pointer.h:34
Definition: oauth2_handler.h:73
seconds expires
Definition: oauth2_handler.h:80
time_point acquired_at
Definition: oauth2_handler.h:82
std::string challange
Definition: oauth2_handler.h:83
bool session_id_set
Definition: oauth2_handler.h:81
std::string auth_code
Definition: oauth2_handler.h:77
std::string redirection_host
Definition: oauth2_handler.h:79
std::string refresh_token
Definition: oauth2_handler.h:76
std::string redirection
Definition: oauth2_handler.h:78
std::string access_token
Definition: oauth2_handler.h:75
Definition: oauth2_handler.h:101
std::vector< OutPair > OutJsonObjectKeyValues
Definition: oauth2_handler.h:104
void before_send(Request *request) override
Definition: oauth2_handler.cc:65
RequestHandlerJsonSimpleObject(OutJsonObjectKeyValues output)
Definition: oauth2_handler.h:106
std::pair< const char *, VariantPointer > OutPair
Definition: oauth2_handler.h:103
OutJsonObjectKeyValues output_
Definition: oauth2_handler.h:112
bool response(const std::vector< uint8_t > &value) override
Definition: oauth2_handler.cc:67
Definition: oauth2_handler.h:64
virtual void before_send(Request *request)=0
virtual bool response(const std::vector< uint8_t > &value)=0
virtual ~RequestHandler()=default
Definition: oauth2_handler.h:47
std::optional< std::string > get_session_id_from_request_data(RequestContext &ctxt) override
Definition: oauth2_handler.cc:305
UserManager & get_user_manager() override
Definition: oauth2_handler.h:115
::http::base::method::key_type HttpMethodType
Definition: oauth2_handler.h:54
static bool send_http_request(HttpMethodType method, const std::string &url, const std::string &body, RequestHandler *request_handler=nullptr)
Definition: oauth2_handler.cc:94
std::set< UniversalId > get_service_ids() const override
Definition: oauth2_handler.cc:86
std::chrono::seconds seconds
Definition: oauth2_handler.h:51
bool redirects(RequestContext &ctxt) const override
Definition: oauth2_handler.cc:60
UserManager um_
Definition: oauth2_handler.h:145
virtual std::string get_url_direct_auth() const =0
virtual std::string get_url_location(GenericSessionData *data, Url *url) const =0
std::unique_ptr< RequestHandler > RequestHandlerPtr
Definition: oauth2_handler.h:71
virtual std::string get_body_access_token_request(GenericSessionData *session_data) const =0
virtual std::string get_url_validation(GenericSessionData *data) const =0
bool http_acquire_access_token(GenericSessionData *data)
Definition: oauth2_handler.cc:161
std::chrono::steady_clock::time_point time_point
Definition: oauth2_handler.h:53
void new_session_start_login(RequestContext &ctxt, Session *session)
Definition: oauth2_handler.cc:188
bool authorize(RequestContext &ctxt, const SessionPtr &session, AuthUser *out_user) override
Definition: oauth2_handler.cc:224
UniversalId get_id() const override
Definition: oauth2_handler.cc:92
const AuthApp & get_entry() const override
Definition: oauth2_handler.cc:90
AuthApp entry_
Definition: oauth2_handler.h:144
Oauth2Handler(const AuthApp &entry, QueryFactory *qf)
Definition: oauth2_handler.h:87
std::chrono::steady_clock::duration duration
Definition: oauth2_handler.h:50
virtual RequestHandlerPtr get_request_handler_access_token(GenericSessionData *session_data)=0
std::chrono::steady_clock steady_clock
Definition: oauth2_handler.h:52
bool http_verify_account(Session *session, GenericSessionData *data, SqlSessionCached *sql_session)
Definition: oauth2_handler.cc:310
virtual RequestHandlerPtr get_request_handler_verify_account(Session *session, GenericSessionData *session_data)=0
std::string get_cookie_session_id(Request *request) const
void set_cookie_session_id(Request *request, SessionManager::Session *session)
Definition: session_manager.h:66
Definition: session_manager.h:64
Definition: session_manager.h:48
Definition: authorize_handler.h:53
mrs::database::entry::AuthApp AuthApp
Definition: authorize_handler.h:57
rest::RequestContext RequestContext
Definition: authorize_handler.h:58
Definition: query_factory.h:55
Definition: user_manager.h:41
int key_type
Definition: method.h:38
Request::Uri Uri
Definition: request.cc:36
mrs::database::entry::AuthApp AuthApp
Definition: oauth2_handler.cc:58
helper::http::Url Url
Definition: sasl_handler.cc:75
std::chrono::seconds seconds
Definition: authorize_manager.cc:69
mrs::database::entry::AuthUser AuthUser
Definition: scram_handler.cc:54
AuthorizeManager::SessionPtr SessionPtr
Definition: authorize_manager.cc:79
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
Definition: authorize_manager.h:48
mrs::database::entry::UniversalId UniversalId
Definition: universal_id.h:33
Definition: gcs_xcom_synode.h:64
RestClient::Request Request
Definition: rest_client.cc:29
Definition: completion_hash.h:35
Definition: request_context.h:47