Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
database::security::access_control Class Reference

Role-based access control (RBAC) system. More...

#include <secure_connection.h>

Collaboration diagram for database::security::access_control:
Collaboration graph

Classes

struct  role
 
struct  user_session
 

Public Types

enum class  permission {
  select = 1 , insert = 2 , update = 4 , delete_record = 8 ,
  create = 16 , drop = 32 , alter = 64 , admin = 128
}
 

Public Member Functions

 access_control ()=default
 Default constructor - used by database_context.
 
bool create_role (const role &new_role)
 
bool assign_role_to_user (const std::string &user_id, const std::string &role_name)
 
bool revoke_role_from_user (const std::string &user_id, const std::string &role_name)
 
std::vector< roleget_user_roles (const std::string &user_id) const
 
bool check_permission (const std::string &user_id, const std::string &table, const std::string &operation) const
 
bool check_table_access (const std::string &user_id, const std::string &table) const
 
std::string create_session (const std::string &user_id, const std::string &client_ip)
 
bool validate_session (const std::string &session_id) const
 
bool terminate_session (const std::string &session_id)
 
void cleanup_expired_sessions ()
 

Private Attributes

std::mutex access_mutex_
 
std::unordered_map< std::string, roleroles_
 
std::unordered_map< std::string, std::vector< std::string > > user_roles_
 
std::unordered_map< std::string, user_sessionactive_sessions_
 

Detailed Description

Role-based access control (RBAC) system.

Note
This class uses dependency injection pattern. Access via database_context::get_access_control() (Sprint 3, Task 3.3).

Example:

auto context = std::make_shared<database_context>();
auto access_ctrl = context->get_access_control();

Definition at line 193 of file secure_connection.h.

Member Enumeration Documentation

◆ permission

Constructor & Destructor Documentation

◆ access_control()

database::security::access_control::access_control ( )
default

Default constructor - used by database_context.

Member Function Documentation

◆ assign_role_to_user()

bool database::security::access_control::assign_role_to_user ( const std::string & user_id,
const std::string & role_name )

◆ check_permission()

bool database::security::access_control::check_permission ( const std::string & user_id,
const std::string & table,
const std::string & operation ) const

◆ check_table_access()

bool database::security::access_control::check_table_access ( const std::string & user_id,
const std::string & table ) const

◆ cleanup_expired_sessions()

void database::security::access_control::cleanup_expired_sessions ( )

◆ create_role()

bool database::security::access_control::create_role ( const role & new_role)

◆ create_session()

std::string database::security::access_control::create_session ( const std::string & user_id,
const std::string & client_ip )

◆ get_user_roles()

std::vector< role > database::security::access_control::get_user_roles ( const std::string & user_id) const

◆ revoke_role_from_user()

bool database::security::access_control::revoke_role_from_user ( const std::string & user_id,
const std::string & role_name )

◆ terminate_session()

bool database::security::access_control::terminate_session ( const std::string & session_id)

◆ validate_session()

bool database::security::access_control::validate_session ( const std::string & session_id) const

Member Data Documentation

◆ access_mutex_

std::mutex database::security::access_control::access_mutex_
mutableprivate

Definition at line 250 of file secure_connection.h.

◆ active_sessions_

std::unordered_map<std::string, user_session> database::security::access_control::active_sessions_
private

Definition at line 253 of file secure_connection.h.

◆ roles_

std::unordered_map<std::string, role> database::security::access_control::roles_
private

Definition at line 251 of file secure_connection.h.

◆ user_roles_

std::unordered_map<std::string, std::vector<std::string> > database::security::access_control::user_roles_
private

Definition at line 252 of file secure_connection.h.


The documentation for this class was generated from the following file: