I have a long switch statement and it would be great if someone know how to make it cleaner.
Code is available on Github: https://github.com/Rabbit-Company/Passky-Server/blob/main/php/index.php
And for those who don't want to visit Github here is the code:
switch($_GET['action']){
case "getInfo":
if(Database::userSentToManyRequests('getInfo')){
echo Display::json(429);
return;
}
echo Database::getInfo();
break;
case "getToken":
if(Database::userSentToManyRequests('getToken')){
echo Display::json(429);
return;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || !isset($_POST['otp'])){
echo Display::json(403);
return;
}
echo Database::getToken($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $_POST['otp']);
break;
case "createAccount":
if(Database::userSentToManyRequests('createAccount')){
echo Display::json(429);
return;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || !isset($_POST['email'])){
echo Display::json(403);
return;
}
echo Database::createAccount($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $_POST['email']);
break;
case "getPasswords":
if(Database::userSentToManyRequests('getPasswords')){
echo Display::json(429);
return;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])){
echo Display::json(403);
return;
}
echo Database::getPasswords($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
break;
case "savePassword":
if(Database::userSentToManyRequests('savePassword')){
echo Display::json(429);
return;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || !isset($_POST['website']) || !isset($_POST['username']) || !isset($_POST['password']) || !isset($_POST['message'])){
echo Display::json(403);
return;
}
echo Database::savePassword($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $_POST['website'], $_POST['username'], $_POST['password'], $_POST['message']);
break;
case "importPasswords":
if(Database::userSentToManyRequests('importPasswords')){
echo Display::json(429);
return;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || file_get_contents('php://input') == null){
echo Display::json(403);
return;
}
echo Database::importPasswords($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], file_get_contents('php://input'));
break;
case "editPassword":
if(Database::userSentToManyRequests('editPassword')){
echo Display::json(429);
return;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || !isset($_POST['password_id']) || !isset($_POST['website']) || !isset($_POST['username']) || !isset($_POST['password']) || !isset($_POST['message'])){
echo Display::json(403);
return;
}
echo Database::editPassword($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $_POST['password_id'], $_POST['website'], $_POST['username'], $_POST['password'], $_POST['message']);
break;
case "deletePassword":
if(Database::userSentToManyRequests('deletePassword')){
echo Display::json(429);
return;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || !isset($_POST['password_id'])){
echo Display::json(403);
return;
}
echo Database::deletePassword($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $_POST['password_id']);
break;
case "deleteAccount":
if(Database::userSentToManyRequests('deleteAccount')){
echo Display::json(429);
return;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])){
echo Display::json(403);
return;
}
echo Database::deleteAccount($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
break;
case "forgotUsername":
if(Database::userSentToManyRequests('forgotUsername')){
echo Display::json(429);
return;
}
if(!isset($_POST['email'])){
echo Display::json(403);
return;
}
echo Database::forgotUsername($_POST['email']);
break;
case "enable2fa":
if(Database::userSentToManyRequests('enable2fa')){
echo Display::json(429);
return;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])){
echo Display::json(403);
return;
}
echo Database::enable2Fa($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
break;
case "disable2fa":
if(Database::userSentToManyRequests('disable2fa')){
echo Display::json(429);
return;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])){
echo Display::json(403);
return;
}
echo Database::disable2Fa($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
break;
case "addYubiKey":
if(Database::userSentToManyRequests('addYubiKey')){
echo Display::json(429);
return;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || !isset($_POST['id'])){
echo Display::json(403);
return;
}
echo Database::addYubiKey($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $_POST['id']);
break;
case "removeYubiKey":
if(Database::userSentToManyRequests('removeYubiKey')){
echo Display::json(429);
return;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || !isset($_POST['id'])){
echo Display::json(403);
return;
}
echo Database::removeYubiKey($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $_POST['id']);
break;
default:
echo Display::json(401);
break;
}
As you can see in every switch statement function userSentToManyRequests appear in every case in a switch with the same error code, but different parameter. This is easy fixable with another function. But how would I shorten the rest (Check if all parameters in POST was supplied for each action and to provide them in the right function)