From 4d4974efd718bb2703d3de0e4b3e0c02d44cd929 Mon Sep 17 00:00:00 2001 From: Joel Thomas Date: Wed, 8 Apr 2026 11:47:00 +0530 Subject: [PATCH] Protect Admin account from deactivation EMP002 : Deactivate Employee - Ensure admin account cannot be deactivated Smitha Mohan --- .../Trenser.Zenvy/services/EmployeeManagementService.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp index fdd0c0b..29ef5b5 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp @@ -98,13 +98,18 @@ void EmployeeManagementService::createEmployee(Enums::EmployeeType employeeType, 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 iterator = employee.find(id); if (iterator == employee.end()) { return false; } + if (iterator->second->getEmployeeType() == Enums::EmployeeType::ADMIN) + { + throw std::runtime_error("Cannot deactivate Admin Account"); + } iterator->second->setEmployeeAccountStatus(Enums::AccountStatus::INACTIVE); return true; }