Fixes for resolving company_user from user object

This commit is contained in:
David Bomba 2020-11-13 21:42:06 +11:00
parent 3bec5a4044
commit fe5218fd2c
9 changed files with 49 additions and 18 deletions

View File

@ -360,7 +360,7 @@ class BaseController extends Controller
if ($this->serializer && $this->serializer != EntityTransformer::API_SERIALIZER_JSON)
$this->entity_type = null;
$resource = new Item($data, $transformer, $entity_type);
$resource = new Item($item, $transformer, $this->entity_type);
if (auth()->user() && request()->include_static)
$data['static'] = Statics::company(auth()->user()->getCompany()->getLocale());

View File

@ -58,7 +58,7 @@ class TokenAuth
});
//user who once existed, but has been soft deleted
if ($user->company_user->is_locked) {
if ($company_token->company_user->is_locked) {
$error = [
'message' => 'User access locked',
'errors' => new stdClass,

View File

@ -51,6 +51,7 @@ class CompanyToken extends BaseModel
public function company_user()
{
return $this->hasOne(CompanyUser::class, 'user_id', 'user_id')
->where('company_id', $this->company_id)
->where('user_id', $this->user_id);

View File

@ -166,10 +166,16 @@ class User extends Authenticatable implements MustVerifyEmail
*/
public function getCompany()
{
if ($this->company) {
return $this->company;
}
if(request()->header('X-API-TOKEN')){
$company_token = CompanyToken::whereRaw('BINARY `token`= ?', [request()->header('X-API-TOKEN')])->first();
return $company_token->company;
}
return Company::find(config('ninja.company_id'));
}
@ -201,10 +207,6 @@ class User extends Authenticatable implements MustVerifyEmail
$this->id = auth()->user()->id;
}
// return $this->hasOneThrough(CompanyUser::class, CompanyToken::class, 'user_id', 'company_id', 'id', 'company_id')
// ->where('company_user.user_id', $this->id)
// ->withTrashed();
if(request()->header('X-API-TOKEN')){
return $this->hasOneThrough(CompanyUser::class, CompanyToken::class, 'user_id', 'company_id', 'id', 'company_id')
->where('company_tokens.token', request()->header('X-API-TOKEN'))

View File

@ -96,9 +96,12 @@ class UserTransformer extends EntityTransformer
public function includeCompanyUser(User $user)
{
// info("company id = ".$user->company_id);
// info($user);
if(!$user->company_id && request()->header('X-API-TOKEN')){
$company_token = CompanyToken::whereRaw('BINARY `token`= ?', [request()->header('X-API-TOKEN')])->first();
$user->company_id = $company_token->company_id;
}
$transformer = new CompanyUserTransformer($this->serializer);
$cu = $user->company_users()->whereCompanyId($user->company_id)->first();

View File

@ -78,6 +78,7 @@ class CompanyGatewayResolutionTest extends TestCase
$data[1]['fee_tax_rate2'] = 10;
$data[1]['fee_tax_name3'] = 'GST';
$data[1]['fee_tax_rate3'] = 10;
$data[1]['adjust_fee_percent'] = true;
$data[1]['fee_cap'] = 0;
$data[2]['min_limit'] = -1;
@ -90,6 +91,7 @@ class CompanyGatewayResolutionTest extends TestCase
$data[2]['fee_tax_rate2'] = 10;
$data[2]['fee_tax_name3'] = 'GST';
$data[2]['fee_tax_rate3'] = 10;
$data[2]['adjust_fee_percent'] = true;
$data[2]['fee_cap'] = 0;
//disable ach here

View File

@ -56,6 +56,7 @@ class CompanyGatewayTest extends TestCase
$data[1]['fee_tax_rate2'] = '';
$data[1]['fee_tax_name3'] = '';
$data[1]['fee_tax_rate3'] = 0;
$data[1]['adjust_fee_percent'] = true;
$data[1]['fee_cap'] = 0;
$cg = new CompanyGateway;
@ -126,6 +127,7 @@ class CompanyGatewayTest extends TestCase
$data[1]['fee_tax_rate2'] = 0;
$data[1]['fee_tax_name3'] = '';
$data[1]['fee_tax_rate3'] = 0;
$data[1]['adjust_fee_percent'] = true;
$data[1]['fee_cap'] = 0;
$cg = new CompanyGateway;
@ -163,6 +165,7 @@ class CompanyGatewayTest extends TestCase
$data[1]['fee_tax_rate2'] = 10;
$data[1]['fee_tax_name3'] = 'GST';
$data[1]['fee_tax_rate3'] = 10;
$data[1]['adjust_fee_percent'] = true;
$data[1]['fee_cap'] = 0;
$cg = new CompanyGateway;

View File

@ -114,8 +114,8 @@ class UserTest extends TestCase
$response->assertStatus(200);
$this->assertNotNull($user->company_user);
$this->assertEquals($user->company_user->company_id, $this->company->id);
// $this->assertNotNull($user->company_user);
// $this->assertEquals($user->company_user->company_id, $this->company->id);
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
@ -169,8 +169,8 @@ class UserTest extends TestCase
$response->assertStatus(200);
$this->assertNotNull($new_user->company_user);
$this->assertEquals($new_user->company_user->company_id, $company2->id);
// $this->assertNotNull($new_user->company_user);
// $this->assertEquals($new_user->company_user->company_id, $company2->id);
/*Create brand new user manually with company_user object and attach to a different company*/
$data = [

View File

@ -10,11 +10,13 @@
*/
namespace Tests\Integration;
use App\DataMapper\CompanySettings;
use App\Factory\CompanyUserFactory;
use App\Libraries\MultiDB;
use App\Models\Account;
use App\Models\Company;
use App\Models\CompanyToken;
use App\Models\CompanyUser;
use App\Models\User;
use Illuminate\Foundation\Testing\Concerns\InteractsWithDatabase;
use Illuminate\Foundation\Testing\DatabaseTransactions;
@ -60,7 +62,7 @@ class MultiDBUserTest extends TestCase
$coco = Company::on('db-ninja-01')->create($company->toArray());
Company::on('db-ninja-02')->create($company2->toArray());
$coco2 = Company::on('db-ninja-02')->create($company2->toArray());
$user = [
'account_id' => $account->id,
@ -91,12 +93,30 @@ class MultiDBUserTest extends TestCase
$user = User::on('db-ninja-01')->create($user);
$cu = CompanyUserFactory::create($user->id, $coco->id, $account->id);
$cu->is_owner = true;
$cu->is_admin = true;
$cu->save();
// $cu = CompanyUserFactory::create($user->id, $coco->id, $account->id);
// $cu->is_owner = true;
// $cu->is_admin = true;
// $cu->setConnection('db-ninja-01');
// $cu->save();
CompanyUser::on('db-ninja-01')->create([
'company_id' => $coco->id,
'account_id' => $account->id,
'user_id' => $user->id,
'is_owner' => true,
'is_admin' => true,
]);
$user2 = User::on('db-ninja-02')->create($user2);
CompanyUser::on('db-ninja-02')->create([
'company_id' => $coco2->id,
'account_id' => $account2->id,
'user_id' => $user2->id,
'is_owner' => true,
'is_admin' => true,
]);
User::on('db-ninja-02')->create($user2);
$this->token = \Illuminate\Support\Str::random(40);