PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
kcenon::pacs::security::user_context Class Reference

Represents the security context for a user session. More...

#include <user_context.h>

Collaboration diagram for kcenon::pacs::security::user_context:
Collaboration graph

Public Types

using clock = std::chrono::steady_clock
 
using time_point = clock::time_point
 

Public Member Functions

 user_context (User user, std::string session_id)
 Construct a user context.
 
const Useruser () const noexcept
 
const std::string & session_id () const noexcept
 
time_point created_at () const noexcept
 
time_point last_activity () const noexcept
 
bool is_valid () const noexcept
 Check if the context is valid (user is active)
 
bool has_role (Role role) const
 Check if user has a specific role.
 
void touch ()
 Update last activity timestamp.
 
void set_source_ae_title (std::string ae)
 
const std::optional< std::string > & source_ae_title () const noexcept
 
void set_source_ip (std::string ip)
 
const std::optional< std::string > & source_ip () const noexcept
 

Static Public Member Functions

static user_context system_context ()
 Create a system context for internal operations.
 
static user_context anonymous_context (const std::string &session_id)
 Create an anonymous context with minimal permissions.
 

Private Attributes

User user_
 
std::string session_id_
 
time_point created_at_
 
time_point last_activity_
 
std::optional< std::string > source_ae_title_
 
std::optional< std::string > source_ip_
 

Detailed Description

Represents the security context for a user session.

Encapsulates user information along with session-specific data for access control decisions.

Definition at line 29 of file user_context.h.

Member Typedef Documentation

◆ clock

using kcenon::pacs::security::user_context::clock = std::chrono::steady_clock

Definition at line 31 of file user_context.h.

◆ time_point

Definition at line 32 of file user_context.h.

Constructor & Destructor Documentation

◆ user_context()

kcenon::pacs::security::user_context::user_context ( User user,
std::string session_id )
inline

Construct a user context.

Parameters
userThe authenticated user
session_idUnique session identifier

Definition at line 39 of file user_context.h.

40 : user_(std::move(user)), session_id_(std::move(session_id)),
41 created_at_(clock::now()), last_activity_(clock::now()) {}
const std::string & session_id() const noexcept

Referenced by anonymous_context(), and system_context().

Here is the caller graph for this function:

Member Function Documentation

◆ anonymous_context()

static user_context kcenon::pacs::security::user_context::anonymous_context ( const std::string & session_id)
inlinestatic

Create an anonymous context with minimal permissions.

Definition at line 58 of file user_context.h.

58 {
59 User anon_user;
60 anon_user.id = "anonymous";
61 anon_user.username = "anonymous";
62 anon_user.roles = {}; // No roles = no permissions
63 anon_user.active = true;
64 return user_context(std::move(anon_user), session_id);
65 }
user_context(User user, std::string session_id)
Construct a user context.

References kcenon::pacs::security::User::active, kcenon::pacs::security::User::id, kcenon::pacs::security::User::roles, session_id(), user_context(), and kcenon::pacs::security::User::username.

Here is the call graph for this function:

◆ created_at()

time_point kcenon::pacs::security::user_context::created_at ( ) const
inlinenodiscardnoexcept

Definition at line 72 of file user_context.h.

72{ return created_at_; }

References created_at_.

◆ has_role()

bool kcenon::pacs::security::user_context::has_role ( Role role) const
inlinenodiscard

Check if user has a specific role.

Definition at line 85 of file user_context.h.

85{ return user_.has_role(role); }
bool has_role(Role role) const
Check if user has a specific role.
Definition user.h:35

References kcenon::pacs::security::User::has_role(), and user_.

Here is the call graph for this function:

◆ is_valid()

bool kcenon::pacs::security::user_context::is_valid ( ) const
inlinenodiscardnoexcept

Check if the context is valid (user is active)

Definition at line 80 of file user_context.h.

80{ return user_.active; }

References kcenon::pacs::security::User::active, and user_.

Referenced by kcenon::pacs::security::access_control_manager::check_dicom_operation().

Here is the caller graph for this function:

◆ last_activity()

time_point kcenon::pacs::security::user_context::last_activity ( ) const
inlinenodiscardnoexcept

Definition at line 73 of file user_context.h.

73 {
74 return last_activity_;
75 }

References last_activity_.

◆ session_id()

const std::string & kcenon::pacs::security::user_context::session_id ( ) const
inlinenodiscardnoexcept

Definition at line 69 of file user_context.h.

69 {
70 return session_id_;
71 }

References session_id_.

Referenced by anonymous_context().

Here is the caller graph for this function:

◆ set_source_ae_title()

void kcenon::pacs::security::user_context::set_source_ae_title ( std::string ae)
inline

Definition at line 93 of file user_context.h.

93 {
94 source_ae_title_ = std::move(ae);
95 }
std::optional< std::string > source_ae_title_

References source_ae_title_.

◆ set_source_ip()

void kcenon::pacs::security::user_context::set_source_ip ( std::string ip)
inline

Definition at line 101 of file user_context.h.

101{ source_ip_ = std::move(ip); }
std::optional< std::string > source_ip_

References source_ip_.

◆ source_ae_title()

const std::optional< std::string > & kcenon::pacs::security::user_context::source_ae_title ( ) const
inlinenodiscardnoexcept

Definition at line 97 of file user_context.h.

97 {
98 return source_ae_title_;
99 }

References source_ae_title_.

◆ source_ip()

const std::optional< std::string > & kcenon::pacs::security::user_context::source_ip ( ) const
inlinenodiscardnoexcept

Definition at line 102 of file user_context.h.

102 {
103 return source_ip_;
104 }

References source_ip_.

◆ system_context()

static user_context kcenon::pacs::security::user_context::system_context ( )
inlinestatic

Create a system context for internal operations.

Definition at line 46 of file user_context.h.

46 {
47 User system_user;
48 system_user.id = "system";
49 system_user.username = "system";
50 system_user.roles = {Role::System};
51 system_user.active = true;
52 return user_context(std::move(system_user), "system-internal");
53 }
@ System
Internal system operations.

References kcenon::pacs::security::User::active, kcenon::pacs::security::User::id, kcenon::pacs::security::User::roles, kcenon::pacs::security::System, user_context(), and kcenon::pacs::security::User::username.

Here is the call graph for this function:

◆ touch()

void kcenon::pacs::security::user_context::touch ( )
inline

Update last activity timestamp.

Definition at line 90 of file user_context.h.

90{ last_activity_ = clock::now(); }

References last_activity_.

◆ user()

const User & kcenon::pacs::security::user_context::user ( ) const
inlinenodiscardnoexcept

Definition at line 68 of file user_context.h.

68{ return user_; }

References user_.

Referenced by kcenon::pacs::security::access_control_manager::check_dicom_operation().

Here is the caller graph for this function:

Member Data Documentation

◆ created_at_

time_point kcenon::pacs::security::user_context::created_at_
private

Definition at line 109 of file user_context.h.

Referenced by created_at().

◆ last_activity_

time_point kcenon::pacs::security::user_context::last_activity_
private

Definition at line 110 of file user_context.h.

Referenced by last_activity(), and touch().

◆ session_id_

std::string kcenon::pacs::security::user_context::session_id_
private

Definition at line 108 of file user_context.h.

Referenced by session_id().

◆ source_ae_title_

std::optional<std::string> kcenon::pacs::security::user_context::source_ae_title_
private

Definition at line 111 of file user_context.h.

Referenced by set_source_ae_title(), and source_ae_title().

◆ source_ip_

std::optional<std::string> kcenon::pacs::security::user_context::source_ip_
private

Definition at line 112 of file user_context.h.

Referenced by set_source_ip(), and source_ip().

◆ user_

User kcenon::pacs::security::user_context::user_
private

Definition at line 107 of file user_context.h.

Referenced by has_role(), is_valid(), and user().


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