From 19fcec84d8d7d21e796c7624e521b60d28ee21ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:45:59 +0200 Subject: Adding upstream version 16.2.11+ds. Signed-off-by: Daniel Baumann --- src/rgw/rgw_admin_user.cc | 91 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/rgw/rgw_admin_user.cc (limited to 'src/rgw/rgw_admin_user.cc') diff --git a/src/rgw/rgw_admin_user.cc b/src/rgw/rgw_admin_user.cc new file mode 100644 index 000000000..cccc068c2 --- /dev/null +++ b/src/rgw/rgw_admin_user.cc @@ -0,0 +1,91 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab ft=cpp + +#include "include/rgw/librgw_admin_user.h" +#include "rgw_admin_user.h" +#include "rgw_user.h" +#include "common/errno.h" + +#define dout_context g_ceph_context +#define dout_subsys ceph_subsys_rgw + +using namespace rgw; + +namespace rgw { + + extern RGWLibAdmin rgw_lib_admin; + +} + +extern "C" { + + int rgw_admin_create_user(librgw_admin_user_t librgw_admin_user, const char *uid, + const char *display_name, const char *access_key, const char* secret_key, + const char *email, const char *caps, + const char *access, bool admin, bool system) + { + RGWUserAdminOpState user_op; + rgw_user user_id; + user_id.from_str(uid); + user_op.set_user_id(user_id); + user_op.set_display_name(display_name); + user_op.user_email = email; + user_op.user_email_specified=true; + user_op.set_access_key(access_key); + user_op.set_secret_key(secret_key); + user_op.set_caps(caps); + if (access) { + uint32_t perm_mask = rgw_str_to_perm(access); + user_op.set_perm(perm_mask); + } + user_op.set_admin(admin); + user_op.set_system(system); + + RGWUser user; + int ret = 0; + ret = user.init(rgw_lib_admin.get_store(), user_op); + if (ret < 0) { + cerr << "user.init failed: " << cpp_strerror(-ret) << std::endl; + return -ret; + } + + std::string err_msg; + ret = user.add(user_op, &err_msg); + if (ret < 0) { + cerr << "could not create user: " << err_msg << std::endl; + if (ret == -ERR_INVALID_TENANT_NAME) + ret = -EINVAL; + + return -ret; + } + + return 0; + } + + int rgw_admin_user_info(librgw_admin_user_t librgw_admin_user, const char *uid, rgw_user_info* user_info) + { + RGWUserAdminOpState user_op; + rgw_user user_id; + user_id.from_str(uid); + user_op.set_user_id(user_id); + + RGWUser user; + int ret = 0; + ret = user.init(rgw_lib_admin.get_store(), user_op); + if (ret < 0) { + cerr << "user.init failed: " << cpp_strerror(-ret) << std::endl; + return -ret; + } + + std::string err_msg; + RGWUserInfo info; + ret = user.info(info, &err_msg); + if (ret < 0) { + cerr << "could not fetch user info: " << err_msg << std::endl; + return -ret; + } + + return 0; + } + +} -- cgit v1.2.3