mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-10 13:12:50 +01:00
Refactor for Signup via API
This commit is contained in:
parent
8ad045ecc4
commit
ac382fe3e7
@ -4,6 +4,8 @@ namespace App\Http\Controllers;
|
|||||||
|
|
||||||
use App\Http\Requests\Account\CreateAccountRequest;
|
use App\Http\Requests\Account\CreateAccountRequest;
|
||||||
use App\Jobs\Account\CreateAccount;
|
use App\Jobs\Account\CreateAccount;
|
||||||
|
use App\Models\Account;
|
||||||
|
use App\Transformers\AccountTransformer;
|
||||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
@ -12,6 +14,10 @@ class AccountController extends BaseController
|
|||||||
{
|
{
|
||||||
use DispatchesJobs;
|
use DispatchesJobs;
|
||||||
|
|
||||||
|
protected $entity_type = Account::class;
|
||||||
|
|
||||||
|
protected $entity_transformer = AccountTransformer::class;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
@ -49,9 +55,10 @@ class AccountController extends BaseController
|
|||||||
public function store(CreateAccountRequest $request)
|
public function store(CreateAccountRequest $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$user = CreateAccount::dispatchNow($request->all());
|
$account = CreateAccount::dispatchNow($request->all());
|
||||||
|
|
||||||
|
return $this->itemResponse($account);
|
||||||
|
|
||||||
return response()->json($user);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,7 +37,7 @@ class CreateAccount
|
|||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function handle() : ?User
|
public function handle() : ?Account
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Create account
|
* Create account
|
||||||
@ -57,7 +57,7 @@ class CreateAccount
|
|||||||
/*
|
/*
|
||||||
* Create user
|
* Create user
|
||||||
*/
|
*/
|
||||||
$user = CreateUser::dispatchNow($this->request, $account, $company);
|
$user = CreateUser::dispatchNow($this->request, $account, $company, true); //make user company_owner
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create token
|
* Create token
|
||||||
@ -67,13 +67,13 @@ class CreateAccount
|
|||||||
/*
|
/*
|
||||||
* Login user
|
* Login user
|
||||||
*/
|
*/
|
||||||
Auth::loginUsingId($user->id, true);
|
//Auth::loginUsingId($user->id, true);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fire related events
|
* Fire related events
|
||||||
*/
|
*/
|
||||||
event(new AccountCreated($user));
|
event(new AccountCreated($user));
|
||||||
|
|
||||||
return $user;
|
return $account;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,11 +27,12 @@ class CreateUser
|
|||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function __construct(array $request, $account, $company)
|
public function __construct(array $request, $account, $company, $company_owner = false)
|
||||||
{
|
{
|
||||||
$this->request = $request;
|
$this->request = $request;
|
||||||
$this->account = $account;
|
$this->account = $account;
|
||||||
$this->company = $company;
|
$this->company = $company;
|
||||||
|
$this->company_owner = $company_owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -41,7 +42,7 @@ class CreateUser
|
|||||||
*/
|
*/
|
||||||
public function handle() : ?User
|
public function handle() : ?User
|
||||||
{
|
{
|
||||||
$x = mt_rand(1,100);
|
$x = mt_rand(1,10000);
|
||||||
|
|
||||||
$email = 'turbo124+'. $x .'@gmail.com';
|
$email = 'turbo124+'. $x .'@gmail.com';
|
||||||
|
|
||||||
@ -56,7 +57,7 @@ class CreateUser
|
|||||||
|
|
||||||
$user->companies()->attach($this->company->id, [
|
$user->companies()->attach($this->company->id, [
|
||||||
'account_id' => $this->account->id,
|
'account_id' => $this->account->id,
|
||||||
'is_owner' => 1,
|
'is_owner' => $this->company_owner,
|
||||||
'is_admin' => 1,
|
'is_admin' => 1,
|
||||||
'is_locked' => 0,
|
'is_locked' => 0,
|
||||||
'permissions' => json_encode([]),
|
'permissions' => json_encode([]),
|
||||||
|
@ -44,6 +44,9 @@ class Account extends BaseModel
|
|||||||
'discount_expires',
|
'discount_expires',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
protected $with = [
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||||
*/
|
*/
|
||||||
|
@ -21,6 +21,7 @@ use App\Models\Traits\AccountTrait;
|
|||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Utils\Traits\MakesHash;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
use Laracasts\Presenter\PresentableTrait;
|
use Laracasts\Presenter\PresentableTrait;
|
||||||
|
|
||||||
class Company extends BaseModel
|
class Company extends BaseModel
|
||||||
@ -190,4 +191,11 @@ class Company extends BaseModel
|
|||||||
return $this->hasMany(CompanyUser::class);
|
return $this->hasMany(CompanyUser::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function owner()
|
||||||
|
{
|
||||||
|
$c = $this->company_users->where('is_owner',true)->first();
|
||||||
|
|
||||||
|
return User::find($c->user_id);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,11 @@
|
|||||||
namespace App\Transformers;
|
namespace App\Transformers;
|
||||||
|
|
||||||
use App\Models\Account;
|
use App\Models\Account;
|
||||||
|
use App\Models\Company;
|
||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
|
use App\Models\User;
|
||||||
|
use App\Transformers\CompanyTransformer;
|
||||||
|
use App\Transformers\UserTransformer;
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Utils\Traits\MakesHash;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -20,6 +24,8 @@ class AccountTransformer extends EntityTransformer
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $defaultIncludes = [
|
protected $defaultIncludes = [
|
||||||
|
'default_company',
|
||||||
|
'user',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,4 +56,12 @@ class AccountTransformer extends EntityTransformer
|
|||||||
|
|
||||||
return $this->includeItem($account->default_company, $transformer, Company::class);
|
return $this->includeItem($account->default_company, $transformer, Company::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function includeUser(Account $account)
|
||||||
|
{
|
||||||
|
$transformer = new UserTransformer($this->serializer);
|
||||||
|
|
||||||
|
return $this->includeItem($account->default_company->owner(), $transformer, User::class);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ class UserTransformer extends EntityTransformer
|
|||||||
*/
|
*/
|
||||||
protected $defaultIncludes = [
|
protected $defaultIncludes = [
|
||||||
'company_token',
|
'company_token',
|
||||||
'companies',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,6 +50,7 @@ class UserTransformer extends EntityTransformer
|
|||||||
*/
|
*/
|
||||||
protected $availableIncludes = [
|
protected $availableIncludes = [
|
||||||
'user_company',
|
'user_company',
|
||||||
|
'companies',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
@ -83,14 +84,14 @@ class UserTransformer extends EntityTransformer
|
|||||||
{
|
{
|
||||||
$transformer = new CompanyTransformer($this->serializer);
|
$transformer = new CompanyTransformer($this->serializer);
|
||||||
|
|
||||||
return $this->includeCollection($user->companies(), $transformer, Company::class)
|
return $this->includeCollection($user->companies(), $transformer, Company::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function includeCompanyToken(User $user)
|
public function includeCompanyToken(User $user)
|
||||||
{
|
{
|
||||||
$transformer = new CompanyTokenTransformer($this->serializer);
|
$transformer = new CompanyTokenTransformer($this->serializer);
|
||||||
|
|
||||||
return $this->includeItem($user->token(), $transformer, CompanyToken::class)
|
return $this->includeItem($user->token(), $transformer, CompanyToken::class);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -50,10 +50,7 @@ class AccountTest extends TestCase
|
|||||||
|
|
||||||
$response = $this->post('/signup', $data);
|
$response = $this->post('/signup', $data);
|
||||||
|
|
||||||
$response->assertStatus(200)
|
$response->assertStatus(200);
|
||||||
->assertJson([
|
|
||||||
'first_name' => $data['first_name'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,7 +62,6 @@ class AccountTest extends TestCase
|
|||||||
'last_name' => $this->faker->lastName,
|
'last_name' => $this->faker->lastName,
|
||||||
'email' => $this->faker->unique()->safeEmail,
|
'email' => $this->faker->unique()->safeEmail,
|
||||||
'password' => 'ALongAndBrilliantPassword123',
|
'password' => 'ALongAndBrilliantPassword123',
|
||||||
//'_token' => csrf_token(),
|
|
||||||
'privacy_policy' => 1,
|
'privacy_policy' => 1,
|
||||||
'terms_of_service' => 1
|
'terms_of_service' => 1
|
||||||
];
|
];
|
||||||
@ -75,10 +71,7 @@ class AccountTest extends TestCase
|
|||||||
'X-API-SECRET' => config('ninja.api_secret'),
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
])->post('/api/v1/signup', $data);
|
])->post('/api/v1/signup', $data);
|
||||||
|
|
||||||
$response->assertStatus(200)
|
$response->assertStatus(200);
|
||||||
->assertJson([
|
|
||||||
'first_name' => $data['first_name'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,14 +51,12 @@ class ClientTest extends TestCase
|
|||||||
])->post('/api/v1/signup', $data);
|
])->post('/api/v1/signup', $data);
|
||||||
|
|
||||||
|
|
||||||
$response->assertStatus(200)
|
$response->assertStatus(200);
|
||||||
->assertJson([
|
|
||||||
'first_name' => $data['first_name'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
$acc = $response->json();
|
$acc = $response->json();
|
||||||
|
|
||||||
$account = Account::find($acc['id']);
|
|
||||||
|
$account = Account::find($this->decodePrimaryKey($acc['data']['id']));
|
||||||
|
|
||||||
$token = $account->default_company->tokens->first()->token;
|
$token = $account->default_company->tokens->first()->token;
|
||||||
|
|
||||||
@ -94,9 +92,10 @@ class ClientTest extends TestCase
|
|||||||
|
|
||||||
$acc = $response->json();
|
$acc = $response->json();
|
||||||
|
|
||||||
$account = Account::find($acc['id']);
|
$account = Account::find($this->decodePrimaryKey($acc['data']['id']));
|
||||||
|
|
||||||
$company_token = $account->default_company->tokens()->first();
|
$company_token = $account->default_company->tokens()->first();
|
||||||
|
|
||||||
$token = $company_token->token;
|
$token = $company_token->token;
|
||||||
$company = $company_token->company;
|
$company = $company_token->company;
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ class InvoiceTest extends TestCase
|
|||||||
|
|
||||||
$acc = $response->json();
|
$acc = $response->json();
|
||||||
|
|
||||||
$account = Account::find($acc['id']);
|
$account = Account::find($this->decodePrimaryKey($acc['data']['id']));
|
||||||
|
|
||||||
$company_token = $account->default_company->tokens()->first();
|
$company_token = $account->default_company->tokens()->first();
|
||||||
$token = $company_token->token;
|
$token = $company_token->token;
|
||||||
@ -117,7 +117,7 @@ class InvoiceTest extends TestCase
|
|||||||
|
|
||||||
$acc = $response->json();
|
$acc = $response->json();
|
||||||
|
|
||||||
$account = Account::find($acc['id']);
|
$account = Account::find($this->decodePrimaryKey($acc['data']['id']));
|
||||||
|
|
||||||
$company_token = $account->default_company->tokens()->first();
|
$company_token = $account->default_company->tokens()->first();
|
||||||
$token = $company_token->token;
|
$token = $company_token->token;
|
||||||
|
@ -52,14 +52,11 @@ class ProductTest extends TestCase
|
|||||||
])->post('/api/v1/signup', $data);
|
])->post('/api/v1/signup', $data);
|
||||||
|
|
||||||
|
|
||||||
$response->assertStatus(200)
|
$response->assertStatus(200);
|
||||||
->assertJson([
|
|
||||||
'first_name' => $data['first_name'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
$acc = $response->json();
|
$acc = $response->json();
|
||||||
|
|
||||||
$account = Account::find($acc['id']);
|
$account = Account::find($this->decodePrimaryKey($acc['data']['id']));
|
||||||
|
|
||||||
$token = $account->default_company->tokens->first()->token;
|
$token = $account->default_company->tokens->first()->token;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user