Protect Admin account from deactivation
<UserStory> EMP002 : Deactivate Employee </UserStory> <Changes> - Ensure admin account cannot be deactivated </Changes> <Review> Smitha Mohan </Review>
This commit is contained in:
@@ -98,13 +98,18 @@ void EmployeeManagementService::createEmployee(Enums::EmployeeType employeeType,
|
|||||||
|
|
||||||
bool EmployeeManagementService::deactivateEmployee(const std::string& id)
|
bool EmployeeManagementService::deactivateEmployee(const std::string& id)
|
||||||
{
|
{
|
||||||
util::enforceAuthorization(m_dataStore.getAuthenticatedEmployee()->getEmployeeType(), Enums::EmployeeType::ADMIN, Enums::EmployeeType::HR);
|
auto& authenticatedEmployee = m_dataStore.getAuthenticatedEmployee();
|
||||||
|
util::enforceAuthorization(authenticatedEmployee->getEmployeeType(), Enums::EmployeeType::ADMIN, Enums::EmployeeType::HR);
|
||||||
auto& employee = m_dataStore.getEmployees();
|
auto& employee = m_dataStore.getEmployees();
|
||||||
auto iterator = employee.find(id);
|
auto iterator = employee.find(id);
|
||||||
if (iterator == employee.end())
|
if (iterator == employee.end())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (iterator->second->getEmployeeType() == Enums::EmployeeType::ADMIN)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Cannot deactivate Admin Account");
|
||||||
|
}
|
||||||
iterator->second->setEmployeeAccountStatus(Enums::AccountStatus::INACTIVE);
|
iterator->second->setEmployeeAccountStatus(Enums::AccountStatus::INACTIVE);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user