mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2025-02-20 15:14:26 +01: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"
|
||||
|
||||
bool RBACRank::has_permission(Request *request, const int permission) {
|
||||
//todo try to find a match from the permissions array
|
||||
Ref<RBACPermission> RBACRank::match_request(Request *request) {
|
||||
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) {
|
||||
|
@ -25,6 +25,9 @@ public:
|
||||
|
||||
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_rank_permission(const int permission);
|
||||
|
||||
|
@ -1,5 +1,12 @@
|
||||
#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) {
|
||||
if (!rbac_rank.is_valid()) {
|
||||
return false;
|
||||
@ -7,6 +14,20 @@ bool RBACUser::has_permission(Request *request, const int 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() :
|
||||
User() {
|
||||
|
@ -15,7 +15,10 @@ class RBACUser : public User {
|
||||
public:
|
||||
Ref<RBACRank> rbac_rank;
|
||||
|
||||
int get_permissions(Request *request);
|
||||
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();
|
||||
|
Loading…
Reference in New Issue
Block a user