Support viewing invoice is password and custom subdomain are used

This commit is contained in:
Hillel Coren 2017-04-14 13:55:32 +03:00
parent b4cd7fba72
commit 81764778d0
5 changed files with 11 additions and 5 deletions

View File

@ -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();

View File

@ -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) {

View File

@ -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'])) {

View File

@ -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);
}
}

View File

@ -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);