filament-subscriptions
Manage your subscriptions Like Spark for FilamentPHP
Filament Subscriptions
Manage subscriptions and feature access with customizable plans in FilamentPHP
thanks for Laravel Subscriptions you can review it before use this package.
Screenshots
Features
- Manage plans
- Manage features
- Manage subscriptions
- multi-tenancy support
- Native Filament subscriptions support
- Subscription Middleware
- Subscription Page like Spark
- Subscription Events
- Subscription Facade Hook
- Subscription Webhooks
- Subscription Payments Integrations
Installation
composer require tomatophp/filament-subscriptions
we need the Media Library plugin to be installed and migrated you can use this command to publish the migration
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-migrations"
now you need to publish your migrations
php artisan vendor:publish --provider="Laravelcm\Subscriptions\SubscriptionServiceProvider"
after that please run this command
php artisan filament-subscriptions:install
finally register the plugin on /app/Providers/Filament/AdminPanelProvider.php
->plugin(\TomatoPHP\FilamentSubscriptions\FilamentSubscriptionsPlugin::make())
Using
now on your User.php model or any auth model you like you need to add this trait
namespace App\Models;
use Laravelcm\Subscriptions\Traits\HasPlanSubscriptions;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasPlanSubscriptions;
}
To configure the billing provider for your application, use the FilamentSubscriptionsProvider
:
use TomatoPHP\FilamentSubscriptions\Providers\FilamentSubscriptionsProvider;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->tenantBillingProvider(new FilamentSubscriptionsProvider());
}
This setup allows users to manage their billing through a link in the tenant menu.
Requiring a Subscription
To enforce a subscription requirement for any part of your application, use the requiresTenantSubscription()
method:
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->requiresTenantSubscription();
}
Users without an active subscription will be redirected to the billing page.
Register New Subscriper Type
you can register new subscriber type by using this code
use TomatoPHP\FilamentSubscriptions\Facades\FilamentSubscriptions;
public function boot()
{
FilamentSubscriptions::register(
\TomatoPHP\FilamentSubscriptions\Services\Contracts\Subscriber::make()
->name('User')
->model(\App\Models\User::class)
);
}
Use Events
we add events everywhere on the subscription process and here is the list of events
-
TomatoPHP\FilamentSubscriptions\Events\CancelPlan
-
TomatoPHP\FilamentSubscriptions\Events\ChangePlan
-
TomatoPHP\FilamentSubscriptions\Events\RequestPlan
-
TomatoPHP\FilamentSubscriptions\Events\SubscribePlan
all events have the same payload
return [
"old" => //Plan,
"new" => //Plan,
"subscription" => //Subscription,
]
Use Facade Hook
you can use the facade hook to add your custom logic to the subscription process
use TomatoPHP\FilamentSubscriptions\Facades\FilamentSubscriptions;
FilamentSubscriptions::afterSubscription(function (array $data){
// your logic here
});
FilamentSubscriptions::afterRenew(function (array $data){
// your logic here
});
FilamentSubscriptions::afterChange(function (array $data){
// your logic here
});
FilamentSubscriptions::afterCanceling(function (array $data){
// your logic here
});
Publish Assets
you can publish config file by use this command
php artisan vendor:publish --tag="filament-subscriptions-config"
you can publish views file by use this command
php artisan vendor:publish --tag="filament-subscriptions-views"
you can publish languages file by use this command
php artisan vendor:publish --tag="filament-subscriptions-lang"
Support
you can join our discord server to get support TomatoPHP
Docs
you can check docs of this package on Docs
Changelog
Please see CHANGELOG for more information on what has changed recently.
Security
Please see SECURITY for more information about security.
Credits
License
The MIT License (MIT). Please see License File for more information.