summaryrefslogtreecommitdiff
path: root/server-tools/instance-manager/user_map.h
diff options
context:
space:
mode:
Diffstat (limited to 'server-tools/instance-manager/user_map.h')
-rw-r--r--server-tools/instance-manager/user_map.h63
1 files changed, 60 insertions, 3 deletions
diff --git a/server-tools/instance-manager/user_map.h b/server-tools/instance-manager/user_map.h
index 73c4912debf..0f4c531bb7d 100644
--- a/server-tools/instance-manager/user_map.h
+++ b/server-tools/instance-manager/user_map.h
@@ -17,14 +17,35 @@
#include <my_global.h>
-
#include <my_sys.h>
+#include <mysql_com.h>
+#include <m_string.h>
#include <hash.h>
#if defined(__GNUC__) && defined(USE_PRAGMA_INTERFACE)
#pragma interface
#endif
+struct User
+{
+ User()
+ {}
+
+ User(const LEX_STRING *user_name_arg, const char *password);
+
+ int init(const char *line);
+
+ inline void set_password(const char *password)
+ {
+ make_scrambled_password(scrambled_password, password);
+ }
+
+ char user[USERNAME_LENGTH + 1];
+ char scrambled_password[SCRAMBLED_PASSWORD_CHAR_LENGTH + 1];
+ uint8 user_length;
+ uint8 salt[SCRAMBLE_LENGTH];
+};
+
/*
User_map -- all users and passwords
*/
@@ -32,15 +53,51 @@
class User_map
{
public:
+ /* User_map iterator */
+
+ class Iterator
+ {
+ public:
+ Iterator(User_map *user_map_arg) :
+ user_map(user_map_arg), cur_idx(0)
+ { }
+
+ public:
+ void reset();
+
+ User *next();
+
+ private:
+ User_map *user_map;
+ uint cur_idx;
+ };
+
+public:
+ User_map();
~User_map();
int init();
- int load(const char *password_file_name);
- int authenticate(const char *user_name, uint length,
+ int load(const char *password_file_name, const char **err_msg);
+ int save(const char *password_file_name, const char **err_msg);
+ int authenticate(const LEX_STRING *user_name,
const char *scrambled_password,
const char *scramble) const;
+
+ const User *find_user(const LEX_STRING *user_name) const;
+ User *find_user(const LEX_STRING *user_name);
+
+ bool add_user(User *user);
+ bool remove_user(User *user);
+
+private:
+ User_map(const User_map &);
+ User_map &operator =(const User_map &);
+
private:
HASH hash;
+ bool initialized;
+
+ friend class Iterator;
};
#endif // INCLUDES_MYSQL_INSTANCE_MANAGER_USER_MAP_H