From 45e32c4e5043c3783f750946ae0fb4233009ca5e Mon Sep 17 00:00:00 2001 From: Marcin Kurczewski Date: Sat, 30 Aug 2014 23:17:54 +0200 Subject: [PATCH] Implemented InputReader --- src/Controllers/AuthController.php | 16 +++++++++++++--- src/Helpers/InputReader.php | 9 +++++++++ src/Services/AuthService.php | 2 +- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/Controllers/AuthController.php b/src/Controllers/AuthController.php index ad7acfe9..ec76f6b8 100644 --- a/src/Controllers/AuthController.php +++ b/src/Controllers/AuthController.php @@ -13,13 +13,23 @@ final class AuthController extends AbstractController public function registerRoutes(\Szurubooru\Router $router) { $router->post('/api/login', [$this, 'login']); - $router->get('/api/login', [$this, 'login']); + $router->put('/api/login', [$this, 'login']); } public function login() { $input = new \Szurubooru\Helpers\InputReader(); - $this->authService->loginFromCredentials($input->userName, $input->password); - return $this->authService->getLoginToken(); + + if ($input->userName and $input->password) + $this->authService->loginFromCredentials($input->userName, $input->password); + elseif ($input->token) + $this->authService->loginFromToken($input->token); + else + throw new \Szurubooru\MissingArgumentException(); + + return [ + 'token' => $this->authService->getLoginToken(), + 'user' => $this->authService->getLoggedInUser() + ]; } } diff --git a/src/Helpers/InputReader.php b/src/Helpers/InputReader.php index 2626a58f..43f616f2 100644 --- a/src/Helpers/InputReader.php +++ b/src/Helpers/InputReader.php @@ -5,6 +5,15 @@ final class InputReader { public function __construct() { + $_PUT = []; + if ($_SERVER['REQUEST_METHOD'] == 'PUT') + parse_str(file_get_contents('php://input'), $_PUT); + + foreach ([$_GET, $_POST, $_PUT] as $source) + { + foreach ($source as $key => $value) + $this->$key = $value; + } } public function __get($key) diff --git a/src/Services/AuthService.php b/src/Services/AuthService.php index 6d77edd4..2424261b 100644 --- a/src/Services/AuthService.php +++ b/src/Services/AuthService.php @@ -55,7 +55,7 @@ final class AuthService { $loginToken = $this->tokenDao->getByName($loginTokenName); if (!$loginToken) - throw new \Exception('Error while logging in (invalid token.)'); + throw new \Exception('Invalid login token.'); $this->loginToken = $loginToken; $this->loggedInUser = $this->userDao->getById($loginToken->additionalData);