mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Fix invoice link if user has multiple companies #578
This commit is contained in:
parent
d62a672999
commit
602c8e81e5
@ -1354,10 +1354,11 @@ class AccountController extends BaseController
|
|||||||
});
|
});
|
||||||
|
|
||||||
$this->accountRepo->unlinkAccount($account);
|
$this->accountRepo->unlinkAccount($account);
|
||||||
if ($account->company->accounts->count() == 1) {
|
|
||||||
$account->company->forceDelete();
|
if ($account->hasMultipleAccounts()) {
|
||||||
} else {
|
|
||||||
$account->forceDelete();
|
$account->forceDelete();
|
||||||
|
} else {
|
||||||
|
$account->company->forceDelete();
|
||||||
}
|
}
|
||||||
|
|
||||||
Auth::logout();
|
Auth::logout();
|
||||||
|
@ -172,7 +172,8 @@ class AuthController extends Controller
|
|||||||
if (Auth::check() && !Auth::user()->registered) {
|
if (Auth::check() && !Auth::user()->registered) {
|
||||||
$account = Auth::user()->account;
|
$account = Auth::user()->account;
|
||||||
$this->accountRepo->unlinkAccount($account);
|
$this->accountRepo->unlinkAccount($account);
|
||||||
if ($account->company->accounts->count() == 1) {
|
|
||||||
|
if ( ! $account->hasMultipleAccounts()) {
|
||||||
$account->company->forceDelete();
|
$account->company->forceDelete();
|
||||||
}
|
}
|
||||||
$account->forceDelete();
|
$account->forceDelete();
|
||||||
|
@ -270,31 +270,6 @@ class UserController extends BaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Log the user out of the application.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
public function logout()
|
|
||||||
{
|
|
||||||
if (Auth::check()) {
|
|
||||||
if (!Auth::user()->registered) {
|
|
||||||
$account = Auth::user()->account;
|
|
||||||
$this->accountRepo->unlinkAccount($account);
|
|
||||||
if ($account->company->accounts->count() == 1) {
|
|
||||||
$account->company->forceDelete();
|
|
||||||
}
|
|
||||||
$account->forceDelete();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Auth::logout();
|
|
||||||
Session::flush();
|
|
||||||
|
|
||||||
return Redirect::to('/')->with('clearGuestKey', true);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
public function changePassword()
|
public function changePassword()
|
||||||
{
|
{
|
||||||
// check the current password is correct
|
// check the current password is correct
|
||||||
@ -347,6 +322,22 @@ class UserController extends BaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function viewAccountByKey($accountKey)
|
||||||
|
{
|
||||||
|
$user = $this->accountRepo->findUser(Auth::user(), $accountKey);
|
||||||
|
|
||||||
|
if ( ! $user) {
|
||||||
|
return redirect()->to('/');
|
||||||
|
}
|
||||||
|
|
||||||
|
Auth::loginUsingId($user->id);
|
||||||
|
Auth::user()->account->loadLocalizationSettings();
|
||||||
|
|
||||||
|
$redirectTo = request()->redirect_to ?: '/';
|
||||||
|
|
||||||
|
return redirect()->to($redirectTo);
|
||||||
|
}
|
||||||
|
|
||||||
public function unlinkAccount($userAccountId, $userId)
|
public function unlinkAccount($userAccountId, $userId)
|
||||||
{
|
{
|
||||||
$this->accountRepo->unlinkUser($userAccountId, $userId);
|
$this->accountRepo->unlinkUser($userAccountId, $userId);
|
||||||
|
@ -232,6 +232,7 @@ Route::group([
|
|||||||
Route::post('users/bulk', 'UserController@bulk');
|
Route::post('users/bulk', 'UserController@bulk');
|
||||||
Route::get('send_confirmation/{user_id}', 'UserController@sendConfirmation');
|
Route::get('send_confirmation/{user_id}', 'UserController@sendConfirmation');
|
||||||
Route::get('/switch_account/{user_id}', 'UserController@switchAccount');
|
Route::get('/switch_account/{user_id}', 'UserController@switchAccount');
|
||||||
|
Route::get('/account/{account_key}', 'UserController@viewAccountByKey');
|
||||||
Route::get('/unlink_account/{user_account_id}/{user_id}', 'UserController@unlinkAccount');
|
Route::get('/unlink_account/{user_account_id}/{user_id}', 'UserController@unlinkAccount');
|
||||||
Route::get('/manage_companies', 'UserController@manageCompanies');
|
Route::get('/manage_companies', 'UserController@manageCompanies');
|
||||||
|
|
||||||
|
@ -1732,6 +1732,11 @@ class Account extends Eloquent
|
|||||||
|
|
||||||
return Carbon::now($this->getTimezone())->addDays($numDays)->format('Y-m-d');
|
return Carbon::now($this->getTimezone())->addDays($numDays)->format('Y-m-d');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function hasMultipleAccounts()
|
||||||
|
{
|
||||||
|
return $this->company->accounts->count() > 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Account::updated(function ($account)
|
Account::updated(function ($account)
|
||||||
|
@ -180,12 +180,10 @@ class InvoiceDatatable extends EntityDatatable
|
|||||||
|
|
||||||
if ($this->entityType == ENTITY_INVOICE || $this->entityType == ENTITY_QUOTE) {
|
if ($this->entityType == ENTITY_INVOICE || $this->entityType == ENTITY_QUOTE) {
|
||||||
$actions[] = \DropdownButton::DIVIDER;
|
$actions[] = \DropdownButton::DIVIDER;
|
||||||
/*
|
|
||||||
$actions[] = [
|
$actions[] = [
|
||||||
'label' => mtrans($this->entityType, 'email_' . $this->entityType),
|
'label' => mtrans($this->entityType, 'email_' . $this->entityType),
|
||||||
'url' => 'javascript:submitForm_'.$this->entityType.'("emailInvoice")',
|
'url' => 'javascript:submitForm_'.$this->entityType.'("emailInvoice")',
|
||||||
];
|
];
|
||||||
*/
|
|
||||||
$actions[] = [
|
$actions[] = [
|
||||||
'label' => mtrans($this->entityType, 'mark_sent'),
|
'label' => mtrans($this->entityType, 'mark_sent'),
|
||||||
'url' => 'javascript:submitForm_'.$this->entityType.'("markSent")',
|
'url' => 'javascript:submitForm_'.$this->entityType.'("markSent")',
|
||||||
|
@ -59,6 +59,12 @@ class UserMailer extends Mailer
|
|||||||
$account = $user->account;
|
$account = $user->account;
|
||||||
$client = $invoice->client;
|
$client = $invoice->client;
|
||||||
|
|
||||||
|
if ($account->hasMultipleAccounts()) {
|
||||||
|
$link = url(sprintf('/account/%s?redirect_to=%s', $account->account_key, $invoice->present()->path));
|
||||||
|
} else {
|
||||||
|
$link = $invoice->present()->url;
|
||||||
|
}
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'entityType' => $entityType,
|
'entityType' => $entityType,
|
||||||
'clientName' => $client->getDisplayName(),
|
'clientName' => $client->getDisplayName(),
|
||||||
@ -66,7 +72,7 @@ class UserMailer extends Mailer
|
|||||||
'userName' => $user->getDisplayName(),
|
'userName' => $user->getDisplayName(),
|
||||||
'invoiceAmount' => $account->formatMoney($invoice->getRequestedAmount(), $client),
|
'invoiceAmount' => $account->formatMoney($invoice->getRequestedAmount(), $client),
|
||||||
'invoiceNumber' => $invoice->invoice_number,
|
'invoiceNumber' => $invoice->invoice_number,
|
||||||
'invoiceLink' => SITE_URL."/{$entityType}s/{$invoice->public_id}",
|
'invoiceLink' => $link,
|
||||||
'account' => $account,
|
'account' => $account,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -10,12 +10,16 @@ class EntityPresenter extends Presenter
|
|||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function url()
|
public function url()
|
||||||
|
{
|
||||||
|
return url($this->path());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function path()
|
||||||
{
|
{
|
||||||
$type = Utils::pluralizeEntityType($this->entity->getEntityType());
|
$type = Utils::pluralizeEntityType($this->entity->getEntityType());
|
||||||
$id = $this->entity->public_id;
|
$id = $this->entity->public_id;
|
||||||
$link = sprintf('/%s/%s', $type, $id);
|
|
||||||
|
|
||||||
return URL::to($link);
|
return sprintf('/%s/%s', $type, $id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function editUrl()
|
public function editUrl()
|
||||||
|
@ -505,6 +505,19 @@ class AccountRepository
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function findUser($user, $accountKey)
|
||||||
|
{
|
||||||
|
$users = $this->findUsers($user, 'account');
|
||||||
|
|
||||||
|
foreach ($users as $user) {
|
||||||
|
if ($accountKey && hash_equals($user->account->account_key, $accountKey)) {
|
||||||
|
return $user;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public function findUserAccounts($userId1, $userId2 = false)
|
public function findUserAccounts($userId1, $userId2 = false)
|
||||||
{
|
{
|
||||||
if (!Schema::hasTable('user_accounts')) {
|
if (!Schema::hasTable('user_accounts')) {
|
||||||
@ -674,7 +687,7 @@ class AccountRepository
|
|||||||
|
|
||||||
$user = User::whereId($userId)->first();
|
$user = User::whereId($userId)->first();
|
||||||
|
|
||||||
if (!$user->public_id && $user->account->company->accounts->count() > 1) {
|
if (!$user->public_id && $user->account->hasMultipleAccounts()) {
|
||||||
$company = Company::create();
|
$company = Company::create();
|
||||||
$company->save();
|
$company->save();
|
||||||
$user->account->company_id = $company->id;
|
$user->account->company_id = $company->id;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user