mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2025-05-10 21:52:08 +02:00
Set up the new permission handling methods for RBACUser.
This commit is contained in:
parent
839e5ef674
commit
c934d36dcf
@ -2,10 +2,32 @@
|
|||||||
|
|
||||||
#include "core/http/request.h"
|
#include "core/http/request.h"
|
||||||
|
|
||||||
bool RBACRank::has_permission(Request *request, const int permission) {
|
Ref<RBACPermission> RBACRank::match_request(Request *request) {
|
||||||
//todo try to find a match from the permissions array
|
return Ref<RBACPermission>();
|
||||||
|
}
|
||||||
|
|
||||||
return (base_permissions & permission) != 0;
|
bool RBACRank::get_permissions(Request *request) {
|
||||||
|
int perm = base_permissions;
|
||||||
|
|
||||||
|
Ref<RBACPermission> match = match_request(request);
|
||||||
|
|
||||||
|
if (match.is_valid()) {
|
||||||
|
perm = match->permissions;
|
||||||
|
}
|
||||||
|
|
||||||
|
return perm;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RBACRank::has_permission(Request *request, const int permission) {
|
||||||
|
int perm = base_permissions;
|
||||||
|
|
||||||
|
Ref<RBACPermission> match = match_request(request);
|
||||||
|
|
||||||
|
if (match.is_valid()) {
|
||||||
|
perm = match->permissions;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (perm & permission) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RBACRank::has_rank_permission(const int permission) {
|
bool RBACRank::has_rank_permission(const int permission) {
|
||||||
|
@ -25,6 +25,9 @@ public:
|
|||||||
|
|
||||||
Vector<Ref<RBACPermission> > permissions;
|
Vector<Ref<RBACPermission> > permissions;
|
||||||
|
|
||||||
|
Ref<RBACPermission> match_request(Request *request);
|
||||||
|
|
||||||
|
bool get_permissions(Request *request);
|
||||||
bool has_permission(Request *request, const int permission);
|
bool has_permission(Request *request, const int permission);
|
||||||
bool has_rank_permission(const int permission);
|
bool has_rank_permission(const int permission);
|
||||||
|
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
#include "rbac_user.h"
|
#include "rbac_user.h"
|
||||||
|
|
||||||
|
int RBACUser::get_permissions(Request *request) {
|
||||||
|
if (!rbac_rank.is_valid()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rbac_rank->get_permissions(request);
|
||||||
|
}
|
||||||
bool RBACUser::has_permission(Request *request, const int permission) {
|
bool RBACUser::has_permission(Request *request, const int permission) {
|
||||||
if (!rbac_rank.is_valid()) {
|
if (!rbac_rank.is_valid()) {
|
||||||
return false;
|
return false;
|
||||||
@ -7,6 +14,20 @@ bool RBACUser::has_permission(Request *request, const int permission) {
|
|||||||
|
|
||||||
return rbac_rank->has_permission(request, permission);
|
return rbac_rank->has_permission(request, permission);
|
||||||
}
|
}
|
||||||
|
int RBACUser::get_additional_permissions(Request *request) {
|
||||||
|
if (!rbac_rank.is_valid()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rbac_rank->rank_permissions;
|
||||||
|
}
|
||||||
|
bool RBACUser::has_additional_permission(Request *request, const int permission) {
|
||||||
|
if (!rbac_rank.is_valid()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rbac_rank->rank_permissions & permission;
|
||||||
|
}
|
||||||
|
|
||||||
RBACUser::RBACUser() :
|
RBACUser::RBACUser() :
|
||||||
User() {
|
User() {
|
||||||
|
@ -15,7 +15,10 @@ class RBACUser : public User {
|
|||||||
public:
|
public:
|
||||||
Ref<RBACRank> rbac_rank;
|
Ref<RBACRank> rbac_rank;
|
||||||
|
|
||||||
|
int get_permissions(Request *request);
|
||||||
bool has_permission(Request *request, const int permission);
|
bool has_permission(Request *request, const int permission);
|
||||||
|
int get_additional_permissions(Request *request);
|
||||||
|
bool has_additional_permission(Request *request, const int permission);
|
||||||
|
|
||||||
RBACUser();
|
RBACUser();
|
||||||
~RBACUser();
|
~RBACUser();
|
||||||
|
Loading…
Reference in New Issue
Block a user