Compare commits

...

6 Commits

Author SHA1 Message Date
Boy132
b9f0eff6b2 Do not throw exception when trying to delete a failed backup (#2458) 2026-07-17 09:42:26 +02:00
Boy132
5b6f497863 Add interface function to auto fill plugin settings form (#2453) 2026-07-17 08:49:34 +02:00
Boy132
d2dc6b69c8 Add authorize check to egg feature modals (#2459) 2026-07-17 08:35:58 +02:00
Boy132
2b34cc4d3c Fix navigation groups (#2455) 2026-07-17 08:34:29 +02:00
Dmytro Pashchenko
c6d777f25d Add DB_SCHEMA support for PostgreSQL connections (#2449) 2026-07-16 20:34:57 -04:00
Lance Pioch
4950bbd06e Laravel 13.20.0 Shift (#2454)
Co-authored-by: Shift <shift@laravelshift.com>
2026-07-16 20:27:21 -04:00
20 changed files with 156 additions and 74 deletions

View File

@@ -24,6 +24,7 @@ class DatabaseSettingsCommand extends Command
protected $signature = 'p:environment:database
{--driver= : The database driver backend to use.}
{--database= : The database to use.}
{--schema= : The schema to use for the PostgreSQL database.}
{--host= : The connection address for the MySQL/ MariaDB/ PostgreSQL server.}
{--port= : The connection port for the MySQL/ MariaDB/ PostgreSQL server.}
{--username= : Username to use when connecting to the MySQL/ MariaDB/ PostgreSQL server.}
@@ -196,6 +197,11 @@ class DatabaseSettingsCommand extends Command
config('database.connections.pgsql.database', 'panel')
);
$this->variables['DB_SCHEMA'] = $this->option('schema') ?? $this->ask(
'Database Schema',
config('database.connections.pgsql.search_path', 'public')
);
$this->output->note(trans('commands.database_settings.DB_USERNAME_note'));
$this->variables['DB_USERNAME'] = $this->option('username') ?? $this->ask(
'Database Username',
@@ -224,7 +230,7 @@ class DatabaseSettingsCommand extends Command
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'search_path' => 'public',
'search_path' => $this->variables['DB_SCHEMA'],
'sslmode' => 'prefer',
]);

View File

@@ -6,6 +6,11 @@ use Filament\Schemas\Components\Component;
interface HasPluginSettings
{
/**
* @return array<string, mixed>
*/
public function getSettingsFormData(): array;
/**
* @return Component[]
*/

View File

@@ -2,6 +2,8 @@
namespace App\Extensions\Features;
use App\Models\Server;
use App\Models\User;
use Filament\Actions\Action;
interface FeatureSchemaInterface
@@ -11,5 +13,7 @@ interface FeatureSchemaInterface
public function getId(): string;
public function authorize(User $user, Server $server): bool;
public function getAction(): Action;
}

View File

@@ -8,6 +8,7 @@ use App\Extensions\Features\FeatureSchemaInterface;
use App\Facades\Activity;
use App\Models\Server;
use App\Models\ServerVariable;
use App\Models\User;
use App\Repositories\Daemon\DaemonServerRepository;
use Closure;
use Exception;
@@ -37,6 +38,11 @@ class GSLTokenSchema implements FeatureSchemaInterface
return 'gsl_token';
}
public function authorize(User $user, Server $server): bool
{
return $user->can(SubuserPermission::StartupUpdate, $server);
}
/**
* @throws Exception
*/
@@ -55,7 +61,6 @@ class GSLTokenSchema implements FeatureSchemaInterface
->modalHeading(trans('server/feature.gsl_token.heading'))
->modalDescription(trans('server/feature.gsl_token.description'))
->modalSubmitActionLabel(trans('server/feature.gsl_token.submit'))
->disabledSchema(fn () => !user()?->can(SubuserPermission::StartupUpdate, $server))
->schema([
TextEntry::make('info')
->label(new HtmlString(Blade::render(trans('server/feature.gsl_token.info')))),

View File

@@ -6,6 +6,7 @@ use App\Enums\SubuserPermission;
use App\Extensions\Features\FeatureSchemaInterface;
use App\Facades\Activity;
use App\Models\Server;
use App\Models\User;
use App\Repositories\Daemon\DaemonServerRepository;
use Exception;
use Filament\Actions\Action;
@@ -34,6 +35,11 @@ class JavaVersionSchema implements FeatureSchemaInterface
return 'java_version';
}
public function authorize(User $user, Server $server): bool
{
return $user->can(SubuserPermission::StartupDockerImage, $server);
}
public function getAction(): Action
{
/** @var Server $server */
@@ -44,7 +50,6 @@ class JavaVersionSchema implements FeatureSchemaInterface
->modalHeading(trans('server/feature.java_version.heading'))
->modalDescription(trans('server/feature.java_version.description'))
->modalSubmitActionLabel(trans('server/feature.java_version.submit'))
->disabledSchema(fn () => !user()?->can(SubuserPermission::StartupDockerImage, $server))
->schema([
TextEntry::make('java')
->label(trans('server/feature.java_version.select_version')),

View File

@@ -2,8 +2,10 @@
namespace App\Extensions\Features\Schemas;
use App\Enums\SubuserPermission;
use App\Extensions\Features\FeatureSchemaInterface;
use App\Models\Server;
use App\Models\User;
use App\Repositories\Daemon\DaemonFileRepository;
use App\Repositories\Daemon\DaemonServerRepository;
use Exception;
@@ -28,6 +30,11 @@ class MinecraftEulaSchema implements FeatureSchemaInterface
return 'eula';
}
public function authorize(User $user, Server $server): bool
{
return $user->can(SubuserPermission::FileUpdate, $server);
}
public function getAction(): Action
{
return Action::make($this->getId())

View File

@@ -4,6 +4,8 @@ namespace App\Extensions\Features\Schemas;
use App\Enums\TablerIcon;
use App\Extensions\Features\FeatureSchemaInterface;
use App\Models\Server;
use App\Models\User;
use Filament\Actions\Action;
use Illuminate\Support\HtmlString;
@@ -27,6 +29,11 @@ class PIDLimitSchema implements FeatureSchemaInterface
return 'pid_limit';
}
public function authorize(User $user, Server $server): bool
{
return true;
}
public function getAction(): Action
{
return Action::make($this->getId())

View File

@@ -3,6 +3,8 @@
namespace App\Extensions\Features\Schemas;
use App\Extensions\Features\FeatureSchemaInterface;
use App\Models\Server;
use App\Models\User;
use Filament\Actions\Action;
use Illuminate\Support\HtmlString;
@@ -22,6 +24,11 @@ class SteamDiskSpaceSchema implements FeatureSchemaInterface
return 'steam_disk_space';
}
public function authorize(User $user, Server $server): bool
{
return true;
}
public function getAction(): Action
{
return Action::make($this->getId())

View File

@@ -34,7 +34,7 @@ class EggResource extends Resource
public static function getNavigationGroup(): ?string
{
if (user()?->getCustomization(CustomizationKey::TopNavigation)) {
if (user()?->getCustomization(CustomizationKey::TopNavigation) === 'topbar') {
return null;
}

View File

@@ -46,7 +46,7 @@ class NodeResource extends Resource
public static function getNavigationGroup(): ?string
{
if (user()?->getCustomization(CustomizationKey::TopNavigation)) {
if (user()?->getCustomization(CustomizationKey::TopNavigation) === 'topbar') {
return null;
}

View File

@@ -113,6 +113,7 @@ class PluginResource extends Resource
->color('primary')
->visible(fn (Plugin $plugin) => $plugin->status === PluginStatus::Enabled && $plugin->hasSettings())
->schema(fn (Plugin $plugin) => $plugin->getSettingsForm())
->fillForm(fn (Plugin $plugin) => $plugin->getSettingsFormData())
->action(fn (array $data, Plugin $plugin) => $plugin->saveSettings($data))
->slideOver(),
ActionGroup::make([

View File

@@ -67,7 +67,7 @@ class RoleResource extends Resource
public static function getNavigationGroup(): ?string
{
return user()?->getCustomization(CustomizationKey::TopNavigation) ? trans('admin/dashboard.advanced') : trans('admin/dashboard.user');
return user()?->getCustomization(CustomizationKey::TopNavigation) === 'topbar' ? trans('admin/dashboard.advanced') : trans('admin/dashboard.user');
}
public static function getNavigationBadge(): ?string

View File

@@ -50,7 +50,7 @@ class ServerResource extends Resource
public static function getNavigationGroup(): ?string
{
if (user()?->getCustomization(CustomizationKey::TopNavigation)) {
if (user()?->getCustomization(CustomizationKey::TopNavigation) === 'topbar') {
return null;
}

View File

@@ -91,7 +91,7 @@ class UserResource extends Resource
public static function getNavigationGroup(): ?string
{
if (user()?->getCustomization(CustomizationKey::TopNavigation)) {
if (user()?->getCustomization(CustomizationKey::TopNavigation) === 'topbar') {
return null;
}

View File

@@ -64,9 +64,15 @@ class Console extends Page
public function boot(FeatureService $featureService): void
{
$this->featureService = $featureService;
/** @var Server $server */
$server = Filament::getTenant();
foreach ($featureService->getActiveSchemas($server->egg->features) as $feature) {
if (!$feature->authorize(user(), $server)) {
continue;
}
$this->cacheAction($feature->getAction());
}
}
@@ -82,6 +88,13 @@ class Console extends Page
return;
}
/** @var Server $server */
$server = Filament::getTenant();
if (!$feature->authorize(user(), $server)) {
return;
}
if ($this->getMountedAction()) {
$this->replaceMountedAction($feature->getId());
} else {

View File

@@ -335,6 +335,21 @@ class Plugin extends Model implements HasPluginSettings
return false;
}
/** @return array<string, mixed> */
public function getSettingsFormData(): array
{
try {
$pluginObject = new ($this->fullClass());
if ($pluginObject instanceof HasPluginSettings) {
return $pluginObject->getSettingsFormData();
}
} catch (Exception) {
}
return [];
}
/** @return Component[] */
public function getSettingsForm(): array
{

View File

@@ -35,7 +35,11 @@ class DeleteBackupService
}
$this->connection->transaction(function () use ($schema, $backup) {
$schema->deleteBackup($backup);
try {
$schema->deleteBackup($backup);
} catch (Exception $exception) {
throw_if($backup->is_successful, $exception);
}
$backup->delete();
});

View File

@@ -16,7 +16,7 @@
"filament/filament": "^5.6",
"gboquizosanchez/filament-log-viewer": "^2.3",
"guzzlehttp/guzzle": "^7.13",
"laravel/framework": "^13.19",
"laravel/framework": "^13.20",
"laravel/helpers": "^1.8",
"laravel/passkeys": "^0.2",
"laravel/sanctum": "^4.3",

129
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "d283be708c595af317f07d7ac6c0d092",
"content-hash": "2905567ddd84041198a2f8120d3e5f22",
"packages": [
{
"name": "anourvalar/eloquent-serialize",
@@ -127,16 +127,16 @@
},
{
"name": "aws/aws-sdk-php",
"version": "3.388.0",
"version": "3.388.5",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "6dd9a0674641ef7d302a50cc8f275eb443182dc9"
"reference": "6104783c60d9134e7ceaeef03997767a547462b8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/6dd9a0674641ef7d302a50cc8f275eb443182dc9",
"reference": "6dd9a0674641ef7d302a50cc8f275eb443182dc9",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/6104783c60d9134e7ceaeef03997767a547462b8",
"reference": "6104783c60d9134e7ceaeef03997767a547462b8",
"shasum": ""
},
"require": {
@@ -218,9 +218,9 @@
"support": {
"forum": "https://github.com/aws/aws-sdk-php/discussions",
"issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.388.0"
"source": "https://github.com/aws/aws-sdk-php/tree/3.388.5"
},
"time": "2026-07-07T18:11:48+00:00"
"time": "2026-07-13T18:09:02+00:00"
},
{
"name": "blade-ui-kit/blade-heroicons",
@@ -870,16 +870,16 @@
},
{
"name": "dedoc/scramble",
"version": "v0.13.31",
"version": "v0.13.34",
"source": {
"type": "git",
"url": "https://github.com/dedoc/scramble.git",
"reference": "422c759a26395933be308aec5eeeeae0f78229cf"
"reference": "af86ba277ee71640215ec4715bac1aa04e0767f6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dedoc/scramble/zipball/422c759a26395933be308aec5eeeeae0f78229cf",
"reference": "422c759a26395933be308aec5eeeeae0f78229cf",
"url": "https://api.github.com/repos/dedoc/scramble/zipball/af86ba277ee71640215ec4715bac1aa04e0767f6",
"reference": "af86ba277ee71640215ec4715bac1aa04e0767f6",
"shasum": ""
},
"require": {
@@ -939,7 +939,7 @@
],
"support": {
"issues": "https://github.com/dedoc/scramble/issues",
"source": "https://github.com/dedoc/scramble/tree/v0.13.31"
"source": "https://github.com/dedoc/scramble/tree/v0.13.34"
},
"funding": [
{
@@ -947,7 +947,7 @@
"type": "github"
}
],
"time": "2026-07-07T14:30:53+00:00"
"time": "2026-07-12T08:47:55+00:00"
},
{
"name": "dflydev/dot-access-data",
@@ -2121,22 +2121,22 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "7.13.2",
"version": "7.14.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "bcd989ad36c92d42a3715379af91f2defee5b8dd"
"reference": "6b1d2429a2c312474c523aa9017fba0c07b5f4a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/bcd989ad36c92d42a3715379af91f2defee5b8dd",
"reference": "bcd989ad36c92d42a3715379af91f2defee5b8dd",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/6b1d2429a2c312474c523aa9017fba0c07b5f4a0",
"reference": "6b1d2429a2c312474c523aa9017fba0c07b5f4a0",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^2.5",
"guzzlehttp/psr7": "^2.12.3",
"guzzlehttp/promises": "^2.5.1",
"guzzlehttp/psr7": "^2.12.5",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.5 || ^3.0",
@@ -2229,7 +2229,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.13.2"
"source": "https://github.com/guzzle/guzzle/tree/7.14.1"
},
"funding": [
{
@@ -2245,20 +2245,20 @@
"type": "tidelift"
}
],
"time": "2026-07-05T19:00:11+00:00"
"time": "2026-07-13T01:32:54+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "2.5.0",
"version": "2.5.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "4360e982f87f5f258bf872d094647791db2f4c8e"
"reference": "9ad1e4fc607446a055b95870c7f668e93b5cff29"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/4360e982f87f5f258bf872d094647791db2f4c8e",
"reference": "4360e982f87f5f258bf872d094647791db2f4c8e",
"url": "https://api.github.com/repos/guzzle/promises/zipball/9ad1e4fc607446a055b95870c7f668e93b5cff29",
"reference": "9ad1e4fc607446a055b95870c7f668e93b5cff29",
"shasum": ""
},
"require": {
@@ -2313,7 +2313,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/2.5.0"
"source": "https://github.com/guzzle/promises/tree/2.5.1"
},
"funding": [
{
@@ -2329,20 +2329,20 @@
"type": "tidelift"
}
],
"time": "2026-06-02T12:23:43+00:00"
"time": "2026-07-08T15:48:39+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.12.3",
"version": "2.12.5",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d"
"reference": "9365d578a9fd1552ad6ca9c3cb530708526feb09"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/7ec62dc3f44aa218487dbed81a9bf9bc647be55d",
"reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/9365d578a9fd1552ad6ca9c3cb530708526feb09",
"reference": "9365d578a9fd1552ad6ca9c3cb530708526feb09",
"shasum": ""
},
"require": {
@@ -2432,7 +2432,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.12.3"
"source": "https://github.com/guzzle/psr7/tree/2.12.5"
},
"funding": [
{
@@ -2448,20 +2448,20 @@
"type": "tidelift"
}
],
"time": "2026-06-23T15:21:08+00:00"
"time": "2026-07-13T01:27:20+00:00"
},
{
"name": "guzzlehttp/uri-template",
"version": "v1.0.8",
"version": "v1.0.9",
"source": {
"type": "git",
"url": "https://github.com/guzzle/uri-template.git",
"reference": "9c19128923b05a5d7355e5d2318d7808b7e33bbd"
"reference": "d7580af6d3f8384325d9cd3e99b21c3ed1848176"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/uri-template/zipball/9c19128923b05a5d7355e5d2318d7808b7e33bbd",
"reference": "9c19128923b05a5d7355e5d2318d7808b7e33bbd",
"url": "https://api.github.com/repos/guzzle/uri-template/zipball/d7580af6d3f8384325d9cd3e99b21c3ed1848176",
"reference": "d7580af6d3f8384325d9cd3e99b21c3ed1848176",
"shasum": ""
},
"require": {
@@ -2518,7 +2518,7 @@
],
"support": {
"issues": "https://github.com/guzzle/uri-template/issues",
"source": "https://github.com/guzzle/uri-template/tree/v1.0.8"
"source": "https://github.com/guzzle/uri-template/tree/v1.0.9"
},
"funding": [
{
@@ -2534,7 +2534,7 @@
"type": "tidelift"
}
],
"time": "2026-06-23T13:02:23+00:00"
"time": "2026-07-08T16:19:22+00:00"
},
{
"name": "kirschbaum-development/eloquent-power-joins",
@@ -2601,16 +2601,16 @@
},
{
"name": "laravel/framework",
"version": "v13.19.0",
"version": "v13.20.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "514502b38e11bd676ecf83b271c9452cc7500f16"
"reference": "b9d1bccad5fbc32578dca22566bb11e7c0e545d7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/514502b38e11bd676ecf83b271c9452cc7500f16",
"reference": "514502b38e11bd676ecf83b271c9452cc7500f16",
"url": "https://api.github.com/repos/laravel/framework/zipball/b9d1bccad5fbc32578dca22566bb11e7c0e545d7",
"reference": "b9d1bccad5fbc32578dca22566bb11e7c0e545d7",
"shasum": ""
},
"require": {
@@ -2689,6 +2689,7 @@
"illuminate/filesystem": "self.version",
"illuminate/hashing": "self.version",
"illuminate/http": "self.version",
"illuminate/image": "self.version",
"illuminate/json-schema": "self.version",
"illuminate/log": "self.version",
"illuminate/macroable": "self.version",
@@ -2715,6 +2716,7 @@
"ext-gmp": "*",
"fakerphp/faker": "^1.24",
"guzzlehttp/psr7": "^2.9",
"intervention/image": "^4.0",
"laravel/pint": "^1.18",
"league/flysystem-aws-s3-v3": "^3.25.1",
"league/flysystem-ftp": "^3.25.1",
@@ -2751,6 +2753,7 @@
"ext-redis": "Required to use the Redis cache and queue drivers (^4.0 || ^5.0 || ^6.0).",
"fakerphp/faker": "Required to generate fake data using the fake() helper (^1.23).",
"filp/whoops": "Required for friendly error pages in development (^2.14.3).",
"intervention/image": "Required to use the image processing features (^4.0).",
"laravel/tinker": "Required to use the tinker console command (^2.0).",
"league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).",
"league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).",
@@ -2821,7 +2824,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2026-07-07T14:13:33+00:00"
"time": "2026-07-14T14:22:22+00:00"
},
{
"name": "laravel/helpers",
@@ -3410,16 +3413,16 @@
},
{
"name": "league/commonmark",
"version": "2.8.2",
"version": "2.8.3",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
"reference": "59fb075d2101740c337c7216e3f32b36c204218b"
"reference": "1902f60f984235023acbe03db6ad614a37b3c3e7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/59fb075d2101740c337c7216e3f32b36c204218b",
"reference": "59fb075d2101740c337c7216e3f32b36c204218b",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/1902f60f984235023acbe03db6ad614a37b3c3e7",
"reference": "1902f60f984235023acbe03db6ad614a37b3c3e7",
"shasum": ""
},
"require": {
@@ -3441,8 +3444,8 @@
"github/gfm": "0.29.0",
"michelf/php-markdown": "^1.4 || ^2.0",
"nyholm/psr7": "^1.5",
"phpstan/phpstan": "^1.8.2",
"phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0",
"phpstan/phpstan": "^2.0.0",
"phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0 || ^12.0.0 || ^13.0.0",
"scrutinizer/ocular": "^1.8.1",
"symfony/finder": "^5.3 | ^6.0 | ^7.0 || ^8.0",
"symfony/process": "^5.4 | ^6.0 | ^7.0 || ^8.0",
@@ -3513,7 +3516,7 @@
"type": "tidelift"
}
],
"time": "2026-03-19T13:16:38+00:00"
"time": "2026-07-12T15:29:16+00:00"
},
{
"name": "league/config",
@@ -3995,16 +3998,16 @@
},
{
"name": "league/mime-type-detection",
"version": "1.16.0",
"version": "1.17.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/mime-type-detection.git",
"reference": "2d6702ff215bf922936ccc1ad31007edc76451b9"
"reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9",
"reference": "2d6702ff215bf922936ccc1ad31007edc76451b9",
"url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/f5f47eff7c48ed1003069a2ca67f316fb4021c76",
"reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76",
"shasum": ""
},
"require": {
@@ -4014,7 +4017,7 @@
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.2",
"phpstan/phpstan": "^0.12.68",
"phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
"phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0 || ^11.0 || ^12.0"
},
"type": "library",
"autoload": {
@@ -4035,7 +4038,7 @@
"description": "Mime-type detection for Flysystem",
"support": {
"issues": "https://github.com/thephpleague/mime-type-detection/issues",
"source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0"
"source": "https://github.com/thephpleague/mime-type-detection/tree/1.17.0"
},
"funding": [
{
@@ -4047,7 +4050,7 @@
"type": "tidelift"
}
],
"time": "2024-09-21T08:32:55+00:00"
"time": "2026-07-09T11:49:27+00:00"
},
{
"name": "league/oauth1-client",
@@ -4765,16 +4768,16 @@
},
{
"name": "nesbot/carbon",
"version": "3.13.0",
"version": "3.13.1",
"source": {
"type": "git",
"url": "https://github.com/CarbonPHP/carbon.git",
"reference": "40f6618f052df16b545f626fbf9a878e6497d16a"
"reference": "2937ad3d1d2c506fd2bc97d571438a95641f44e2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/40f6618f052df16b545f626fbf9a878e6497d16a",
"reference": "40f6618f052df16b545f626fbf9a878e6497d16a",
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/2937ad3d1d2c506fd2bc97d571438a95641f44e2",
"reference": "2937ad3d1d2c506fd2bc97d571438a95641f44e2",
"shasum": ""
},
"require": {
@@ -4866,7 +4869,7 @@
"type": "tidelift"
}
],
"time": "2026-06-18T13:49:15+00:00"
"time": "2026-07-09T18:23:49+00:00"
},
{
"name": "nette/php-generator",

View File

@@ -101,7 +101,7 @@ return [
'charset' => env('DB_CHARSET', 'utf8'),
'prefix' => '',
'prefix_indexes' => true,
'search_path' => 'public',
'search_path' => env('DB_SCHEMA', 'public'),
'sslmode' => 'prefer',
],