Added support for a default user rank id. It's not yet properly settable, only from code.

This commit is contained in:
Relintai 2021-11-14 01:34:01 +01:00
parent adda93bc3a
commit 3817221dbd
5 changed files with 21 additions and 1 deletions

View File

@ -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<RBACRank> RBACController::get_rank(int rank_id) {
return _ranks[rank_id];
}
int RBACController::get_default_user_rank_id() {
return _default_user_rank_id;
}
Ref<RBACRank> 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;
}

View File

@ -65,6 +65,10 @@ public:
virtual void register_permissions();
Ref<RBACRank> get_rank(int rank_id);
int get_default_user_rank_id();
Ref<RBACRank> get_default_user_rank();
int get_default_rank_id();
Ref<RBACRank> get_default_rank();
@ -81,6 +85,7 @@ protected:
static RBACController *_self;
int _default_rank_id;
int _default_user_rank_id;
std::map<int, Ref<RBACRank> > _ranks;
String _redirect_url;

View File

@ -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");

View File

@ -20,6 +20,7 @@ public:
virtual void save_rank(const Ref<RBACRank> &rank);
virtual void save_permission(const Ref<RBACPermission> &permission);
virtual int get_default_rank();
virtual int get_default_user_rank();
virtual String get_redirect_url();
void create_table();

View File

@ -41,7 +41,7 @@ Ref<User> RBACUserModel::create_user() {
Ref<RBACUser> 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;