mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-23 20:00:33 -04:00
commit
fd59d37285
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -41,7 +41,11 @@ 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()
|
||||||
{
|
{
|
||||||
return $this->hasMany('App\Models\User');
|
return $this->hasMany('App\Models\User');
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
21
app/Ninja/Transformers/AccountTokenTransformer.php
Normal file
21
app/Ninja/Transformers/AccountTokenTransformer.php
Normal 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
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
@ -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
27
composer.lock
generated
@ -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": ""
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user