hyperledger/iroha
Iroha - A simple, decentralized ledger http://iroha.tech
permissions.hpp
Go to the documentation of this file.
1
6
#ifndef IROHA_SHARED_MODEL_PERMISSIONS_HPP
7
#define IROHA_SHARED_MODEL_PERMISSIONS_HPP
8
9
#include <bitset>
10
#include <functional>
11
#include <initializer_list>
12
#include <string>
13
#include <string_view>
14
15
namespace
shared_model
{
16
namespace
interface {
17
namespace
permissions {
18
enum class
Role
{
19
kAppendRole
,
20
kCreateRole
,
21
kDetachRole
,
22
kAddAssetQty
,
23
kSubtractAssetQty
,
24
kAddPeer
,
25
kAddSignatory
,
26
kRemoveSignatory
,
27
kSetQuorum
,
28
kCreateAccount
,
29
kSetDetail
,
30
kCreateAsset
,
31
kTransfer
,
32
kReceive
,
33
kCreateDomain
,
34
kReadAssets
,
35
kGetRoles
,
36
kGetMyAccount
,
37
kGetAllAccounts
,
38
kGetDomainAccounts
,
39
kGetMySignatories
,
40
kGetAllSignatories
,
41
kGetDomainSignatories
,
42
kGetMyAccAst
,
43
kGetAllAccAst
,
44
kGetDomainAccAst
,
45
kGetMyAccDetail
,
46
kGetAllAccDetail
,
47
kGetDomainAccDetail
,
48
kGetMyAccTxs
,
49
kGetAllAccTxs
,
50
kGetDomainAccTxs
,
51
kGetMyAccAstTxs
,
52
kGetAllAccAstTxs
,
53
kGetDomainAccAstTxs
,
54
kGetMyTxs
,
55
kGetAllTxs
,
56
kSetMyQuorum
,
57
kAddMySignatory
,
58
kRemoveMySignatory
,
59
kTransferMyAssets
,
60
kSetMyAccountDetail
,
61
kGetBlocks
,
62
kAddDomainAssetQty
,
63
kSubtractDomainAssetQty
,
64
kGetPeers
,
65
kRemovePeer
,
66
kRoot
,
67
kCallEngine
,
68
kGrantCallEngineOnMyBehalf
,
69
kGetMyEngineReceipts
,
70
kGetDomainEngineReceipts
,
71
kGetAllEngineReceipts
,
72
73
COUNT
74
};
75
76
enum class
Grantable
{
77
kAddMySignatory
,
78
kRemoveMySignatory
,
79
kSetMyQuorum
,
80
kSetMyAccountDetail
,
81
kTransferMyAssets
,
82
kCallEngineOnMyBehalf
,
83
84
COUNT
85
};
86
87
Role
permissionFor
(
Grantable
);
88
93
bool
isValid
(
interface::permissions::Role
perm) noexcept;
94
99
bool
isValid
(
interface::permissions::Grantable
perm) noexcept;
100
}
// namespace permissions
101
102
template
<
typename
Perm>
103
class
PermissionSet
{
104
public
:
105
PermissionSet
();
106
PermissionSet
(std::initializer_list<Perm> list);
107
explicit
PermissionSet
(std::string_view bitstring);
108
109
// TODO [IR-1889] Akvinikym 21.11.18: introduce toString() method
110
std::string toBitstring()
const
;
111
112
static
constexpr
size_t
size
() {
113
return
static_cast<
size_t
>
(
Perm::COUNT
);
114
}
115
116
PermissionSet
&unsetAll();
117
PermissionSet
&setAll();
118
PermissionSet
&
set
(Perm p);
119
PermissionSet
&unset(Perm p);
120
121
bool
isSet(Perm p)
const
;
122
bool
isEmpty()
const
;
123
125
bool
isSubsetOf(
const
PermissionSet<Perm>
&r)
const
;
126
127
bool
operator==(
const
PermissionSet<Perm>
&r)
const
;
128
bool
operator!=(
const
PermissionSet<Perm>
&r)
const
;
129
PermissionSet<Perm>
&operator&=(
const
PermissionSet<Perm>
&r);
130
PermissionSet<Perm>
&operator|=(
const
PermissionSet<Perm>
&r);
131
PermissionSet<Perm>
&operator^=(
const
PermissionSet<Perm>
&r);
132
133
void
iterate(std::function<
void
(Perm)> f)
const
;
134
135
private
:
136
std::bitset<static_cast<size_t>(
Perm::COUNT
)> perms_bitset_;
137
};
138
139
using
RolePermissionSet
=
PermissionSet<permissions::Role>
;
140
using
GrantablePermissionSet
=
PermissionSet<permissions::Grantable>
;
141
}
// namespace interface
142
}
// namespace shared_model
143
144
#endif // IROHA_SHARED_MODEL_TRANSACTION_HPP
shared_model::interface::permissions::Role::kDetachRole
shared_model::interface::permissions::Role::kGetMyAccount
shared_model::interface::permissions::Role::kAddAssetQty
shared_model::interface::permissions::Role::kGetMySignatories
shared_model::interface::permissions::Role::kGetMyTxs
shared_model::interface::permissions::Role::COUNT
shared_model::interface::permissions::Role::kReceive
shared_model::interface::permissions::Grantable
Grantable
Definition:
permissions.hpp:76
shared_model::interface::permissions::Role::kGetDomainAccAst
shared_model::interface::permissions::Role::kGetAllAccDetail
shared_model::interface::permissions::Role::kGetAllTxs
shared_model::interface::permissions::Role::kTransferMyAssets
shared_model::interface::permissions::Role::kGetDomainAccAstTxs
shared_model::interface::PermissionSet
Definition:
permissions.hpp:103
shared_model::interface::permissions::Role::kAppendRole
shared_model::interface::permissions::Role::kReadAssets
shared_model::interface::permissions::Role::kSubtractAssetQty
shared_model::interface::permissions::Role::kGetRoles
shared_model::interface::permissions::Role::kCreateRole
shared_model::interface::PermissionSet::size
static constexpr size_t size()
Definition:
permissions.hpp:112
shared_model::interface::permissions::Role::kGetMyAccAstTxs
shared_model::interface::permissions::Role::kSetMyAccountDetail
shared_model::interface::permissions::Role::kGetDomainAccounts
shared_model::interface::permissions::Role::kSetQuorum
shared_model::interface::permissions::Role::kRoot
shared_model::interface::permissions::Role::kCallEngine
shared_model::interface::permissions::Role
Role
Definition:
permissions.hpp:18
shared_model::interface::permissions::Role::kGetBlocks
shared_model::interface::permissions::Role::kGetAllAccAstTxs
shared_model::interface::permissions::Role::kGrantCallEngineOnMyBehalf
shared_model::interface::permissions::permissionFor
Role permissionFor(Grantable g)
Definition:
permissions.cpp:14
shared_model::interface::permissions::Role::kGetMyEngineReceipts
shared_model::interface::permissions::Role::kRemoveSignatory
shared_model::interface::permissions::Role::kRemovePeer
shared_model::interface::permissions::Role::kGetMyAccDetail
shared_model::interface::permissions::Role::kCreateAsset
shared_model::interface::permissions::Role::kAddPeer
shared_model::interface::permissions::Grantable::kCallEngineOnMyBehalf
shared_model::interface::permissions::Role::kGetDomainSignatories
shared_model::interface::permissions::Role::kGetDomainAccTxs
shared_model::interface::permissions::Role::kGetDomainEngineReceipts
shared_model::interface::permissions::Role::kGetMyAccAst
shared_model::interface::permissions::Role::kGetAllAccTxs
shared_model::interface::permissions::Role::kAddMySignatory
shared_model::interface::permissions::Role::kSubtractDomainAssetQty
shared_model::interface::permissions::Role::kCreateDomain
shared_model::interface::permissions::Role::kGetDomainAccDetail
shared_model::interface::permissions::Role::kGetAllSignatories
shared_model::interface::permissions::Role::kSetDetail
shared_model::interface::permissions::Role::kGetAllEngineReceipts
shared_model::interface::permissions::Role::kGetMyAccTxs
shared_model
Definition:
command_executor.hpp:13
shared_model::interface::permissions::Role::kAddSignatory
shared_model::interface::permissions::Role::kTransfer
shared_model::interface::permissions::Role::kGetAllAccAst
shared_model::interface::permissions::Role::kSetMyQuorum
shared_model::interface::permissions::Role::kGetPeers
shared_model::interface::permissions::Role::kCreateAccount
shared_model::interface::permissions::Role::kAddDomainAssetQty
shared_model::interface::permissions::Role::kRemoveMySignatory
shared_model::interface::permissions::Role::kGetAllAccounts
shared_model::interface::permissions::isValid
bool isValid(Role perm) noexcept
Definition:
permissions.cpp:33
shared_model
interfaces
permissions.hpp
Generated by
1.8.13