From f4ae84e954262141363ead07311b602504c98e67 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 11 Jun 2019 13:20:23 +1000 Subject: [PATCH] Re work the way we harvest a user token --- app/Filters/UserFilters.php | 8 ++++++-- app/Http/Controllers/UserController.php | 4 ++-- app/Models/User.php | 15 +++++++-------- app/Providers/AuthServiceProvider.php | 1 + app/Transformers/UserTransformer.php | 9 ++++----- routes/api.php | 3 ++- tests/Feature/ClientTest.php | 2 +- tests/Feature/InvoiceTest.php | 4 ++-- tests/Feature/PaymentTest.php | 4 ++-- tests/Feature/QuoteTest.php | 4 ++-- tests/Feature/RecurringInvoiceTest.php | 4 ++-- tests/Feature/RecurringQuoteTest.php | 4 ++-- 12 files changed, 33 insertions(+), 29 deletions(-) diff --git a/app/Filters/UserFilters.php b/app/Filters/UserFilters.php index a65e4fcad6cb..755e331f18a0 100644 --- a/app/Filters/UserFilters.php +++ b/app/Filters/UserFilters.php @@ -112,9 +112,13 @@ class UserFilters extends QueryFilters */ public function entityFilter() { - - return $this->builder->whereCompanyId(auth()->user()->company()->id); + //return $this->builder->user_companies()->whereCompanyId(auth()->user()->company()->id); + //return $this->builder->whereCompanyId(auth()->user()->company()->id); + return $this->builder->whereHas('user_companies', function($q) + { + $q->where('company_id', '=', auth()->user()->company()->id); + }); } } \ No newline at end of file diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 1cb7a6013a28..9fef77545d85 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -55,7 +55,7 @@ class UserController extends BaseController * * @return \Illuminate\Http\Response */ - public function index(UserFilters $filster) + public function index(UserFilters $filters) { $users = User::filter($filters); @@ -96,7 +96,7 @@ class UserController extends BaseController ]); $user->load('companies'); - + return $this->itemResponse($user); } diff --git a/app/Models/User.php b/app/Models/User.php index bdde390dd27b..8604f06418b7 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -89,21 +89,20 @@ class User extends Authenticatable implements MustVerifyEmail * * @return Collection */ - public function tokens() + public function token() { - return $this->hasMany(CompanyToken::class)->orderBy('id', 'ASC'); + return $this->hasOne(CompanyToken::class)->orderBy('id', 'ASC'); } - /** * Return first user token * * @return token object */ - public function token() - { - return $this->tokens()->first(); - } + //public function token() + //{ + // return $this->tokens()->first(); + //} /** * Returns all companies a user has access to. @@ -122,7 +121,7 @@ class User extends Authenticatable implements MustVerifyEmail */ public function company() { - return $this->tokens()->whereRaw("BINARY `token`= ?", [request()->header('X-API-TOKEN')])->first()->company; + return $this->token->whereRaw("BINARY `token`= ?", [request()->header('X-API-TOKEN')])->first()->company; } /** diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index fbb5c183bd18..6a2690654169 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -26,6 +26,7 @@ use App\Policies\ProductPolicy; use App\Policies\QuotePolicy; use App\Policies\RecurringInvoicePolicy; use App\Policies\RecurringQuotePolicy; +use App\Policies\UserPolicy; use Auth; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Gate; diff --git a/app/Transformers/UserTransformer.php b/app/Transformers/UserTransformer.php index 9f33710d62f5..9b24432e342c 100644 --- a/app/Transformers/UserTransformer.php +++ b/app/Transformers/UserTransformer.php @@ -52,8 +52,8 @@ class UserTransformer extends EntityTransformer * @var array */ protected $defaultIncludes = [ - 'company_token', - + // 'company_token', + 'token', ]; /** @@ -61,7 +61,6 @@ class UserTransformer extends EntityTransformer */ protected $availableIncludes = [ 'companies', - 'company_tokens', ]; @@ -101,12 +100,12 @@ class UserTransformer extends EntityTransformer } - public function includeCompanyToken(User $user) + public function includeToken(User $user) { $transformer = new CompanyTokenTransformer($this->serializer); - return $this->includeItem($user->token(), $transformer, CompanyToken::class); + return $this->includeItem($user->token, $transformer, CompanyToken::class); } diff --git a/routes/api.php b/routes/api.php index 91be28bb0510..b61b9cb8ed33 100644 --- a/routes/api.php +++ b/routes/api.php @@ -61,6 +61,8 @@ Route::group(['middleware' => ['db','api_secret_check','token_auth'], 'prefix' = Route::post('payments/bulk', 'PaymentController@bulk')->name('payments.bulk'); + Route::resource('users', 'UserController'); // name = (users. index / create / show / update / destroy / edit + /* Route::resource('tasks', 'TaskController'); // name = (tasks. index / create / show / update / destroy / edit @@ -75,7 +77,6 @@ Route::group(['middleware' => ['db','api_secret_check','token_auth'], 'prefix' = Route::post('expenses/bulk', 'ExpenseController@bulk')->name('expenses.bulk'); - Route::resource('user', 'UserProfileController'); // name = (clients. index / create / show / update / destroy / edit Route::get('settings', 'SettingsController@index')->name('user.settings'); */ diff --git a/tests/Feature/ClientTest.php b/tests/Feature/ClientTest.php index 9413c5b71c78..7df863fa233c 100644 --- a/tests/Feature/ClientTest.php +++ b/tests/Feature/ClientTest.php @@ -116,7 +116,7 @@ class ClientTest extends TestCase $this->assertNotNull($token); $this->assertNotNull($user); $this->assertNotNull($company); - $this->assertNotNull($user->tokens->first()->company); + $this->assertNotNull($user->token->company); factory(\App\Models\Client::class, 3)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){ diff --git a/tests/Feature/InvoiceTest.php b/tests/Feature/InvoiceTest.php index b32593834d92..dcf666ea62f8 100644 --- a/tests/Feature/InvoiceTest.php +++ b/tests/Feature/InvoiceTest.php @@ -72,7 +72,7 @@ class InvoiceTest extends TestCase $this->assertNotNull($token); $this->assertNotNull($user); $this->assertNotNull($company); - $this->assertNotNull($user->tokens->first()->company); + $this->assertNotNull($user->token->company); factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){ @@ -135,7 +135,7 @@ class InvoiceTest extends TestCase $this->assertNotNull($token); $this->assertNotNull($user); $this->assertNotNull($company); - $this->assertNotNull($user->tokens->first()->company); + $this->assertNotNull($user->token->company); factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){ diff --git a/tests/Feature/PaymentTest.php b/tests/Feature/PaymentTest.php index 32d8545962b8..79a2c9949dff 100644 --- a/tests/Feature/PaymentTest.php +++ b/tests/Feature/PaymentTest.php @@ -72,7 +72,7 @@ class PaymentTest extends TestCase $this->assertNotNull($token); $this->assertNotNull($user); $this->assertNotNull($company); - $this->assertNotNull($user->tokens->first()->company); + $this->assertNotNull($user->token->company); factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){ @@ -135,7 +135,7 @@ class PaymentTest extends TestCase $this->assertNotNull($token); $this->assertNotNull($user); $this->assertNotNull($company); - $this->assertNotNull($user->tokens->first()->company); + $this->assertNotNull($user->token->company); factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){ diff --git a/tests/Feature/QuoteTest.php b/tests/Feature/QuoteTest.php index b8224d4dfc7c..d8e87ae18005 100644 --- a/tests/Feature/QuoteTest.php +++ b/tests/Feature/QuoteTest.php @@ -72,7 +72,7 @@ class QuoteTest extends TestCase $this->assertNotNull($token); $this->assertNotNull($user); $this->assertNotNull($company); - $this->assertNotNull($user->tokens->first()->company); + $this->assertNotNull($user->token->company); factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){ @@ -135,7 +135,7 @@ class QuoteTest extends TestCase $this->assertNotNull($token); $this->assertNotNull($user); $this->assertNotNull($company); - $this->assertNotNull($user->tokens->first()->company); + $this->assertNotNull($user->token->company); factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){ diff --git a/tests/Feature/RecurringInvoiceTest.php b/tests/Feature/RecurringInvoiceTest.php index abc4eb0e51c2..b2ebed4983ac 100644 --- a/tests/Feature/RecurringInvoiceTest.php +++ b/tests/Feature/RecurringInvoiceTest.php @@ -72,7 +72,7 @@ class RecurringInvoiceTest extends TestCase $this->assertNotNull($token); $this->assertNotNull($user); $this->assertNotNull($company); - $this->assertNotNull($user->tokens->first()->company); + $this->assertNotNull($user->token->company); factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){ @@ -135,7 +135,7 @@ class RecurringInvoiceTest extends TestCase $this->assertNotNull($token); $this->assertNotNull($user); $this->assertNotNull($company); - $this->assertNotNull($user->tokens->first()->company); + $this->assertNotNull($user->token->company); factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){ diff --git a/tests/Feature/RecurringQuoteTest.php b/tests/Feature/RecurringQuoteTest.php index a9e46c4b3858..c9436c92cbbd 100644 --- a/tests/Feature/RecurringQuoteTest.php +++ b/tests/Feature/RecurringQuoteTest.php @@ -72,7 +72,7 @@ class RecurringQuoteTest extends TestCase $this->assertNotNull($token); $this->assertNotNull($user); $this->assertNotNull($company); - $this->assertNotNull($user->tokens->first()->company); + $this->assertNotNull($user->token->company); factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){ @@ -135,7 +135,7 @@ class RecurringQuoteTest extends TestCase $this->assertNotNull($token); $this->assertNotNull($user); $this->assertNotNull($company); - $this->assertNotNull($user->tokens->first()->company); + $this->assertNotNull($user->token->company); factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){