mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2025-05-02 13:47:56 +02:00
RBAC default entries are now created on migrate. Also basic simple default rank implementation.
This commit is contained in:
parent
af266e345d
commit
a9b3fbdece
@ -567,6 +567,7 @@ void RBACController::clear_registered_permissions() {
|
|||||||
|
|
||||||
void RBACController::initialize() {
|
void RBACController::initialize() {
|
||||||
_ranks = RBACModel::get_singleton()->load_ranks();
|
_ranks = RBACModel::get_singleton()->load_ranks();
|
||||||
|
_default_rank_id = RBACModel::get_singleton()->get_default_rank();
|
||||||
|
|
||||||
register_permissions();
|
register_permissions();
|
||||||
}
|
}
|
||||||
@ -585,8 +586,7 @@ Ref<RBACRank> RBACController::get_rank(int rank_id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int RBACController::get_default_rank_id() {
|
int RBACController::get_default_rank_id() {
|
||||||
//todo
|
return _default_rank_id;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<RBACRank> RBACController::get_default_rank() {
|
Ref<RBACRank> RBACController::get_default_rank() {
|
||||||
@ -609,6 +609,8 @@ RBACController::RBACController() :
|
|||||||
printf("RBACController::RBACController(): Error! self is not null!/n");
|
printf("RBACController::RBACController(): Error! self is not null!/n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_default_rank_id = 0;
|
||||||
|
|
||||||
_self = this;
|
_self = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,6 +78,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
static RBACController *_self;
|
static RBACController *_self;
|
||||||
|
|
||||||
|
int _default_rank_id;
|
||||||
std::map<int, Ref<RBACRank> > _ranks;
|
std::map<int, Ref<RBACRank> > _ranks;
|
||||||
|
|
||||||
struct PermissionEntry {
|
struct PermissionEntry {
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
#define RBAC_RANK_TABLE "rbac_ranks"
|
#define RBAC_RANK_TABLE "rbac_ranks"
|
||||||
#define RBAC_PERMISSION_TABLE "rbac_permissions"
|
#define RBAC_PERMISSION_TABLE "rbac_permissions"
|
||||||
|
|
||||||
|
#include "rbac_default_permissions.h"
|
||||||
|
|
||||||
std::map<int, Ref<RBACRank> > RBACModel::load_ranks() {
|
std::map<int, Ref<RBACRank> > RBACModel::load_ranks() {
|
||||||
std::map<int, Ref<RBACRank> > ranks;
|
std::map<int, Ref<RBACRank> > ranks;
|
||||||
|
|
||||||
@ -142,6 +144,11 @@ void RBACModel::save_permission(const Ref<RBACPermission> &permission) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int RBACModel::get_default_rank() {
|
||||||
|
//todo, load this, and save it to a table (probably a new settings class)
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
void RBACModel::create_table() {
|
void RBACModel::create_table() {
|
||||||
Ref<TableBuilder> tb = DatabaseManager::get_singleton()->ddb->get_table_builder();
|
Ref<TableBuilder> tb = DatabaseManager::get_singleton()->ddb->get_table_builder();
|
||||||
|
|
||||||
@ -182,6 +189,36 @@ void RBACModel::drop_table() {
|
|||||||
void RBACModel::migrate() {
|
void RBACModel::migrate() {
|
||||||
drop_table();
|
drop_table();
|
||||||
create_table();
|
create_table();
|
||||||
|
create_default_entries();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RBACModel::create_default_entries() {
|
||||||
|
Ref<RBACRank> admin;
|
||||||
|
admin.instance();
|
||||||
|
|
||||||
|
admin->name = "Admin";
|
||||||
|
admin->base_permissions = RBAC_PERMISSION_ALL;
|
||||||
|
admin->rank_permissions = RBAC_PERMISSION_ADMIN_PANEL;
|
||||||
|
|
||||||
|
save_rank(admin);
|
||||||
|
|
||||||
|
Ref<RBACRank> user;
|
||||||
|
user.instance();
|
||||||
|
|
||||||
|
user->name = "User";
|
||||||
|
user->base_permissions = RBAC_PERMISSION_READ;
|
||||||
|
user->rank_permissions = 0;
|
||||||
|
|
||||||
|
save_rank(user);
|
||||||
|
|
||||||
|
Ref<RBACRank> guest;
|
||||||
|
guest.instance();
|
||||||
|
|
||||||
|
guest->name = "Guest";
|
||||||
|
guest->base_permissions = RBAC_PERMISSION_READ;
|
||||||
|
guest->rank_permissions = 0;
|
||||||
|
|
||||||
|
save_rank(guest);
|
||||||
}
|
}
|
||||||
|
|
||||||
RBACModel *RBACModel::get_singleton() {
|
RBACModel *RBACModel::get_singleton() {
|
||||||
|
@ -19,10 +19,12 @@ public:
|
|||||||
virtual void save(const Ref<RBACRank> &rank);
|
virtual void save(const Ref<RBACRank> &rank);
|
||||||
virtual void save_rank(const Ref<RBACRank> &rank);
|
virtual void save_rank(const Ref<RBACRank> &rank);
|
||||||
virtual void save_permission(const Ref<RBACPermission> &permission);
|
virtual void save_permission(const Ref<RBACPermission> &permission);
|
||||||
|
virtual int get_default_rank();
|
||||||
|
|
||||||
void create_table();
|
void create_table();
|
||||||
void drop_table();
|
void drop_table();
|
||||||
void migrate();
|
void migrate();
|
||||||
|
virtual void create_default_entries();
|
||||||
|
|
||||||
static RBACModel *get_singleton();
|
static RBACModel *get_singleton();
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ void RBACUserController::rbac_default_user_session_middleware(Object *instance,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rank->has_permission(request, RBAC_PERMISSION_READ)) {
|
if (!rank->has_permission(request, RBAC_PERMISSION_READ)) {
|
||||||
//todo implement redirect perm
|
//todo implement redirect perm
|
||||||
|
|
||||||
request->send_error(404);
|
request->send_error(404);
|
||||||
|
Loading…
Reference in New Issue
Block a user