diff --git a/lib/Froxlor/Api/Commands/Admins.php b/lib/Froxlor/Api/Commands/Admins.php index 6c1a653b..426b1f82 100644 --- a/lib/Froxlor/Api/Commands/Admins.php +++ b/lib/Froxlor/Api/Commands/Admins.php @@ -713,6 +713,10 @@ class Admins extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt if ($id == $this->getUserDetail('adminid')) { \Froxlor\UI\Response::standard_error('youcantdeleteyourself', '', true); } + // can't delete the first superadmin + if ($id == 1) { + \Froxlor\UI\Response::standard_error('cannotdeletesuperadmin', '', true); + } // delete admin $del_stmt = Database::prepare(" diff --git a/tests/Admins/AdminsTest.php b/tests/Admins/AdminsTest.php index 635f3574..52d5b6a9 100644 --- a/tests/Admins/AdminsTest.php +++ b/tests/Admins/AdminsTest.php @@ -355,4 +355,16 @@ class AdminsTest extends TestCase 'loginname' => 'admin' ))->update(); } + + public function testAdminsAdminsCannotDeleteFirstAdmin() + { + global $admin_userdata; + $testadmin_userdata = $admin_userdata; + $testadmin_userdata['adminid'] = 10; + + $this->expectExceptionMessage("The first admin cannot be deleted."); + Admins::getLocal($testadmin_userdata, array( + 'loginname' => 'admin' + ))->delete(); + } }