PHP code example of muhammad-nawlo / multitenant-plugin
1. Go to this page and download the library: Download muhammad-nawlo/multitenant-plugin library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
muhammad-nawlo / multitenant-plugin example snippets
use MuhammadNawlo\MultitenantPlugin\MultitenantPluginManager;
// In your panel configuration
$panel->plugins([
MultitenantPluginManager::make(),
]);
namespace App\Filament\Resources;
use Filament\Resources\Resource;
use MuhammadNawlo\MultitenantPlugin\Traits\TenantAwareResource;
class PostResource extends Resource
{
use TenantAwareResource;
// Your resource configuration...
}
namespace App\Filament\Resources;
use Filament\Resources\Resource;
use MuhammadNawlo\MultitenantPlugin\Traits\TenantAwareResource;
class PostResource extends Resource
{
use TenantAwareResource;
// Your resource configuration...
// This will automatically check tenant-specific permissions
// and scope data to the current tenant
}
namespace App\Filament\Pages;
use Filament\Pages\Page;
use MuhammadNawlo\MultitenantPlugin\Traits\TenantAwarePage;
class Dashboard extends Page
{
use TenantAwarePage;
// Your page configuration...
}
namespace App\Filament\Pages;
use Filament\Pages\Page;
use MuhammadNawlo\MultitenantPlugin\Traits\TenantAwarePage;
class Dashboard extends Page
{
use TenantAwarePage;
// Your page configuration...
// This will automatically check tenant-specific permissions
// and provide tenant context information
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Stancl\Tenancy\Database\Concerns\BelongsToTenant;
class Post extends Model
{
use BelongsToTenant;
// Your model configuration...
}
return [
// Tenant model class
'tenant_model' => \Stancl\Tenancy\Database\Models\Tenant::class,
// Navigation group for tenant resources
'navigation_group' => 'Tenant Management',
// Enable/disable features
'enable_dashboard' => true,
'enable_tenant_resource' => true,
// Auto-scope resources to current tenant
'auto_scope_resources' => true,
// Middleware configuration
'tenant_middleware' => ['web', 'auth', 'tenant'],
'central_middleware' => ['web', 'auth'],
];
// Get current tenant
$tenant = $this->getCurrentTenant();
// Get tenant ID
$tenantId = $this->getTenantId();
// Check if in tenant context
$isTenantContext = $this->isTenantContext();
// Scope query to current tenant
$query = $this->scopeToTenant($query);
// In your routes
Route::middleware(['web', 'auth', 'tenant'])->group(function () {
// Tenant-specific routes
});
Route::middleware(['web', 'auth'])->group(function () {
// Central administration routes
});
// Global permission
'view_any_post'
// Tenant-specific permission
'view_any_post_tenant-1'
'view_any_post_tenant-2'
// Check if user can view posts in current tenant
if (auth()->user()->can('view_any_post_' . $tenant->getTenantKey())) {
// User has permission for this specific tenant
}
use MuhammadNawlo\MultitenantPlugin\Services\TenantPermissionService;
$permissionService = app('tenant-permission-service');
// Check permission for current tenant
if ($permissionService->hasPermission('view_any_post')) {
// User has permission
}
// Get tenant-specific permission name
$permissionName = $permissionService->getTenantPermission('view_any_post');
// Returns: 'view_any_post_tenant-1' (if in tenant context)