diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index fea15293ab57..2adb3a4f2414 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -164,8 +164,9 @@ class InvoiceController extends BaseController foreach ($invoice->invitations as $invitation) { foreach ($client->contacts as $contact) { if ($invitation->contact_id == $contact->id) { + $hasPassword = $account->isClientPortalPasswordEnabled() && $contact->password; $contact->email_error = $invitation->email_error; - $contact->invitation_link = $invitation->getLink(); + $contact->invitation_link = $invitation->getLink('view', $hasPassword, $hasPassword); $contact->invitation_viewed = $invitation->viewed_date && $invitation->viewed_date != '0000-00-00 00:00:00' ? $invitation->viewed_date : false; $contact->invitation_openend = $invitation->opened_date && $invitation->opened_date != '0000-00-00 00:00:00' ? $invitation->opened_date : false; $contact->invitation_status = $contact->email_error ? false : $invitation->getStatus(); diff --git a/app/Models/Account.php b/app/Models/Account.php index 03ada0d395df..c767e97726bb 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -1787,6 +1787,11 @@ class Account extends Eloquent return $yearStart->format('Y-m-d'); } + + public function isClientPortalPasswordEnabled() + { + return $this->hasFeature(FEATURE_CLIENT_PORTAL_PASSWORD) && $this->enable_portal_password; + } } Account::updated(function ($account) { diff --git a/app/Models/Client.php b/app/Models/Client.php index 7f886fc96879..f264218e22de 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -294,7 +294,7 @@ class Client extends EntityModel } } - if (Utils::hasFeature(FEATURE_CLIENT_PORTAL_PASSWORD) && $this->account->enable_portal_password) { + if ($this->account->isClientPortalPasswordEnabled()) { if (! empty($data['password']) && $data['password'] != '-%unchanged%-') { $contact->password = bcrypt($data['password']); } elseif (empty($data['password'])) { diff --git a/app/Models/Invitation.php b/app/Models/Invitation.php index 0e493bf204ea..7797eed651be 100644 --- a/app/Models/Invitation.php +++ b/app/Models/Invitation.php @@ -66,7 +66,7 @@ class Invitation extends EntityModel * * @return string */ - public function getLink($type = 'view', $forceOnsite = false) + public function getLink($type = 'view', $forceOnsite = false, $forcePlain = false) { if (! $this->account) { $this->load('account'); @@ -87,7 +87,7 @@ class Invitation extends EntityModel if ($iframe_url && ! $forceOnsite) { return "{$iframe_url}?{$this->invitation_key}"; - } elseif ($this->account->subdomain) { + } elseif ($this->account->subdomain && ! $forcePlain) { $url = Utils::replaceSubdomain($url, $account->subdomain); } } diff --git a/app/Ninja/Mailers/ContactMailer.php b/app/Ninja/Mailers/ContactMailer.php index bc2cbaa4cd55..365c7b2c4cee 100644 --- a/app/Ninja/Mailers/ContactMailer.php +++ b/app/Ninja/Mailers/ContactMailer.php @@ -171,7 +171,7 @@ class ContactMailer extends Mailer $variables['autobill'] = $invoice->present()->autoBillEmailMessage(); } - if (empty($invitation->contact->password) && $account->hasFeature(FEATURE_CLIENT_PORTAL_PASSWORD) && $account->enable_portal_password && $account->send_portal_password) { + if (empty($invitation->contact->password) && $account->isClientPortalPasswordEnabled() && $account->send_portal_password) { // The contact needs a password $variables['password'] = $password = $this->generatePassword(); $invitation->contact->password = bcrypt($password);