#ifndef RBAC_CONTROLLER_H #define RBAC_CONTROLLER_H #include #include "modules/admin_panel/admin_controller.h" #include "core/containers/vector.h" #include "core/string.h" #include "rbac_permission.h" #include "rbac_rank.h" class Request; class FormValidator; class RBACController : public AdminController { RCPP_OBJECT(RBACController, AdminController); public: void handle_request_main(Request *request); void create_validators(); void admin_handle_request_main(Request *request); String admin_get_section_name(); void admin_add_section_links(Vector *links); struct RBACAdminRankViewData { Ref rank; Vector messages; int id = 0; String name = ""; String name_internal = ""; String settings = ""; int rank_permissions = 0; }; void admin_handle_new_rank(Request *request); void admin_handle_edit_rank(Request *request); void render_rank_view(Request *request, RBACAdminRankViewData *data); struct RBACAdminEditPermissionView { Ref rank; Ref permission; Vector messages; int rank_id = 0; int permission_id = 0; }; void admin_permission_editor(Request *request); void admin_render_permission_editor_main_view(Request *request, RBACAdminEditPermissionView* data); void admin_render_permission_editor_entry_edit_create_view(Request *request, RBACAdminEditPermissionView* data); bool admin_process_permission_editor_entry_edit_create_post(Request *request, RBACAdminEditPermissionView* data); void admin_render_rank_list(Request *request); void admin_render_rank_editor(Request *request); void initialize(); static RBACController *get_singleton(); RBACController(); ~RBACController(); protected: static RBACController *_self; std::map > _permissions; }; #endif