Merge pull request #722 from turbo124/api_errors

Improve error handling in API
This commit is contained in:
David Bomba 2016-02-16 10:28:31 +11:00
commit cacc24ede4
3 changed files with 12 additions and 5 deletions

View File

@ -36,14 +36,14 @@ class AccountApiController extends BaseAPIController
{ {
if ( ! env(API_SECRET) || $request->api_secret !== env(API_SECRET)) { if ( ! env(API_SECRET) || $request->api_secret !== env(API_SECRET)) {
sleep(ERROR_DELAY); sleep(ERROR_DELAY);
return 'Invalid secret'; return $this->errorResponse(['message'=>'Invalid secret'],401);
} }
if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) { if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) {
return $this->processLogin($request); return $this->processLogin($request);
} else { } else {
sleep(ERROR_DELAY); sleep(ERROR_DELAY);
return 'Invalid credentials'; return $this->errorResponse(['message'=>'Invalid credentials'],401);
} }
} }

View File

@ -107,13 +107,13 @@ class BaseAPIController extends Controller
return Response::make($response, 200, $headers); return Response::make($response, 200, $headers);
} }
protected function errorResponse($response) protected function errorResponse($response, $httpErrorCode = 400)
{ {
$error['error'] = $response; $error['error'] = $response;
$error = json_encode($error, JSON_PRETTY_PRINT); $error = json_encode($error, JSON_PRETTY_PRINT);
$headers = Utils::getApiHeaders(); $headers = Utils::getApiHeaders();
return Response::make($error, 400, $headers); return Response::make($error, $httpErrorCode, $headers);
} }

View File

@ -1,5 +1,6 @@
<?php namespace App\Http\Controllers; <?php namespace App\Http\Controllers;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Utils; use Utils;
use Response; use Response;
use Input; use Input;
@ -134,7 +135,13 @@ class ClientApiController extends BaseAPIController
public function update(UpdateClientRequest $request, $publicId) public function update(UpdateClientRequest $request, $publicId)
{ {
if ($request->action == ACTION_ARCHIVE) { if ($request->action == ACTION_ARCHIVE) {
try {
$client = Client::scope($publicId)->firstOrFail(); $client = Client::scope($publicId)->firstOrFail();
} catch (ModelNotFoundException $e) {
return $this->errorResponse(['message'=>'Record not found'], 400);
}
$this->clientRepo->archive($client); $this->clientRepo->archive($client);
$transformer = new ClientTransformer(Auth::user()->account, Input::get('serializer')); $transformer = new ClientTransformer(Auth::user()->account, Input::get('serializer'));