PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
security_storage_interface.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2021-2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
14#pragma once
15
16#include "user.h"
17#include <kcenon/common/patterns/result.h>
18#include <string_view>
19#include <vector>
20
21namespace kcenon::pacs::security {
22
27public:
28 template <typename T> using Result = kcenon::common::Result<T>;
29 using VoidResult = kcenon::common::VoidResult;
30
31 virtual ~security_storage_interface() = default;
32
33 // User Management
34 [[nodiscard]] virtual auto create_user(const User &user) -> VoidResult = 0;
35 [[nodiscard]] virtual auto get_user(std::string_view id) -> Result<User> = 0;
36 [[nodiscard]] virtual auto get_user_by_username(std::string_view username)
37 -> Result<User> = 0;
38 [[nodiscard]] virtual auto update_user(const User &user) -> VoidResult = 0;
39 [[nodiscard]] virtual auto delete_user(std::string_view id) -> VoidResult = 0;
40
41 // Role Assignment (usually part of user update, but explicit methods can
42 // help)
43 [[nodiscard]] virtual auto get_users_by_role(Role role)
45
46protected:
54};
55
56} // namespace kcenon::pacs::security
Abstract interface for persisting security data (Users, Roles)
security_storage_interface(const security_storage_interface &)=delete
security_storage_interface & operator=(security_storage_interface &&)=default
virtual auto update_user(const User &user) -> VoidResult=0
virtual auto get_user_by_username(std::string_view username) -> Result< User >=0
virtual auto get_users_by_role(Role role) -> Result< std::vector< User > >=0
security_storage_interface(security_storage_interface &&)=default
virtual auto create_user(const User &user) -> VoidResult=0
virtual auto delete_user(std::string_view id) -> VoidResult=0
security_storage_interface & operator=(const security_storage_interface &)=delete
virtual auto get_user(std::string_view id) -> Result< User >=0
Role
User roles in the PACS system.
Definition role.h:25
Represents a user in the system.
Definition user.h:26
User definition for RBAC.