6 #ifndef CM_AUTHORIZATION_H
7 #define CM_AUTHORIZATION_H
9 #include "cm_rpcprocessor.h"
11 #include "motorcortex.pb.h"
12 #include "motorcortex_hash.h"
34 void init(uint32_t system_param_hash);
38 [[nodiscard]] MsgHashSet getHashList()
const override;
40 virtual bool initLogin(
const char* filename);
42 virtual motorcortex_StatusCode logout(uint32_t client_id);
44 bool noAccessMsg(
ReplyMsg& reply)
const;
54 static bool generateToken(
char* token, uint32_t length);
63 bool has_token_{
false};
69 enum class LoginRequest {
81 parameter_server::UserGroup group;
83 using SystemLoginList = std::map<std::string, LoginData>;
92 bool initLogin(
const char* filename)
override;
96 motorcortex_StatusCode logout(uint32_t client_id)
override;
102 static parameter_server::UserGroup getUserLevel(
const char* login_msg);
104 static parameter_server::UserGroup checkUserLevel(
int level);
112 static bool checkLogin(
const SystemLoginList& system_login,
const motorcortex_LoginMsg& login_msg);
114 std::map<uint32_t, parameter_server::UserGroup> logged_in_users_;
115 std::mutex login_users_mutex_;
116 std::set<uint32_t> users_in_control_;
117 std::mutex users_in_control_mutex_;
118 const uint32_t max_number_operators_in_control_;
120 SystemLoginList login_list_;