Files
online.tbbank.gov.tm-larave…/app/Providers/AppServiceProvider.php
2024-09-10 01:48:55 +05:00

87 lines
2.2 KiB
PHP

<?php
namespace App\Providers;
use App\Models\User;
use Dedoc\Scramble\Scramble;
use Dedoc\Scramble\Support\Generator\OpenApi;
use Dedoc\Scramble\Support\Generator\SecurityScheme;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
//
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Model::shouldBeStrict(! app()->isProduction());
Event::listen(
events: ['eloquent.created: *', 'eloquent.updated: *', 'eloquent.deleted: *'],
listener: fn (string $eventName, array $data) => storeResourceEvent($eventName, $data, request())
);
$this->loadMigrationsFrom($this->findModuleMigrations());
Gate::define('viewApiDocs', function (User $user) {
return $user->isMe() || in_array($user->username, [
'muhammet'
]);
});
Scramble::afterOpenApiGenerated(function (OpenApi $openApi) {
$openApi->secure(SecurityScheme::http('bearer'));
});
// $this->listenDB();
}
/**
* Find Module migrations
*
* @return array<int, string>
*/
public function findModuleMigrations(): array
{
/** @var array<int, string> */
$modulesDir = scandir(modules_path());
$migrationDirectories = [];
foreach ($modulesDir as $module) {
if (is_dir(modules_path($module.'/Database/Migrations'))) {
$migrationDirectories[] = modules_path($module.'/Database/Migrations');
}
}
return $migrationDirectories;
}
/**
* Write db queries
*/
public function listenDB(): void
{
if (! app()->isLocal()) {
return;
}
DB::listen(function ($query) {
Log::info($query->sql, $query->bindings, $query->time); // @phpstan-ignore-line
});
}
}