blob: 1c0c87fd083a2473b53ac7595fd9afc27c8dbbe2 [file] [log] [blame]
Ratan Guptafd761da2019-04-12 21:48:57 +05301#pragma once
2
3#include <sdbusplus/bus.hpp>
4#include <sdbusplus/server/object.hpp>
Ratan Guptafd761da2019-04-12 21:48:57 +05305#include <xyz/openbmc_project/Object/Delete/server.hpp>
Patrick Williams9638afb2021-02-22 17:16:24 -06006#include <xyz/openbmc_project/User/PrivilegeMapperEntry/server.hpp>
Ratan Guptafd761da2019-04-12 21:48:57 +05307
8namespace phosphor
9{
Ratan Gupta7b04c352019-04-12 21:46:29 +053010namespace ldap
Ratan Guptafd761da2019-04-12 21:48:57 +053011{
12
13namespace Base = sdbusplus::xyz::openbmc_project;
14using Entry =
15 sdbusplus::xyz::openbmc_project::User::server::PrivilegeMapperEntry;
16using Delete = sdbusplus::xyz::openbmc_project::Object::server::Delete;
Patrick Williamsb3ef4e12022-07-22 19:26:55 -050017using Interfaces = sdbusplus::server::object_t<Entry, Delete>;
Ratan Guptafd761da2019-04-12 21:48:57 +053018
Ratan Gupta7b04c352019-04-12 21:46:29 +053019// Forward declaration for Config
20class Config;
Ratan Guptafd761da2019-04-12 21:48:57 +053021
22using Id = size_t;
23
24/** @class LDAPMapperEntry
25 *
26 * @brief This D-Bus object represents the privilege level for the LDAP group.
27 */
Ratan Gupta7b04c352019-04-12 21:46:29 +053028class LDAPMapperEntry : public Interfaces
Ratan Guptafd761da2019-04-12 21:48:57 +053029{
30 public:
31 LDAPMapperEntry() = delete;
32 ~LDAPMapperEntry() = default;
Patrick Williams9638afb2021-02-22 17:16:24 -060033 LDAPMapperEntry(const LDAPMapperEntry&) = delete;
34 LDAPMapperEntry& operator=(const LDAPMapperEntry&) = delete;
35 LDAPMapperEntry(LDAPMapperEntry&&) = default;
36 LDAPMapperEntry& operator=(LDAPMapperEntry&&) = default;
Ratan Guptafd761da2019-04-12 21:48:57 +053037
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 */
Patrick Williamsb3ef4e12022-07-22 19:26:55 -050047 LDAPMapperEntry(sdbusplus::bus_t& bus, const char* path,
Patrick Williams9638afb2021-02-22 17:16:24 -060048 const char* filePath, const std::string& groupName,
49 const std::string& privilege, Config& parent);
Ratan Guptafd761da2019-04-12 21:48:57 +053050
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 */
Patrick Williamsb3ef4e12022-07-22 19:26:55 -050058 LDAPMapperEntry(sdbusplus::bus_t& bus, const char* path,
Patrick Williams9638afb2021-02-22 17:16:24 -060059 const char* filePath, Config& parent);
Ratan Guptafd761da2019-04-12 21:48:57 +053060
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;
Patrick Williams9638afb2021-02-22 17:16:24 -060091 Config& manager;
Ratan Guptafd761da2019-04-12 21:48:57 +053092
93 /** @brief serialization directory path */
94 std::string persistPath;
95};
96
Ratan Gupta7b04c352019-04-12 21:46:29 +053097} // namespace ldap
Ratan Guptafd761da2019-04-12 21:48:57 +053098} // namespace phosphor