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