From 3817221dbd33b4d2926a5cc30467b85acc92ae5f Mon Sep 17 00:00:00 2001 From: Relintai Date: Sun, 14 Nov 2021 01:34:01 +0100 Subject: [PATCH] Added support for a default user rank id. It's not yet properly settable, only from code. --- modules/rbac/rbac_controller.cpp | 9 +++++++++ modules/rbac/rbac_controller.h | 5 +++++ modules/rbac/rbac_model.cpp | 5 +++++ modules/rbac/rbac_model.h | 1 + modules/rbac_users/rbac_user_model.cpp | 2 +- 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/modules/rbac/rbac_controller.cpp b/modules/rbac/rbac_controller.cpp index bddbe66..739028f 100644 --- a/modules/rbac/rbac_controller.cpp +++ b/modules/rbac/rbac_controller.cpp @@ -568,6 +568,7 @@ void RBACController::clear_registered_permissions() { void RBACController::initialize() { _ranks = RBACModel::get_singleton()->load_ranks(); _default_rank_id = RBACModel::get_singleton()->get_default_rank(); + _default_user_rank_id = RBACModel::get_singleton()->get_default_user_rank(); register_permissions(); } @@ -586,6 +587,13 @@ Ref RBACController::get_rank(int rank_id) { return _ranks[rank_id]; } +int RBACController::get_default_user_rank_id() { + return _default_user_rank_id; +} +Ref RBACController::get_default_user_rank() { + return _ranks[get_default_user_rank_id()]; +} + int RBACController::get_default_rank_id() { return _default_rank_id; } @@ -615,6 +623,7 @@ RBACController::RBACController() : } _default_rank_id = 0; + _default_user_rank_id = 0; _self = this; } diff --git a/modules/rbac/rbac_controller.h b/modules/rbac/rbac_controller.h index 8fdb7ce..e348ff9 100644 --- a/modules/rbac/rbac_controller.h +++ b/modules/rbac/rbac_controller.h @@ -65,6 +65,10 @@ public: virtual void register_permissions(); Ref get_rank(int rank_id); + + int get_default_user_rank_id(); + Ref get_default_user_rank(); + int get_default_rank_id(); Ref get_default_rank(); @@ -81,6 +85,7 @@ protected: static RBACController *_self; int _default_rank_id; + int _default_user_rank_id; std::map > _ranks; String _redirect_url; diff --git a/modules/rbac/rbac_model.cpp b/modules/rbac/rbac_model.cpp index 39db31b..fc819e4 100644 --- a/modules/rbac/rbac_model.cpp +++ b/modules/rbac/rbac_model.cpp @@ -149,6 +149,11 @@ int RBACModel::get_default_rank() { return 3; } +int RBACModel::get_default_user_rank() { + //todo, load this, and save it to a table (probably a new settings class) + return 2; +} + String RBACModel::get_redirect_url() { //todo, load this, and save it to a table (probably a new settings class) return String("/user/login"); diff --git a/modules/rbac/rbac_model.h b/modules/rbac/rbac_model.h index 7c30fed..dc7b8d0 100644 --- a/modules/rbac/rbac_model.h +++ b/modules/rbac/rbac_model.h @@ -20,6 +20,7 @@ public: virtual void save_rank(const Ref &rank); virtual void save_permission(const Ref &permission); virtual int get_default_rank(); + virtual int get_default_user_rank(); virtual String get_redirect_url(); void create_table(); diff --git a/modules/rbac_users/rbac_user_model.cpp b/modules/rbac_users/rbac_user_model.cpp index f9057e3..d706757 100644 --- a/modules/rbac_users/rbac_user_model.cpp +++ b/modules/rbac_users/rbac_user_model.cpp @@ -41,7 +41,7 @@ Ref RBACUserModel::create_user() { Ref u; u.instance(); - u->rank = RBACController::get_singleton()->get_default_rank_id(); + u->rank = RBACController::get_singleton()->get_default_user_rank_id(); u->rbac_rank = RBACController::get_singleton()->get_rank(u->rank); return u;