31 using clock = std::chrono::steady_clock;
48 system_user.
id =
"system";
52 return user_context(std::move(system_user),
"system-internal");
60 anon_user.
id =
"anonymous";
69 [[nodiscard]]
const std::string &
session_id() const noexcept {
96 [[nodiscard]]
const std::optional<std::string> &
102 [[nodiscard]]
const std::optional<std::string> &
source_ip() const noexcept {
Represents the security context for a user session.
std::chrono::steady_clock clock
const std::optional< std::string > & source_ae_title() const noexcept
const std::optional< std::string > & source_ip() const noexcept
time_point created_at() const noexcept
time_point last_activity() const noexcept
user_context(User user, std::string session_id)
Construct a user context.
bool is_valid() const noexcept
Check if the context is valid (user is active)
std::optional< std::string > source_ae_title_
static user_context system_context()
Create a system context for internal operations.
bool has_role(Role role) const
Check if user has a specific role.
std::optional< std::string > source_ip_
void set_source_ae_title(std::string ae)
static user_context anonymous_context(const std::string &session_id)
Create an anonymous context with minimal permissions.
const std::string & session_id() const noexcept
clock::time_point time_point
time_point last_activity_
void touch()
Update last activity timestamp.
void set_source_ip(std::string ip)
const User & user() const noexcept
Role
User roles in the PACS system.
@ System
Internal system operations.
Represents a user in the system.
bool has_role(Role role) const
Check if user has a specific role.
std::vector< Role > roles
User definition for RBAC.