Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions app/Extensions/Features/FeatureSchemaInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

namespace App\Extensions\Features;

use App\Models\Server;
use App\Models\User;
use Filament\Actions\Action;

interface FeatureSchemaInterface
Expand All @@ -11,5 +13,7 @@ public function getListeners(): array;

public function getId(): string;

public function authorize(User $user, Server $server): bool;

public function getAction(): Action;
}
7 changes: 6 additions & 1 deletion app/Extensions/Features/Schemas/GSLTokenSchema.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
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;
Expand Down Expand Up @@ -37,6 +38,11 @@ public function getId(): string
return 'gsl_token';
}

public function authorize(User $user, Server $server): bool
{
return $user->can(SubuserPermission::StartupUpdate, $server);
}

/**
* @throws Exception
*/
Expand All @@ -55,7 +61,6 @@ public function getAction(): Action
->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')))),
Expand Down
7 changes: 6 additions & 1 deletion app/Extensions/Features/Schemas/JavaVersionSchema.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
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;
Expand Down Expand Up @@ -34,6 +35,11 @@ public function getId(): string
return 'java_version';
}

public function authorize(User $user, Server $server): bool
{
return $user->can(SubuserPermission::StartupDockerImage, $server);
}

public function getAction(): Action
{
/** @var Server $server */
Expand All @@ -44,7 +50,6 @@ public function getAction(): Action
->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')),
Expand Down
7 changes: 7 additions & 0 deletions app/Extensions/Features/Schemas/MinecraftEulaSchema.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -28,6 +30,11 @@ public function getId(): string
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())
Expand Down
7 changes: 7 additions & 0 deletions app/Extensions/Features/Schemas/PIDLimitSchema.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

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;

Expand All @@ -27,6 +29,11 @@ public function getId(): string
return 'pid_limit';
}

public function authorize(User $user, Server $server): bool
{
return true;
}

public function getAction(): Action
{
return Action::make($this->getId())
Expand Down
7 changes: 7 additions & 0 deletions app/Extensions/Features/Schemas/SteamDiskSpaceSchema.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -22,6 +24,11 @@ public function getId(): string
return 'steam_disk_space';
}

public function authorize(User $user, Server $server): bool
{
return true;
}

public function getAction(): Action
{
return Action::make($this->getId())
Expand Down
13 changes: 13 additions & 0 deletions app/Filament/Server/Pages/Console.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,15 @@ public function mount(): void
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;
}
Comment thread
lancepioch marked this conversation as resolved.

$this->cacheAction($feature->getAction());
}
}
Expand All @@ -82,6 +88,13 @@ public function mountFeature(string $data): void
return;
}

/** @var Server $server */
$server = Filament::getTenant();

if (!$feature->authorize(user(), $server)) {
return;
}

if ($this->getMountedAction()) {
$this->replaceMountedAction($feature->getId());
} else {
Expand Down
Loading