diff --git a/app/Http/Controllers/AccountApiController.php b/app/Http/Controllers/AccountApiController.php index 18950d814174..a32fe200862f 100644 --- a/app/Http/Controllers/AccountApiController.php +++ b/app/Http/Controllers/AccountApiController.php @@ -6,6 +6,7 @@ use Response; use Input; use App\Models\Client; use App\Models\Account; +use App\Models\AccountToken; use App\Ninja\Repositories\AccountRepository; use Illuminate\Http\Request; use League\Fractal; @@ -54,7 +55,25 @@ class AccountApiController extends Controller private function processLogin(Request $request) { + \Log::info('authed user = '.Auth::user()->email); + //Create a new token only if one does not already exist + if(!AccountToken::where('user_id', '=', Auth::user()->id)->firstOrFail()) + { + $account_token = $this->accountRepo->createToken($request->token_name); + } + + $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); } diff --git a/app/Models/Account.php b/app/Models/Account.php index fe16924f682c..0ffacd5051e5 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -41,7 +41,11 @@ class Account extends Eloquent 'invoice_settings' => 'object', ]; */ - + public function tokens() + { + return $this->hasMany('App\Models\AccountToken'); + } + public function users() { return $this->hasMany('App\Models\User'); diff --git a/app/Ninja/Transformers/AccountTokenTransformer.php b/app/Ninja/Transformers/AccountTokenTransformer.php new file mode 100644 index 000000000000..b2022a778286 --- /dev/null +++ b/app/Ninja/Transformers/AccountTokenTransformer.php @@ -0,0 +1,21 @@ + (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 + ]; + } +} \ No newline at end of file diff --git a/app/Ninja/Transformers/AccountTransformer.php b/app/Ninja/Transformers/AccountTransformer.php index 469365d61d77..262a8a19607a 100644 --- a/app/Ninja/Transformers/AccountTransformer.php +++ b/app/Ninja/Transformers/AccountTransformer.php @@ -7,9 +7,17 @@ use League\Fractal\TransformerAbstract; class AccountTransformer extends TransformerAbstract { protected $defaultIncludes = [ - 'users' + 'users', + 'account_tokens' ]; + public function includeAccountTokens($account) + { + $account_tokens = $account->tokens; + + return $this->collection($account_tokens, new AccountTokenTransformer); + + } public function includeUsers($account) { $users = $account->users;