diff --git a/modules/users/user.cpp b/modules/users/user.cpp index a078aab..291bcee 100644 --- a/modules/users/user.cpp +++ b/modules/users/user.cpp @@ -1,6 +1,7 @@ #include "user.h" #include "core/http/http_session.h" +#include "core/http/request.h" #include "core/http/session_manager.h" void User::save() { @@ -63,6 +64,93 @@ void User::unregister_sessions() { } } +void User::handle_request_default(Request *request) { + if (request->session) { + User *u = dynamic_cast(request->session->get_object("user")); + + if (u) { + u->handle_request(request); + + return; + } + } + + const std::string &segment = request->get_current_path_segment(); + + if (segment == "") { + handle_login_request_default(request); + + return; + } else if (segment == "login") { + handle_login_request_default(request); + + return; + } else if (segment == "register") { + handle_register_request_default(request); + + return; + } + + handle_login_request_default(request); +} + +void User::handle_login_request_default(Request *request) { + request->body += "handle_login_request_default"; + + request->compile_and_send_body(); +} + +void User::handle_register_request_default(Request *request) { + request->body += "handle_register_request_default"; + + request->compile_and_send_body(); +} + +void User::handle_request(Request *request) { + const std::string &segment = request->get_current_path_segment(); + + if (segment == "") { + handle_main_page_request(request); + } else if (segment == "settings") { + handle_settings_request(request); + } else if (segment == "password_reset") { + handle_password_reset_request(request); + } else if (segment == "logout") { + handle_logout_request(request); + } else if (segment == "delete") { + handle_delete_request(request); + } else { + request->send_error(404); + } +} + +void User::handle_main_page_request(Request *request) { + request->body += "handle_main_page_request"; + + request->compile_and_send_body(); +} + +void User::handle_settings_request(Request *request) { + request->body += "handle_settings_request"; + + request->compile_and_send_body(); +} +void User::handle_password_reset_request(Request *request) { + request->body += "handle_password_reset_request"; + + request->compile_and_send_body(); +} +void User::handle_logout_request(Request *request) { + request->body += "handle_logout_request"; + + request->compile_and_send_body(); +} +void User::handle_delete_request(Request *request) { + request->body += "handle_delete_request"; + + request->compile_and_send_body(); +} + User::User() : Object() { diff --git a/modules/users/user.h b/modules/users/user.h index be534fa..fc8dcf8 100644 --- a/modules/users/user.h +++ b/modules/users/user.h @@ -6,7 +6,11 @@ #include #include +class Request; + class User : public Object { + RCPP_OBJECT(User, Object); + public: int id; std::string name; @@ -26,6 +30,18 @@ public: virtual void changed(); virtual void update(); + static void handle_request_default(Request *request); + + static void handle_login_request_default(Request *request); + static void handle_register_request_default(Request *request); + + virtual void handle_request(Request *request); + virtual void handle_main_page_request(Request *request); + virtual void handle_settings_request(Request *request); + virtual void handle_password_reset_request(Request *request); + virtual void handle_logout_request(Request *request); + virtual void handle_delete_request(Request *request); + void register_sessions(); void unregister_sessions();