Merge pull request #502 from turbo124/master

Api Changes
This commit is contained in:
Hillel Coren 2015-11-03 10:33:56 +02:00
commit fd59d37285
7 changed files with 78 additions and 18 deletions

View File

@ -6,6 +6,7 @@ use Response;
use Input; use Input;
use App\Models\Client; use App\Models\Client;
use App\Models\Account; use App\Models\Account;
use App\Models\AccountToken;
use App\Ninja\Repositories\AccountRepository; use App\Ninja\Repositories\AccountRepository;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use League\Fractal; use League\Fractal;
@ -30,7 +31,7 @@ class AccountApiController extends Controller
} }
if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) { if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) {
return $this->accountRepo->createToken($request->token_name); return $this->processLogin($request);
} else { } else {
return 'Invalid credentials'; return 'Invalid credentials';
} }
@ -50,4 +51,25 @@ class AccountApiController extends Controller
return Response::make($response, 200, $headers); return Response::make($response, 200, $headers);
} }
private function processLogin(Request $request)
{
//Create a new token only if one does not already exist
$this->accountRepo->createToken('ios_api_token');
$manager = new Manager();
$manager->setSerializer(new ArraySerializer());
$account = Auth::user()->account->load('users','tokens');
$resource = new Item($account, new AccountTransformer, 'account');
$response = $manager->createData($resource)->toArray();
$response = json_encode($response, JSON_PRETTY_PRINT);
$headers = Utils::getApiHeaders();
return Response::make($response, 200, $headers);
}
} }

View File

@ -75,6 +75,7 @@ class AuthController extends Controller {
public function postLoginWrapper(Request $request) public function postLoginWrapper(Request $request)
{ {
$userId = Auth::check() ? Auth::user()->id : null; $userId = Auth::check() ? Auth::user()->id : null;
$user = User::where('email', '=', $request->input('email'))->first(); $user = User::where('email', '=', $request->input('email'))->first();
@ -98,6 +99,7 @@ class AuthController extends Controller {
$users = $this->accountRepo->loadAccounts(Auth::user()->id); $users = $this->accountRepo->loadAccounts(Auth::user()->id);
} }
Session::put(SESSION_USER_ACCOUNTS, $users); Session::put(SESSION_USER_ACCOUNTS, $users);
} elseif ($user) { } elseif ($user) {
$user->failed_logins = $user->failed_logins + 1; $user->failed_logins = $user->failed_logins + 1;
$user->save(); $user->save();
@ -106,6 +108,7 @@ class AuthController extends Controller {
return $response; return $response;
} }
public function getLogoutWrapper() public function getLogoutWrapper()
{ {
if (Auth::check() && !Auth::user()->registered) { if (Auth::check() && !Auth::user()->registered) {

View File

@ -41,6 +41,10 @@ class Account extends Eloquent
'invoice_settings' => 'object', 'invoice_settings' => 'object',
]; ];
*/ */
public function tokens()
{
return $this->hasMany('App\Models\AccountToken');
}
public function users() public function users()
{ {

View File

@ -462,7 +462,7 @@ class AccountRepository
$name = trim($name) ?: 'TOKEN'; $name = trim($name) ?: 'TOKEN';
if ($token = AccountToken::scope()->whereName($name)->first()) { if ($token = AccountToken::scope()->whereName($name)->first()) {
return $token->token; return $token;
} }
$token = AccountToken::createNew(); $token = AccountToken::createNew();
@ -470,6 +470,6 @@ class AccountRepository
$token->token = str_random(RANDOM_KEY_LENGTH); $token->token = str_random(RANDOM_KEY_LENGTH);
$token->save(); $token->save();
return $token->token; return $token;
} }
} }

View File

@ -0,0 +1,21 @@
<?php namespace App\Ninja\Transformers;
use App\Models\AccountToken;
use League\Fractal;
use League\Fractal\TransformerAbstract;
class AccountTokenTransformer extends TransformerAbstract
{
public function transform(AccountToken $account_token)
{
return [
'id' => (int) $account_token->id,
'account_id' =>(int) $account_token->account_id,
'user_id' => (int) $account_token->user_id,
'public_id' => (int) $account_token->public_id,
'name' => $account_token->name,
'token' => $account_token->token
];
}
}

View File

@ -1,15 +1,24 @@
<?php namespace App\Ninja\Transformers; <?php namespace App\Ninja\Transformers;
use App\Models\Account; use App\Models\Account;
use App\Models\AccountToken;
use League\Fractal; use League\Fractal;
use League\Fractal\TransformerAbstract; use League\Fractal\TransformerAbstract;
class AccountTransformer extends TransformerAbstract class AccountTransformer extends TransformerAbstract
{ {
protected $defaultIncludes = [ protected $defaultIncludes = [
'users' 'users',
'account_tokens'
]; ];
public function includeAccountTokens($account)
{
$account_token = AccountToken::whereAccountId($account->id)->whereName('ios_api_token')->first();
return $this->Item($account_token, new AccountTokenTransformer);
}
public function includeUsers($account) public function includeUsers($account)
{ {
$users = $account->users; $users = $account->users;

27
composer.lock generated
View File

@ -1,10 +1,11 @@
{ {
"_readme": [ "_readme": [
"This file locks the dependencies of your project to a known state", "This file locks the dependencies of your project to a known state",
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"hash": "d0f3825f6d361f655c7393dd024b676e", "hash": "70ef9e09bca60a19c396c138d8a01d50",
"content-hash": "399b36f7735987d2daf3d182603354b3",
"packages": [ "packages": [
{ {
"name": "alfaproject/omnipay-neteller", "name": "alfaproject/omnipay-neteller",
@ -339,7 +340,7 @@
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Chumper/Datatable/zipball/7fa47cb5469f07c620fb69dee94b8e1a96943ee2", "url": "https://api.github.com/repos/Chumper/Datatable/zipball/b44834db3d4e560d4368c1a04248b9e6a422ccff",
"reference": "7fa47cb", "reference": "7fa47cb",
"shasum": "" "shasum": ""
}, },
@ -351,7 +352,7 @@
}, },
"require-dev": { "require-dev": {
"mockery/mockery": "dev-master", "mockery/mockery": "dev-master",
"orchestra/testbench": "2.1.*", "orchestra/testbench": "3.1.*",
"phpunit/phpunit": "3.7.*" "phpunit/phpunit": "3.7.*"
}, },
"type": "library", "type": "library",
@ -380,7 +381,7 @@
"jquery", "jquery",
"laravel" "laravel"
], ],
"time": "2015-04-20 09:21:21" "time": "2015-10-26 01:21:31"
}, },
{ {
"name": "classpreloader/classpreloader", "name": "classpreloader/classpreloader",
@ -4943,12 +4944,12 @@
"target-dir": "Symfony/Component/Console", "target-dir": "Symfony/Component/Console",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/Console.git", "url": "https://github.com/symfony/console.git",
"reference": "0e5e18ae09d3f5c06367759be940e9ed3f568359" "reference": "0e5e18ae09d3f5c06367759be940e9ed3f568359"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/Console/zipball/0e5e18ae09d3f5c06367759be940e9ed3f568359", "url": "https://api.github.com/repos/symfony/console/zipball/0e5e18ae09d3f5c06367759be940e9ed3f568359",
"reference": "0e5e18ae09d3f5c06367759be940e9ed3f568359", "reference": "0e5e18ae09d3f5c06367759be940e9ed3f568359",
"shasum": "" "shasum": ""
}, },
@ -5001,12 +5002,12 @@
"target-dir": "Symfony/Component/Debug", "target-dir": "Symfony/Component/Debug",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/Debug.git", "url": "https://github.com/symfony/debug.git",
"reference": "fca5696e0c9787722baa8f2ad6940dfd7a6a6941" "reference": "fca5696e0c9787722baa8f2ad6940dfd7a6a6941"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/Debug/zipball/fca5696e0c9787722baa8f2ad6940dfd7a6a6941", "url": "https://api.github.com/repos/symfony/debug/zipball/fca5696e0c9787722baa8f2ad6940dfd7a6a6941",
"reference": "fca5696e0c9787722baa8f2ad6940dfd7a6a6941", "reference": "fca5696e0c9787722baa8f2ad6940dfd7a6a6941",
"shasum": "" "shasum": ""
}, },
@ -5215,12 +5216,12 @@
"target-dir": "Symfony/Component/HttpFoundation", "target-dir": "Symfony/Component/HttpFoundation",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/HttpFoundation.git", "url": "https://github.com/symfony/http-foundation.git",
"reference": "e8fd1b73ac1c3de1f76c73801ddf1a8ecb1c1c9c" "reference": "e8fd1b73ac1c3de1f76c73801ddf1a8ecb1c1c9c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/e8fd1b73ac1c3de1f76c73801ddf1a8ecb1c1c9c", "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e8fd1b73ac1c3de1f76c73801ddf1a8ecb1c1c9c",
"reference": "e8fd1b73ac1c3de1f76c73801ddf1a8ecb1c1c9c", "reference": "e8fd1b73ac1c3de1f76c73801ddf1a8ecb1c1c9c",
"shasum": "" "shasum": ""
}, },
@ -5269,12 +5270,12 @@
"target-dir": "Symfony/Component/HttpKernel", "target-dir": "Symfony/Component/HttpKernel",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/HttpKernel.git", "url": "https://github.com/symfony/http-kernel.git",
"reference": "a3f0ed713255c0400a2db38b3ed01989ef4b7322" "reference": "a3f0ed713255c0400a2db38b3ed01989ef4b7322"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/HttpKernel/zipball/a3f0ed713255c0400a2db38b3ed01989ef4b7322", "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a3f0ed713255c0400a2db38b3ed01989ef4b7322",
"reference": "a3f0ed713255c0400a2db38b3ed01989ef4b7322", "reference": "a3f0ed713255c0400a2db38b3ed01989ef4b7322",
"shasum": "" "shasum": ""
}, },