SDK  2.1.4 [async]
CloudBackend Software Development Kit - SDK API for C++
Role.h
1 /*
2  Copyright © CloudBackend AB 2020-2023.
3  */
4 
5 #ifndef INCLUDE_CBE_Role_H_
6 #define INCLUDE_CBE_Role_H_
7 
8 #include <string>
9 #include <vector>
10 #include <map>
11 
12 #include "cbe/Types.h"
13 #include "cbe/delegate/AddRoleMemberDelegate.h"
14 #include "cbe/delegate/ListMembersDelegate.h"
15 #include "cbe/delegate/RemoveRoleMemberDelegate.h"
16 #include "cbe/Database.h"
17 
18 #include "cbe/delegate/Error.h"
19 #include "cbe/util/ErrorInfo.h"
20 #include "cbe/util/Exception.h"
21 #include "util/Optional.h"
22 
23 namespace CBI {
24 class Role;
25 using RolePtr = std::shared_ptr<CBI::Role>;
26 } // namespace CBI
27 
28 namespace cbe
29 {
34 class Role {
35 public:
39  std::string name() const;
40 
44  cbe::RoleId id() const;
45 
50 
70 #ifndef CBE_NO_SYNC
74  using ListMembersException = delegate::ListMembersDelegate::Exception;
88  std::vector<cbe::Member> listMembers();
89 
96  using ListMembersError = delegate::ListMembersDelegate::ErrorInfo;
118  ListMembersError& error);
119 #endif // #ifndef CBE_NO_SYNC
120  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
121 
144 #ifndef CBE_NO_SYNC
148  using AddRoleMemberException = delegate::AddRoleMemberDelegate::Exception;
162  MemberId addRoleMember(MemberId memberId);
163 
170  using AddRoleMemberError = delegate::AddRoleMemberDelegate::ErrorInfo;
192  AddRoleMemberError& error);
193 #endif // #ifndef CBE_NO_SYNC
194  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
195 
216 #ifndef CBE_NO_SYNC
220  using RemoveRoleMemberException = delegate::RemoveRoleMemberDelegate::Exception;
235 
242  using RemoveRoleMemberError = delegate::RemoveRoleMemberDelegate::ErrorInfo;
264  RemoveRoleMemberError& error);
265 #endif // #ifndef CBE_NO_SYNC
266  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
267 
277  ~Role();
278 
291  explicit operator bool() const;
292 private:
293  struct Impl;
294  std::shared_ptr<Impl> pImpl{};
295 
296  friend class Group;
297  Role(CBI::RolePtr cbiPeerPtr);
298  CBI::Role& getCbiPeer() const;
299 }; // class Role
300 
301 } // namespace cbe
302 
303 #endif // INCLUDE_CBE_Role_H_
A group of members.
Definition: Group.h:42
User role information.
Definition: Role.h:34
void listMembers(ListMembersDelegatePtr delegate)
Lists the members of this role,.
delegate::AddRoleMemberDelegatePtr AddRoleMemberDelegatePtr
Definition: Role.h:128
cbe::RoleId id() const
void removeRoleMember(MemberId memberId, RemoveRoleMemberDelegatePtr delegate)
Removes a member to this role.
std::string name() const
delegate::RemoveRoleMemberDelegatePtr RemoveRoleMemberDelegatePtr
Definition: Role.h:200
delegate::ListMembersDelegatePtr ListMembersDelegatePtr
Definition: Role.h:56
cbe::GroupId groupId() const
void addRoleMember(MemberId memberId, AddRoleMemberDelegatePtr delegate)
Adds a member to this role.
Role(cbe::DefaultCtor)
Default constructor.
Class template Optional manages an optional contained value - i.e., a value that is either present or...
Definition: Optional.h:20
std::shared_ptr< ListMembersDelegate > ListMembersDelegatePtr
Definition: ListMembersDelegate.h:68
std::shared_ptr< AddRoleMemberDelegate > AddRoleMemberDelegatePtr
Definition: AddRoleMemberDelegate.h:62
std::shared_ptr< RemoveRoleMemberDelegate > RemoveRoleMemberDelegatePtr
Definition: RemoveRoleMemberDelegate.h:62
Root namespace for the CloudBackend SDK API.
Definition: Account.h:22
std::uint64_t RoleId
Uniquely identifies the Role.
Definition: Types.h:108
DefaultCtor
Default constructor marker.
Definition: Types.h:204
std::uint64_t GroupId
Uniquely identifies the Group.
Definition: Types.h:84
std::uint64_t MemberId
Represents the cbe::Group membership id.
Definition: Types.h:92
Definition: AddRoleMemberDelegate.h:38
Definition: ListMembersDelegate.h:44
Definition: RemoveRoleMemberDelegate.h:38