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