diff --git a/app/Http/Controllers/BaseController.php b/app/Http/Controllers/BaseController.php index 7ff3ddbe01e5..2a2d5c272003 100644 --- a/app/Http/Controllers/BaseController.php +++ b/app/Http/Controllers/BaseController.php @@ -54,6 +54,7 @@ class BaseController extends Controller private function buildManager() { + $include = ''; if(request()->input('include') !== null) { @@ -65,17 +66,12 @@ class BaseController extends Controller $include = implode(",", $include); } - else + else if(count($this->forced_includes) >= 1) { - if(count($this->forced_includes)>=1) - $include = implode(",", $this->forced_includes); - else - $include = ''; - } + $include = implode(",", $this->forced_includes); - Log::error('forced includes = ' . print_r($this->forced_includes,1)); - Log::error('includes = ' . $include); + } $this->manager->parseIncludes($include); @@ -86,7 +82,8 @@ class BaseController extends Controller $this->manager->setSerializer(new JsonApiSerializer()); - } else + } + else { $this->manager->setSerializer(new ArraySerializer()); diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php index 67e37cb09114..7ebd79990e59 100644 --- a/app/Http/Controllers/CompanyController.php +++ b/app/Http/Controllers/CompanyController.php @@ -107,6 +107,19 @@ class CompanyController extends BaseController 'settings' => json_encode(DefaultSettings::userSettings()), ]); + /* + * Required dependencies + */ + if($user) + auth()->login($user, false); + + $user->setCompany($company); + + /* + * Create token + */ + $company_token = CreateCompanyToken::dispatchNow($company, auth()->user()); + return $this->itemResponse($company); } diff --git a/app/Jobs/Account/CreateAccount.php b/app/Jobs/Account/CreateAccount.php index e11e0e49c4de..c8e8f7cc955b 100644 --- a/app/Jobs/Account/CreateAccount.php +++ b/app/Jobs/Account/CreateAccount.php @@ -38,7 +38,9 @@ class CreateAccount public function __construct(array $request) { + $this->request = $request; + } /** @@ -68,6 +70,14 @@ class CreateAccount */ $user = CreateUser::dispatchNow($this->request, $account, $company, true); //make user company_owner + /* + * Required dependencies + */ + if($user) + auth()->login($user, false); + + $user->setCompany($company); + /* * Create token */ diff --git a/app/Models/Company.php b/app/Models/Company.php index ef2bac84a171..74a5b9d94939 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -15,6 +15,7 @@ use App\DataMapper\CompanySettings; use App\Models\Account; use App\Models\AccountGateway; use App\Models\Client; +use App\Models\CompanyUser; use App\Models\Country; use App\Models\Currency; use App\Models\Expense; @@ -67,7 +68,7 @@ class Company extends BaseModel public function users() { - return $this->hasMany(User::class); + return $this->hasMany(CompanyUser::class); } /** diff --git a/app/Models/User.php b/app/Models/User.php index 65c1686ab82c..983684b8584c 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -94,7 +94,8 @@ class User extends Authenticatable implements MustVerifyEmail */ public function token() { - return $this->hasOne(CompanyToken::class)->orderBy('id', 'ASC'); + return $this->tokens->whereCompanyId($this->company()->id)->first(); + //return $this->hasOne(CompanyToken::class)->orderBy('id', 'ASC'); } /** diff --git a/app/Transformers/UserTransformer.php b/app/Transformers/UserTransformer.php index e3c6372afc45..17dd5aa3d2e2 100644 --- a/app/Transformers/UserTransformer.php +++ b/app/Transformers/UserTransformer.php @@ -105,7 +105,7 @@ class UserTransformer extends EntityTransformer $transformer = new CompanyTokenTransformer($this->serializer); - return $this->includeItem($user->token, $transformer, CompanyToken::class); + return $this->includeItem($user->token(), $transformer, CompanyToken::class); } diff --git a/tests/Feature/ClientTest.php b/tests/Feature/ClientTest.php index 93bb49360c6d..183941e5300e 100644 --- a/tests/Feature/ClientTest.php +++ b/tests/Feature/ClientTest.php @@ -46,8 +46,8 @@ class ClientTest extends TestCase $data = [ 'first_name' => $this->faker->firstName, 'last_name' => $this->faker->lastName, - 'name' => $this->faker->company, - 'email' => $this->faker->unique()->safeEmail, + 'name' => $this->faker->company, + 'email' => $this->faker->unique()->safeEmail, 'password' => 'ALongAndBrilliantPassword123', '_token' => csrf_token(), 'privacy_policy' => 1, @@ -87,8 +87,8 @@ class ClientTest extends TestCase $data = [ 'first_name' => $this->faker->firstName, 'last_name' => $this->faker->lastName, - 'name' => $this->faker->company, - 'email' => $this->faker->unique()->safeEmail, + 'name' => $this->faker->company, + 'email' => $this->faker->unique()->safeEmail, 'password' => 'ALongAndBrilliantPassword123', '_token' => csrf_token(), 'privacy_policy' => 1, diff --git a/tests/Feature/RecurringInvoiceTest.php b/tests/Feature/RecurringInvoiceTest.php index 74ab4eab3eda..4730916f9f42 100644 --- a/tests/Feature/RecurringInvoiceTest.php +++ b/tests/Feature/RecurringInvoiceTest.php @@ -124,7 +124,7 @@ class RecurringInvoiceTest extends TestCase ])->post('/api/v1/signup', $data); $acc = $response->json(); - +Log::error($acc); $account = Account::find($this->decodePrimaryKey($acc['data']['id'])); $company_token = $account->default_company->tokens()->first();