lintel 0.2.0
Loading...
Searching...
No Matches
UserManagementCliComponent.h
Go to the documentation of this file.
1#ifndef LINTEL_USERMANAGEMENTCLICOMPONENT_H
2#define LINTEL_USERMANAGEMENTCLICOMPONENT_H
3
4#include <memory>
5#include <optional>
6#include <string>
7
11
12namespace lintel {
15{
16private:
17 static constexpr std::string_view m_name = "UserManagement";
18 static constexpr std::string_view m_alias = "UserM";
19 static constexpr std::string_view m_description =
20 "This component is responsible for the total user and group management";
21 std::shared_ptr<UserApi> m_userApi;
22
23 enum Commands {
24 Undefined,
25 // group operations
26 AllGroups,
27 AddGroup,
28 RemoveGroup,
29 UpdateGroup,
30 // user operations
31 AllUsers,
32 AddUser,
33 RemoveUser,
34 UpdateUser,
35 ChangePassword,
36 ShowSessions,
37 RevokeSession
38 };
39
40 // Flags
41 /*
42 * Command: AllGroups
43 * GroupName for limiting search result of AllGroups Command
44 * - support regex expressions
45 * - empty implies no flag set
46 * IsVirtualGroup:
47 * -
48 */
49 std::optional<std::string> m_groupName;
50 std::optional<bool> m_isVirtualGroup;
51 /*
52 * Command: AllUsers
53 * Command: AddUser
54 */
55 std::optional<std::string> m_userName;
56 std::optional<std::string> m_firstName;
57 std::optional<std::string> m_lastName;
58 std::optional<std::string> m_eMail;
59 std::optional<std::string> m_password;
60 std::optional<std::string> m_oldPassword;
61 std::optional<std::string> m_newPassword;
62 std::optional<std::string> m_sessionId;
63 std::optional<std::string> m_groupRemoved;
64
66
68 static void printUsers(const std::vector<UserDto> &users);
69
71 static void printSessions(const std::vector<UserSessionDto> &sessions);
72
74 static void printGroups(const std::vector<GroupDto> &groups);
75
77 static std::string printUserGroups(const std::vector<GroupDto> &groups);
78
80 static std::string printSubGroups(const GroupDto &group);
81
82public:
84 explicit UserManagementCliComponent(std::shared_ptr<UserApi> userApi);
85
86 void onCommand(const UserDto &userDto, const std::string &input, const std::vector<std::string> &parameters) override;
87
88 void onHelp() override;
89
90 void onShowMenu() override;
91
92 bool onMenu(const std::string &component) override;
93
94 bool onExit() override;
95
96 void printCommandList(std::set<std::string> menuAlias) override;
97
98 std::vector<std::string> allCommandsOf() override;
99};
100
101}// namespace lintel
102#endif// LINTEL_USERMANAGEMENTCLICOMPONENT_H
Definition CommandLineComponent.h:17
Definition CommandParser.h:21
Definition GroupDto.h:14
Definition UserDto.h:16
Definition UserManagementCliComponent.h:15
UserManagementCliComponent(std::shared_ptr< UserApi > userApi)
void printCommandList(std::set< std::string > menuAlias) override
bool onMenu(const std::string &component) override
void onCommand(const UserDto &userDto, const std::string &input, const std::vector< std::string > &parameters) override
std::vector< std::string > allCommandsOf() override
Definition BaseFeature.h:6
constexpr std::string_view type_name()
Definition TypeName.h:9