1 #pragma once
2 
3 #include <sdbusplus/bus.hpp>
4 #include <sdbusplus/server/object.hpp>
5 #include <xyz/openbmc_project/Object/Delete/server.hpp>
6 #include <xyz/openbmc_project/User/PrivilegeMapperEntry/server.hpp>
7 
8 namespace phosphor
9 {
10 namespace ldap
11 {
12 
13 namespace Base = sdbusplus::xyz::openbmc_project;
14 using Entry =
15     sdbusplus::xyz::openbmc_project::User::server::PrivilegeMapperEntry;
16 using Delete = sdbusplus::xyz::openbmc_project::Object::server::Delete;
17 using Interfaces = sdbusplus::server::object_t<Entry, Delete>;
18 
19 // Forward declaration for Config
20 class Config;
21 
22 using Id = size_t;
23 
24 /** @class LDAPMapperEntry
25  *
26  *  @brief This D-Bus object represents the privilege level for the LDAP group.
27  */
28 class LDAPMapperEntry : public Interfaces
29 {
30   public:
31     LDAPMapperEntry() = delete;
32     ~LDAPMapperEntry() = default;
33     LDAPMapperEntry(const LDAPMapperEntry&) = delete;
34     LDAPMapperEntry& operator=(const LDAPMapperEntry&) = delete;
35     LDAPMapperEntry(LDAPMapperEntry&&) = delete;
36     LDAPMapperEntry& operator=(LDAPMapperEntry&&) = delete;
37 
38     /** @brief Constructs LDAP privilege mapper entry object.
39      *
40      *  @param[in] bus  - sdbusplus handler
41      *  @param[in] path - D-Bus path
42      *  @param[in] filePath - serialization directory path
43      *  @param[in] groupName - LDAP group name
44      *  @param[in] privilege - the privilege for the group
45      *  @param[in] parent - LDAP privilege mapper manager
46      */
47     LDAPMapperEntry(sdbusplus::bus_t& bus, const char* path,
48                     const char* filePath, const std::string& groupName,
49                     const std::string& privilege, Config& parent);
50 
51     /** @brief Constructs LDAP privilege mapper entry object
52      *
53      *  @param[in] bus  - sdbusplus handler
54      *  @param[in] path - D-Bus path
55      *  @param[in] filePath - serialization directory path
56      *  @param[in] parent - LDAP privilege mapper manager
57      */
58     LDAPMapperEntry(sdbusplus::bus_t& bus, const char* path,
59                     const char* filePath, Config& parent);
60 
61     /** @brief Delete privilege mapper entry object
62      *
63      *  This method deletes the privilege mapper entry.
64      */
65     void delete_(void) override;
66 
67     /** @brief Update the group name of the mapper object
68      *
69      *  @param[in] value - group name
70      *
71      *  @return On success the updated group name
72      */
73     std::string groupName(std::string value) override;
74 
75     /** @brief Update privilege associated with LDAP group
76      *
77      *  @param[in] value - privilege level
78      *
79      *  @return On success the updated privilege level
80      */
81     std::string privilege(std::string value) override;
82 
83     using sdbusplus::xyz::openbmc_project::User::server::PrivilegeMapperEntry::
84         privilege;
85 
86     using sdbusplus::xyz::openbmc_project::User::server::PrivilegeMapperEntry::
87         groupName;
88 
89   private:
90     Id id;
91     Config& manager;
92 
93     /** @brief serialization directory path */
94     std::string persistPath;
95 };
96 
97 } // namespace ldap
98 } // namespace phosphor
99