Copying the files from the mapper to the config
It was needed as in the next commit we would be
generating the ldap priv mapping object under the
ldap config object.
This is to align with the redfish.
https://redfish.dmtf.org/schemas/AccountService.v1_4_0.json
As per redfish, Each config will have it's own
"RemoteRoleMapping".
TestedBy: Unit-tested
All existing test cases gets passed.
Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com>
Change-Id: Ibec2c0b809ce15e71bd3ed84a2d0efdad24f1d17
diff --git a/phosphor-ldap-config/ldap_mapper_entry.hpp b/phosphor-ldap-config/ldap_mapper_entry.hpp
new file mode 100644
index 0000000..dea85c2
--- /dev/null
+++ b/phosphor-ldap-config/ldap_mapper_entry.hpp
@@ -0,0 +1,98 @@
+#pragma once
+
+#include <sdbusplus/bus.hpp>
+#include <sdbusplus/server/object.hpp>
+#include <xyz/openbmc_project/User/PrivilegeMapperEntry/server.hpp>
+#include <xyz/openbmc_project/Object/Delete/server.hpp>
+
+namespace phosphor
+{
+namespace user
+{
+
+namespace Base = sdbusplus::xyz::openbmc_project;
+using Entry =
+ sdbusplus::xyz::openbmc_project::User::server::PrivilegeMapperEntry;
+using Delete = sdbusplus::xyz::openbmc_project::Object::server::Delete;
+using Ifaces = sdbusplus::server::object::object<Entry, Delete>;
+
+// Forward declaration for LDAPMapperMgr
+class LDAPMapperMgr;
+
+using Id = size_t;
+
+/** @class LDAPMapperEntry
+ *
+ * @brief This D-Bus object represents the privilege level for the LDAP group.
+ */
+class LDAPMapperEntry : public Ifaces
+{
+ public:
+ LDAPMapperEntry() = delete;
+ ~LDAPMapperEntry() = default;
+ LDAPMapperEntry(const LDAPMapperEntry &) = delete;
+ LDAPMapperEntry &operator=(const LDAPMapperEntry &) = delete;
+ LDAPMapperEntry(LDAPMapperEntry &&) = default;
+ LDAPMapperEntry &operator=(LDAPMapperEntry &&) = default;
+
+ /** @brief Constructs LDAP privilege mapper entry object.
+ *
+ * @param[in] bus - sdbusplus handler
+ * @param[in] path - D-Bus path
+ * @param[in] filePath - serialization directory path
+ * @param[in] groupName - LDAP group name
+ * @param[in] privilege - the privilege for the group
+ * @param[in] parent - LDAP privilege mapper manager
+ */
+ LDAPMapperEntry(sdbusplus::bus::bus &bus, const char *path,
+ const char *filePath, const std::string &groupName,
+ const std::string &privilege, LDAPMapperMgr &parent);
+
+ /** @brief Constructs LDAP privilege mapper entry object
+ *
+ * @param[in] bus - sdbusplus handler
+ * @param[in] path - D-Bus path
+ * @param[in] filePath - serialization directory path
+ * @param[in] parent - LDAP privilege mapper manager
+ */
+ LDAPMapperEntry(sdbusplus::bus::bus &bus, const char *path,
+ const char *filePath, LDAPMapperMgr &parent);
+
+ /** @brief Delete privilege mapper entry object
+ *
+ * This method deletes the privilege mapper entry.
+ */
+ void delete_(void) override;
+
+ /** @brief Update the group name of the mapper object
+ *
+ * @param[in] value - group name
+ *
+ * @return On success the updated group name
+ */
+ std::string groupName(std::string value) override;
+
+ /** @brief Update privilege associated with LDAP group
+ *
+ * @param[in] value - privilege level
+ *
+ * @return On success the updated privilege level
+ */
+ std::string privilege(std::string value) override;
+
+ using sdbusplus::xyz::openbmc_project::User::server::PrivilegeMapperEntry::
+ privilege;
+
+ using sdbusplus::xyz::openbmc_project::User::server::PrivilegeMapperEntry::
+ groupName;
+
+ private:
+ Id id;
+ LDAPMapperMgr &manager;
+
+ /** @brief serialization directory path */
+ std::string persistPath;
+};
+
+} // namespace user
+} // namespace phosphor