mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2025-05-02 13:47:56 +02:00
More work on the permission editor.
This commit is contained in:
parent
80c3b97a6b
commit
955a1b38fd
@ -30,10 +30,10 @@ void RBACController::admin_handle_request_main(Request *request) {
|
|||||||
request->push_path();
|
request->push_path();
|
||||||
|
|
||||||
admin_handle_edit_rank(request);
|
admin_handle_edit_rank(request);
|
||||||
} else if (seg == "edit_permissions") {
|
} else if (seg == "permission_editor") {
|
||||||
request->push_path();
|
request->push_path();
|
||||||
|
|
||||||
admin_handle_edit_permission(request);
|
admin_permission_editor(request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,7 +144,7 @@ void RBACController::render_rank_view(Request *request, RBACAdminRankViewData *d
|
|||||||
request->body += b.result;
|
request->body += b.result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RBACController::admin_handle_edit_permission(Request *request) {
|
void RBACController::admin_permission_editor(Request *request) {
|
||||||
|
|
||||||
String seg = request->get_current_path_segment();
|
String seg = request->get_current_path_segment();
|
||||||
|
|
||||||
@ -154,7 +154,7 @@ void RBACController::admin_handle_edit_permission(Request *request) {
|
|||||||
int id = seg.to_int();
|
int id = seg.to_int();
|
||||||
|
|
||||||
if (id == 0) {
|
if (id == 0) {
|
||||||
RLOG_MSG("RBACController::admin_handle_edit_permission: id == 0!\n");
|
RLOG_MSG("RBACController::admin_permission_editor: id == 0!\n");
|
||||||
request->send_redirect(request->get_url_root_parent());
|
request->send_redirect(request->get_url_root_parent());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -162,7 +162,7 @@ void RBACController::admin_handle_edit_permission(Request *request) {
|
|||||||
Ref<RBACRank> rank = _permissions[id];
|
Ref<RBACRank> rank = _permissions[id];
|
||||||
|
|
||||||
if (!rank.is_valid()) {
|
if (!rank.is_valid()) {
|
||||||
RLOG_MSG("RBACController::admin_handle_edit_permission: !rank.is_valid()\n");
|
RLOG_MSG("RBACController::admin_permission_editor: !rank.is_valid()\n");
|
||||||
request->send_redirect(request->get_url_root_parent());
|
request->send_redirect(request->get_url_root_parent());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -172,22 +172,30 @@ void RBACController::admin_handle_edit_permission(Request *request) {
|
|||||||
|
|
||||||
request->push_path();
|
request->push_path();
|
||||||
|
|
||||||
String seg2 = request->get_current_path_segment();
|
String segn = request->get_current_path_segment();
|
||||||
|
|
||||||
if (seg2 == "new") {
|
if (segn == "new") {
|
||||||
admin_render_edit_permission_entry_view(request, &data);
|
request->push_path();
|
||||||
|
|
||||||
|
if (request->get_method() == HTTP_METHOD_POST) {
|
||||||
|
if (admin_process_permission_editor_entry_edit_create_post(request, &data)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
admin_render_permission_editor_entry_edit_create_view(request, &data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
admin_render_edit_permission_main_view(request, &data);
|
admin_render_permission_editor_main_view(request, &data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RBACController::admin_render_edit_permission_main_view(Request *request, RBACAdminEditPermissionView *data) {
|
void RBACController::admin_render_permission_editor_main_view(Request *request, RBACAdminEditPermissionView *data) {
|
||||||
HTMLBuilder b;
|
HTMLBuilder b;
|
||||||
|
|
||||||
Ref<RBACRank> rank = data->rank;
|
Ref<RBACRank> rank = data->rank;
|
||||||
|
|
||||||
b.h4()->f()->a()->href(request->get_url_root_parent())->f()->w("<- Back")->ca()->ch4();
|
b.h4()->f()->a()->href(request->get_url_root_parent(2))->f()->w("<- Back")->ca()->ch4();
|
||||||
b.h4()->f()->w("RBAC Editor")->ch4();
|
b.h4()->f()->w("RBAC Editor")->ch4();
|
||||||
|
|
||||||
b.div()->cls("heading");
|
b.div()->cls("heading");
|
||||||
@ -199,9 +207,18 @@ void RBACController::admin_render_edit_permission_main_view(Request *request, RB
|
|||||||
b.br();
|
b.br();
|
||||||
|
|
||||||
for (int i = 0; i < rank->permissions.size(); ++i) {
|
for (int i = 0; i < rank->permissions.size(); ++i) {
|
||||||
|
Ref<RBACPermission> perm = rank->permissions[i];
|
||||||
|
|
||||||
|
if (!perm.is_valid()) {
|
||||||
|
RLOG_ERR("RBACController::admin_render_permission_editor_main_view: !perm.is_valid()\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
b.div()->cls("row");
|
b.div()->cls("row");
|
||||||
{
|
{
|
||||||
//todo
|
b.w("-- Rank: [ Id ]: ")->wn(perm->id)->w(", [ Rank Id ]: ")->wn(perm->rank_id)->w(", [ Name ]: ")->w(perm->name);
|
||||||
|
b.w(" [ URL ]: ")->w(perm->url)->w(", [ Revoke ]: ")->wbn(perm->revoke)->w(", [ Sort Order ]: ")->wn(perm->sort_order);
|
||||||
|
b.w(" [ Permissions ]: ")->wn(perm->permissions);
|
||||||
}
|
}
|
||||||
b.cdiv();
|
b.cdiv();
|
||||||
}
|
}
|
||||||
@ -215,19 +232,100 @@ void RBACController::admin_render_edit_permission_main_view(Request *request, RB
|
|||||||
request->body += b.result;
|
request->body += b.result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RBACController::admin_render_edit_permission_entry_view(Request *request, RBACAdminEditPermissionView* data) {
|
void RBACController::admin_render_permission_editor_entry_edit_create_view(Request *request, RBACAdminEditPermissionView *data) {
|
||||||
HTMLBuilder b;
|
HTMLBuilder b;
|
||||||
|
|
||||||
Ref<RBACRank> rank = data->rank;
|
Ref<RBACRank> rank = data->rank;
|
||||||
|
Ref<RBACPermission> perm = data->permission;
|
||||||
|
|
||||||
b.h4()->f()->a()->href(request->get_url_root_parent(2))->f()->w("<- Back")->ca()->ch4();
|
String name;
|
||||||
|
String url;
|
||||||
|
bool revoke = false;
|
||||||
|
int sort_order = 0;
|
||||||
|
int permissions = 0;
|
||||||
|
|
||||||
|
if (perm.is_valid()) {
|
||||||
|
name = perm->name;
|
||||||
|
url = perm->url;
|
||||||
|
revoke = perm->revoke;
|
||||||
|
sort_order = perm->sort_order;
|
||||||
|
permissions = perm->permissions;
|
||||||
|
}
|
||||||
|
|
||||||
|
b.h4()->f()->a()->href(request->get_url_root_parent())->f()->w("<- Back")->ca()->ch4();
|
||||||
b.h4()->f()->w("RBAC Editor")->ch4();
|
b.h4()->f()->w("RBAC Editor")->ch4();
|
||||||
|
|
||||||
b.br();
|
b.br();
|
||||||
|
|
||||||
|
b.div()->cls("messages");
|
||||||
|
for (int i = 0; i < data->messages.size(); ++i) {
|
||||||
|
b.w(data->messages[i])->br();
|
||||||
|
}
|
||||||
|
b.cdiv();
|
||||||
|
b.br();
|
||||||
|
|
||||||
|
b.div()->cls("heading");
|
||||||
|
{
|
||||||
|
b.w("Rank: [ Id ]: ")->wn(rank->id)->w(", [ Name ]: ")->w(rank->name)->w(", [ Name Internal ]: ")->w(rank->name_internal);
|
||||||
|
}
|
||||||
|
b.cdiv();
|
||||||
|
b.br();
|
||||||
|
|
||||||
|
b.form()->method("POST")->action(request->get_url_root());
|
||||||
|
{
|
||||||
|
b.w("Name:")->br();
|
||||||
|
b.input()->type("text")->name("name")->value(name)->f()->br();
|
||||||
|
b.w("URL:")->br();
|
||||||
|
b.input()->type("text")->name("url")->value(url)->f()->cinput()->br();
|
||||||
|
b.w("Revoke:")->br();
|
||||||
|
b.input()->type("checkbox")->name("revoke")->value("revoke")->checked(revoke)->f()->cinput()->br();
|
||||||
|
|
||||||
|
//todo permissions (checkboxes + register api)
|
||||||
|
|
||||||
|
b.input()->type("submit")->value("Save");
|
||||||
|
}
|
||||||
|
b.cform();
|
||||||
|
|
||||||
request->body += b.result;
|
request->body += b.result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RBACController::admin_process_permission_editor_entry_edit_create_post(Request *request, RBACAdminEditPermissionView *data) {
|
||||||
|
Ref<RBACRank> rank = data->rank;
|
||||||
|
|
||||||
|
Ref<RBACPermission> perm = data->permission;
|
||||||
|
|
||||||
|
if (!perm.is_valid()) {
|
||||||
|
perm.instance();
|
||||||
|
|
||||||
|
perm->rank_id = rank->id;
|
||||||
|
|
||||||
|
if (rank->permissions.size() > 0) {
|
||||||
|
Ref<RBACPermission> p = rank->permissions[rank->permissions.size() - 1];
|
||||||
|
|
||||||
|
perm->sort_order = p->sort_order + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
perm->name = request->get_parameter("name");
|
||||||
|
perm->url = request->get_parameter("url");
|
||||||
|
perm->revoke = request->get_parameter("settings").to_int();
|
||||||
|
perm->permissions = request->get_parameter("permissions").to_int();
|
||||||
|
|
||||||
|
//set this up in the form by default
|
||||||
|
//perm->sort_order = request->get_parameter("sort_order").to_int();
|
||||||
|
|
||||||
|
RBACModel::get_singleton()->save_permission(perm);
|
||||||
|
|
||||||
|
if (perm->id == 0) {
|
||||||
|
RLOG_ERR("RBACController::admin_process_permission_editor_entry_edit_create_post: perm->id == 0!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
rank->permissions.push_back(perm);
|
||||||
|
|
||||||
|
request->send_redirect(request->get_url_root_parent());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void RBACController::admin_render_rank_list(Request *request) {
|
void RBACController::admin_render_rank_list(Request *request) {
|
||||||
HTMLBuilder b;
|
HTMLBuilder b;
|
||||||
|
|
||||||
@ -243,7 +341,7 @@ void RBACController::admin_render_rank_list(Request *request) {
|
|||||||
|
|
||||||
b.div()->cls("row");
|
b.div()->cls("row");
|
||||||
{
|
{
|
||||||
b.a()->href(request->get_url_root("edit_permissions/") + String::num(r->id));
|
b.a()->href(request->get_url_root("permission_editor/") + String::num(r->id));
|
||||||
b.w("[ Id ]: ")->wn(r->id)->w(", [ Name ]: ")->w(r->name)->w(", [ Name Internal ]: ")->w(r->name_internal);
|
b.w("[ Id ]: ")->wn(r->id)->w(", [ Name ]: ")->w(r->name)->w(", [ Name Internal ]: ")->w(r->name_internal);
|
||||||
b.ca();
|
b.ca();
|
||||||
|
|
||||||
|
@ -49,9 +49,10 @@ public:
|
|||||||
int permission_id = 0;
|
int permission_id = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
void admin_handle_edit_permission(Request *request);
|
void admin_permission_editor(Request *request);
|
||||||
void admin_render_edit_permission_main_view(Request *request, RBACAdminEditPermissionView* data);
|
void admin_render_permission_editor_main_view(Request *request, RBACAdminEditPermissionView* data);
|
||||||
void admin_render_edit_permission_entry_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_list(Request *request);
|
||||||
void admin_render_rank_editor(Request *request);
|
void admin_render_rank_editor(Request *request);
|
||||||
|
Loading…
Reference in New Issue
Block a user