mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2024-11-14 04:57:21 +01:00
Started porting my old RBAC code to a new module.
This commit is contained in:
parent
304a2a19c9
commit
4c5c439faf
12
modules/rbac/SCsub
Normal file
12
modules/rbac/SCsub
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
Import("env_mod")
|
||||||
|
Import("env")
|
||||||
|
|
||||||
|
env_mod.core_sources = []
|
||||||
|
|
||||||
|
env_mod.add_source_files(env_mod.core_sources, "*.cpp")
|
||||||
|
|
||||||
|
# Build it all as a library
|
||||||
|
lib = env_mod.add_library("users", env_mod.core_sources)
|
||||||
|
env.Prepend(LIBS=[lib])
|
27
modules/rbac/detect.py
Normal file
27
modules/rbac/detect.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import os
|
||||||
|
import platform
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def is_active():
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def get_name():
|
||||||
|
return "users"
|
||||||
|
|
||||||
|
|
||||||
|
def can_build():
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def get_opts():
|
||||||
|
return []
|
||||||
|
|
||||||
|
def get_flags():
|
||||||
|
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def configure(env):
|
||||||
|
pass
|
37
modules/rbac/rbac_controller.cpp
Normal file
37
modules/rbac/rbac_controller.cpp
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include "rbac_controller.h"
|
||||||
|
|
||||||
|
#include "core/html/form_validator.h"
|
||||||
|
#include "core/html/html_builder.h"
|
||||||
|
#include "core/http/cookie.h"
|
||||||
|
#include "core/http/http_session.h"
|
||||||
|
#include "core/http/request.h"
|
||||||
|
#include "core/http/session_manager.h"
|
||||||
|
#include "rbac_model.h"
|
||||||
|
|
||||||
|
void RBACController::handle_request_main(Request *request) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void RBACController::create_validators() {
|
||||||
|
}
|
||||||
|
|
||||||
|
RBACController *RBACController::get_singleton() {
|
||||||
|
return _self;
|
||||||
|
}
|
||||||
|
|
||||||
|
RBACController::RBACController() :
|
||||||
|
Controller() {
|
||||||
|
|
||||||
|
if (_self) {
|
||||||
|
printf("RBACController::RBACController(): Error! self is not null!/n");
|
||||||
|
}
|
||||||
|
|
||||||
|
_self = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
RBACController::~RBACController() {
|
||||||
|
if (_self == this) {
|
||||||
|
_self = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RBACController *RBACController::_self = nullptr;
|
27
modules/rbac/rbac_controller.h
Normal file
27
modules/rbac/rbac_controller.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#ifndef RBAC_CONTROLLER_H
|
||||||
|
#define RBAC_CONTROLLER_H
|
||||||
|
|
||||||
|
#include "core/http/controller.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class Request;
|
||||||
|
class FormValidator;
|
||||||
|
|
||||||
|
class RBACController : public Controller {
|
||||||
|
RCPP_OBJECT(RBACController, Controller);
|
||||||
|
|
||||||
|
public:
|
||||||
|
void handle_request_main(Request *request);
|
||||||
|
void create_validators();
|
||||||
|
|
||||||
|
static RBACController *get_singleton();
|
||||||
|
|
||||||
|
RBACController();
|
||||||
|
~RBACController();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
static RBACController *_self;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
58
modules/rbac/rbac_model.cpp
Normal file
58
modules/rbac/rbac_model.cpp
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
#include "rbac_model.h"
|
||||||
|
|
||||||
|
#include "core/database/database.h"
|
||||||
|
#include "core/database/database_manager.h"
|
||||||
|
#include "core/database/query_builder.h"
|
||||||
|
#include "core/database/query_result.h"
|
||||||
|
#include "core/database/table_builder.h"
|
||||||
|
|
||||||
|
void RBACModel::create_table() {
|
||||||
|
Ref<TableBuilder> tb = DatabaseManager::get_singleton()->ddb->get_table_builder();
|
||||||
|
|
||||||
|
tb->create_table(_table_name);
|
||||||
|
tb->integer("id")->auto_increment()->next_row();
|
||||||
|
tb->varchar("username", 60)->not_null()->next_row();
|
||||||
|
tb->varchar("email", 100)->not_null()->next_row();
|
||||||
|
tb->integer("rank")->not_null()->next_row();
|
||||||
|
tb->varchar("pre_salt", 100)->next_row();
|
||||||
|
tb->varchar("post_salt", 100)->next_row();
|
||||||
|
tb->varchar("password_hash", 100)->next_row();
|
||||||
|
tb->integer("banned")->next_row();
|
||||||
|
tb->varchar("password_reset_token", 100)->next_row();
|
||||||
|
tb->integer("locked")->next_row();
|
||||||
|
tb->primary_key("id");
|
||||||
|
tb->ccreate_table();
|
||||||
|
tb->run_query();
|
||||||
|
//tb->print();
|
||||||
|
}
|
||||||
|
void RBACModel::drop_table() {
|
||||||
|
Ref<TableBuilder> tb = DatabaseManager::get_singleton()->ddb->get_table_builder();
|
||||||
|
|
||||||
|
tb->drop_table_if_exists(_table_name)->run_query();
|
||||||
|
}
|
||||||
|
void RBACModel::migrate() {
|
||||||
|
drop_table();
|
||||||
|
create_table();
|
||||||
|
}
|
||||||
|
|
||||||
|
RBACModel *RBACModel::get_singleton() {
|
||||||
|
return _self;
|
||||||
|
}
|
||||||
|
|
||||||
|
RBACModel::RBACModel() :
|
||||||
|
Model() {
|
||||||
|
|
||||||
|
if (_self) {
|
||||||
|
printf("RBACModel::RBACModel(): Error! self is not null!/n");
|
||||||
|
}
|
||||||
|
|
||||||
|
_self = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
RBACModel::~RBACModel() {
|
||||||
|
if (_self == this) {
|
||||||
|
_self = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RBACModel *RBACModel::_self = nullptr;
|
29
modules/rbac/rbac_model.h
Normal file
29
modules/rbac/rbac_model.h
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#ifndef RBAC_MODEL_H
|
||||||
|
#define RBAC_MODEL_H
|
||||||
|
|
||||||
|
#include "core/http/model.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
class RBACModel : public Model {
|
||||||
|
RCPP_OBJECT(RBACModel, Model);
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
void create_table();
|
||||||
|
void drop_table();
|
||||||
|
void migrate();
|
||||||
|
|
||||||
|
static RBACModel *get_singleton();
|
||||||
|
|
||||||
|
RBACModel();
|
||||||
|
~RBACModel();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
static RBACModel *_self;
|
||||||
|
|
||||||
|
std::string _table_name;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
15
modules/rbac/rbac_permission.cpp
Normal file
15
modules/rbac/rbac_permission.cpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include "rbac_permission.h"
|
||||||
|
|
||||||
|
RBACPermission::RBACPermission() :
|
||||||
|
Resource() {
|
||||||
|
|
||||||
|
id = 0;
|
||||||
|
rank_id = 0;
|
||||||
|
permission_id = 0;
|
||||||
|
revoke = false;
|
||||||
|
sort_order = 0;
|
||||||
|
permissions = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
RBACPermission::~RBACPermission() {
|
||||||
|
}
|
25
modules/rbac/rbac_permission.h
Normal file
25
modules/rbac/rbac_permission.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#ifndef RBAC_PERMISSION_H
|
||||||
|
#define RBAC_PERMISSION_H
|
||||||
|
|
||||||
|
#include "core/resource.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class RBACPermission : public Resource {
|
||||||
|
RCPP_OBJECT(RBACPermission, Resource);
|
||||||
|
|
||||||
|
public:
|
||||||
|
int id;
|
||||||
|
int rank_id;
|
||||||
|
int permission_id;
|
||||||
|
std::string name;
|
||||||
|
std::string url;
|
||||||
|
bool revoke;
|
||||||
|
int sort_order;
|
||||||
|
int permissions;
|
||||||
|
|
||||||
|
RBACPermission();
|
||||||
|
~RBACPermission();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
11
modules/rbac/rbac_rank.cpp
Normal file
11
modules/rbac/rbac_rank.cpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include "rbac_rank.h"
|
||||||
|
|
||||||
|
RBACRank::RBACRank() :
|
||||||
|
Resource() {
|
||||||
|
|
||||||
|
id = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
RBACRank::~RBACRank() {
|
||||||
|
groups.clear();
|
||||||
|
}
|
27
modules/rbac/rbac_rank.h
Normal file
27
modules/rbac/rbac_rank.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#ifndef RBAC_RANK_H
|
||||||
|
#define RBAC_RANK_H
|
||||||
|
|
||||||
|
#include "core/resource.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "rbac_permission.h"
|
||||||
|
|
||||||
|
class RBACRank : public Resource {
|
||||||
|
RCPP_OBJECT(RBACRank, Resource);
|
||||||
|
|
||||||
|
public:
|
||||||
|
int id;
|
||||||
|
|
||||||
|
std::string name;
|
||||||
|
std::string name_internal;
|
||||||
|
std::string settings;
|
||||||
|
|
||||||
|
std::vector<Ref<RBACPermission> > groups;
|
||||||
|
|
||||||
|
RBACRank();
|
||||||
|
~RBACRank();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user