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:
2026-04-08 11:47:00 +05:30
parent a955b64462
commit 4d4974efd7
@@ -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;
} }