/* // Copyright (c) 2018 Intel Corporation // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. */ #pragma once #include #include #include #include namespace phosphor { namespace user { namespace Base = sdbusplus::xyz::openbmc_project; using UsersIface = Base::User::server::Attributes; using DeleteIface = Base::Object::server::Delete; using Interfaces = sdbusplus::server::object_t; // Place where all user objects has to be created constexpr auto usersObjPath = "/xyz/openbmc_project/user"; class UserMgr; // Forward declaration for UserMgr. /** @class Users * @brief Lists User objects and it's properties */ class Users : public Interfaces { public: Users() = delete; ~Users() = default; Users(const Users&) = delete; Users& operator=(const Users&) = delete; Users(Users&&) = delete; Users& operator=(Users&&) = delete; /** @brief Constructs UserMgr object. * * @param[in] bus - sdbusplus handler * @param[in] path - D-Bus path * @param[in] groups - users group list * @param[in] priv - users privilege * @param[in] enabled - user enabled state * @param[in] parent - user manager - parent object */ Users(sdbusplus::bus_t& bus, const char* path, std::vector groups, std::string priv, bool enabled, UserMgr& parent); /** @brief delete user method. * This method deletes the user as requested * */ void delete_(void) override; /** @brief update user privilege * * @param[in] value - User privilege */ std::string userPrivilege(std::string value) override; void setUserPrivilege(const std::string& value); void setUserGroups(const std::vector& groups); /** @brief lists user privilege * */ std::string userPrivilege(void) const override; /** @brief update user groups * * @param[in] value - User groups */ std::vector userGroups(std::vector value) override; /** @brief list user groups * */ std::vector userGroups(void) const override; /** @brief lists user enabled state * */ bool userEnabled(void) const override; void setUserEnabled(bool value); /** @brief update user enabled state * * @param[in] value - bool value */ bool userEnabled(bool value) override; /** @brief lists user locked state for failed attempt * **/ bool userLockedForFailedAttempt(void) const override; /** @brief unlock user locked state for failed attempt * * @param[in]: value - false - unlock user account, true - no action taken **/ bool userLockedForFailedAttempt(bool value) override; /** @brief indicates if the user's password is expired * **/ bool userPasswordExpired(void) const override; private: std::string userName; UserMgr& manager; }; } // namespace user } // namespace phosphor