Server IP : 103.191.208.50 / Your IP : 216.73.216.53 Web Server : LiteSpeed System : Linux orion.herosite.pro 4.18.0-553.53.1.lve.el8.x86_64 #1 SMP Wed May 28 17:01:02 UTC 2025 x86_64 User : celkcksm ( 1031) PHP Version : 7.4.33 Disable Function : show_source, system, shell_exec, passthru, popen, exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/celkcksm/cms.ncriptech.com/../hrms.ncriptech.com/app/Providers/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
<?php declare(strict_types=1); namespace App\Providers; use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; use Stancl\JobPipeline\JobPipeline; use Stancl\Tenancy\Events; use Stancl\Tenancy\Jobs; use Stancl\Tenancy\Listeners; use Stancl\Tenancy\Middleware; class TenancyServiceProvider extends ServiceProvider { // By default, no namespace is used to support the callable array syntax. public static string $controllerNamespace = ''; public function events() { return [ // Tenant events Events\CreatingTenant::class => [], Events\TenantCreated::class => [ JobPipeline::make([ Jobs\CreateDatabase::class, Jobs\MigrateDatabase::class, Jobs\SeedDatabase::class, // Your own jobs to prepare the tenant. // Provision API keys, create S3 buckets, anything you want! ])->send(function (Events\TenantCreated $event) { return $event->tenant; })->shouldBeQueued(false), // `false` by default, but you probably want to make this `true` for production. ], Events\SavingTenant::class => [], Events\TenantSaved::class => [], Events\UpdatingTenant::class => [], Events\TenantUpdated::class => [], Events\DeletingTenant::class => [], Events\TenantDeleted::class => [ JobPipeline::make([ Jobs\DeleteDatabase::class, ])->send(function (Events\TenantDeleted $event) { return $event->tenant; })->shouldBeQueued(false), // `false` by default, but you probably want to make this `true` for production. ], // Domain events Events\CreatingDomain::class => [], Events\DomainCreated::class => [], Events\SavingDomain::class => [], Events\DomainSaved::class => [], Events\UpdatingDomain::class => [], Events\DomainUpdated::class => [], Events\DeletingDomain::class => [], Events\DomainDeleted::class => [], // Database events Events\DatabaseCreated::class => [], Events\DatabaseMigrated::class => [], Events\DatabaseSeeded::class => [], Events\DatabaseRolledBack::class => [], Events\DatabaseDeleted::class => [], // Tenancy events Events\InitializingTenancy::class => [], Events\TenancyInitialized::class => [ Listeners\BootstrapTenancy::class, ], Events\EndingTenancy::class => [], Events\TenancyEnded::class => [ Listeners\RevertToCentralContext::class, ], Events\BootstrappingTenancy::class => [], Events\TenancyBootstrapped::class => [], Events\RevertingToCentralContext::class => [], Events\RevertedToCentralContext::class => [], // Resource syncing Events\SyncedResourceSaved::class => [ Listeners\UpdateSyncedResource::class, ], // Fired only when a synced resource is changed in a different DB than the origin DB (to avoid infinite loops) Events\SyncedResourceChangedInForeignDatabase::class => [], ]; } public function register() { // } public function boot() { $this->bootEvents(); $this->mapRoutes(); $this->makeTenancyMiddlewareHighestPriority(); } protected function bootEvents() { foreach ($this->events() as $event => $listeners) { foreach ($listeners as $listener) { if ($listener instanceof JobPipeline) { $listener = $listener->toListener(); } Event::listen($event, $listener); } } } protected function mapRoutes() { if (file_exists(base_path('routes/tenant.php'))) { Route::namespace(static::$controllerNamespace) ->group(base_path('routes/tenant.php')); } Route::middleware('api') ->prefix('api') ->group(base_path('routes/api.php')); Route::middleware('web') ->group(base_path('routes/web.php')); } protected function makeTenancyMiddlewareHighestPriority() { $tenancyMiddleware = [ // Even higher priority than the initialization middleware Middleware\PreventAccessFromCentralDomains::class, Middleware\InitializeTenancyByDomain::class, Middleware\InitializeTenancyBySubdomain::class, Middleware\InitializeTenancyByDomainOrSubdomain::class, Middleware\InitializeTenancyByPath::class, Middleware\InitializeTenancyByRequestData::class, ]; foreach (array_reverse($tenancyMiddleware) as $middleware) { $this->app[\Illuminate\Contracts\Http\Kernel::class]->prependToMiddlewarePriority($middleware); } } }