PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
permission.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 <cstdint>
17#include <string>
18#include <string_view>
19
20namespace kcenon::pacs::security {
21
25enum class ResourceType {
26 Study,
27 Metadata,
28 System,
29 Audit,
30 User,
31 Role,
32 Series,
33 Image
34};
35
39namespace Action {
40constexpr std::uint32_t None = 0;
41constexpr std::uint32_t Read = 1 << 0;
42constexpr std::uint32_t Write = 1 << 1; // Create/Update
43constexpr std::uint32_t Delete = 1 << 2;
44constexpr std::uint32_t Export = 1 << 3; // Download/Move
45constexpr std::uint32_t Execute = 1 << 4; // Run commands/tools
46
47constexpr std::uint32_t All = 0xFFFFFFFF;
48constexpr std::uint32_t ReadWrite = Read | Write;
49constexpr std::uint32_t Full = Read | Write | Delete | Export | Execute;
50} // namespace Action
51
55struct Permission {
57 std::uint32_t actions; // Bitmask of Action flags
58
59 constexpr bool has_action(std::uint32_t action_mask) const {
60 return (actions & action_mask) == action_mask;
61 }
62
63 bool operator==(const Permission &other) const = default;
64};
65
66} // namespace kcenon::pacs::security
constexpr std::uint32_t None
Definition permission.h:40
constexpr std::uint32_t Delete
Definition permission.h:43
constexpr std::uint32_t Export
Definition permission.h:44
constexpr std::uint32_t Full
Definition permission.h:49
constexpr std::uint32_t ReadWrite
Definition permission.h:48
constexpr std::uint32_t All
Definition permission.h:47
constexpr std::uint32_t Write
Definition permission.h:42
constexpr std::uint32_t Read
Definition permission.h:41
constexpr std::uint32_t Execute
Definition permission.h:45
Role
User roles in the PACS system.
Definition role.h:25
ResourceType
Categories of resources requiring protection.
Definition permission.h:25
@ Study
DICOM studies/series/instances.
@ System
System configuration and services.
@ Metadata
Patient/Study metadata.
Represents a permission grant.
Definition permission.h:55
bool operator==(const Permission &other) const =default
constexpr bool has_action(std::uint32_t action_mask) const
Definition permission.h:59