#pragma once

#include <shadow.h>
#include <stdio.h>

#include <phosphor-logging/elog-errors.hpp>
#include <phosphor-logging/elog.hpp>
#include <phosphor-logging/log.hpp>
#include <xyz/openbmc_project/Common/error.hpp>

#include <cassert>
namespace phosphor
{
namespace user
{
namespace shadow
{

using InternalFailure =
    sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
using namespace phosphor::logging;

/** @class Lock
 *  @brief Responsible for locking and unlocking /etc/shadow
 */
class Lock
{
  public:
    Lock(const Lock&) = delete;
    Lock& operator=(const Lock&) = delete;
    Lock(Lock&&) = delete;
    Lock& operator=(Lock&&) = delete;

    /** @brief Default constructor that just locks the shadow file */
    Lock()
    {
        if (!lckpwdf())
        {
            log<level::ERR>("Locking Shadow failed");
            elog<InternalFailure>();
        }
    }
    ~Lock()
    {
        if (!ulckpwdf())
        {
            log<level::ERR>("Un-Locking Shadow failed");
            elog<InternalFailure>();
        }
    }
};

} // namespace shadow
} // namespace user
} // namespace phosphor
