Hosted feature implementation

This commit is contained in:
= 2021-03-07 21:14:53 +11:00
parent 616dea2c9d
commit f4d1917f32
3 changed files with 22 additions and 5 deletions

View File

@ -504,4 +504,18 @@ class BaseController extends Controller
return redirect('/setup');
}
public function checkFeature($feature)
{
if(auth()->user()->account->hasFeature($feature))
return true;
return false;
}
public function featureFailure()
{
return response()->json(['message' => 'Upgrade to a paid plan for this feature.'], 403);
}
}

View File

@ -30,6 +30,7 @@ use App\Jobs\Entity\EmailEntity;
use App\Jobs\Invoice\StoreInvoice;
use App\Jobs\Invoice\ZipInvoices;
use App\Jobs\Util\UnlinkFile;
use App\Models\Account;
use App\Models\Client;
use App\Models\Invoice;
use App\Models\Quote;
@ -906,6 +907,8 @@ class InvoiceController extends BaseController
*/
public function upload(UploadInvoiceRequest $request, Invoice $invoice)
{
if(!$this->checkFeature(Account::FEATURE_DOCUMENTS))
return $this->featureFailure();
if ($request->has('documents'))
$this->saveDocuments($request->file('documents'), $invoice);

View File

@ -167,17 +167,17 @@ class Account extends BaseModel
// Enterprise; No Trial allowed; grandfathered for old pro users
case self::FEATURE_USERS:// Grandfathered for old Pro users
if ($planDetails && $planDetails['trial']) {
if ($plan_details && $plan_details['trial']) {
// Do they have a non-trial plan?
$planDetails = $this->getPlanDetails(false, false);
$plan_details = $this->getPlanDetails(false, false);
}
return $self_host || ! empty($planDetails) && ($planDetails['plan'] == self::PLAN_ENTERPRISE);
return $self_host || ! empty($plan_details) && ($plan_details['plan'] == self::PLAN_ENTERPRISE);
// Enterprise; No Trial allowed
case self::FEATURE_DOCUMENTS:
case self::FEATURE_USER_PERMISSIONS:
return $self_host || ! empty($planDetails) && $planDetails['plan'] == self::PLAN_ENTERPRISE && ! $planDetails['trial'];
return $self_host || ! empty($plan_details) && $plan_details['plan'] == self::PLAN_ENTERPRISE && ! $plan_details['trial'];
default:
return false;