Skip to content

Commit 1b69d82

Browse files
committed
Don't return things a user shouldn't be able to see via the API includes
1 parent 9b16f58 commit 1b69d82

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

app/Transformers/Api/Client/DatabaseTransformer.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Pterodactyl\Models\Database;
66
use League\Fractal\Resource\Item;
7+
use Pterodactyl\Models\Permission;
78
use Illuminate\Contracts\Encryption\Encrypter;
89
use Pterodactyl\Contracts\Extensions\HashidsInterface;
910

@@ -65,12 +66,16 @@ public function transform(Database $model): array
6566
/**
6667
* Include the database password in the request.
6768
*
68-
* @param \Pterodactyl\Models\Database $model
69-
* @return \League\Fractal\Resource\Item
69+
* @param \Pterodactyl\Models\Database $database
70+
* @return \League\Fractal\Resource\Item|\League\Fractal\Resource\NullResource
7071
*/
71-
public function includePassword(Database $model): Item
72+
public function includePassword(Database $database): Item
7273
{
73-
return $this->item($model, function (Database $model) {
74+
if (!$this->getUser()->can(Permission::ACTION_DATABASE_VIEW_PASSWORD, $database->server)) {
75+
return $this->null();
76+
}
77+
78+
return $this->item($database, function (Database $model) {
7479
return [
7580
'password' => $this->encrypter->decrypt($model->password),
7681
];

app/Transformers/Api/Client/ServerTransformer.php

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
use Pterodactyl\Models\Server;
77
use Pterodactyl\Models\Subuser;
88
use Pterodactyl\Models\Allocation;
9+
use Pterodactyl\Models\Permission;
910
use Illuminate\Container\Container;
1011
use Pterodactyl\Models\EggVariable;
1112
use Pterodactyl\Services\Servers\StartupCommandService;
12-
use Pterodactyl\Transformers\Api\Client\EggVariableTransformer;
1313

1414
class ServerTransformer extends BaseClientTransformer
1515
{
@@ -76,11 +76,16 @@ public function transform(Server $server): array
7676
* Returns the allocations associated with this server.
7777
*
7878
* @param \Pterodactyl\Models\Server $server
79-
* @return \League\Fractal\Resource\Collection
79+
* @return \League\Fractal\Resource\Collection|\League\Fractal\Resource\NullResource
80+
*
8081
* @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException
8182
*/
8283
public function includeAllocations(Server $server)
8384
{
85+
if (! $this->getUser()->can(Permission::ACTION_ALLOCATION_READ, $server)) {
86+
return $this->null();
87+
}
88+
8489
return $this->collection(
8590
$server->allocations,
8691
$this->makeTransformer(AllocationTransformer::class),
@@ -90,11 +95,16 @@ public function includeAllocations(Server $server)
9095

9196
/**
9297
* @param \Pterodactyl\Models\Server $server
93-
* @return \League\Fractal\Resource\Collection
98+
* @return \League\Fractal\Resource\Collection|\League\Fractal\Resource\NullResource
99+
*
94100
* @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException
95101
*/
96102
public function includeVariables(Server $server)
97103
{
104+
if (! $this->getUser()->can(Permission::ACTION_STARTUP_READ, $server)) {
105+
return $this->null();
106+
}
107+
98108
return $this->collection(
99109
$server->variables->where('user_viewable', true),
100110
$this->makeTransformer(EggVariableTransformer::class),
@@ -118,11 +128,16 @@ public function includeEgg(Server $server)
118128
* Returns the subusers associated with this server.
119129
*
120130
* @param \Pterodactyl\Models\Server $server
121-
* @return \League\Fractal\Resource\Collection
131+
* @return \League\Fractal\Resource\Collection|\League\Fractal\Resource\NullResource
132+
*
122133
* @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException
123134
*/
124135
public function includeSubusers(Server $server)
125136
{
137+
if (! $this->getUser()->can(Permission::ACTION_USER_READ, $server)) {
138+
return $this->null();
139+
}
140+
126141
return $this->collection($server->subusers, $this->makeTransformer(SubuserTransformer::class), Subuser::RESOURCE_NAME);
127142
}
128143
}

0 commit comments

Comments
 (0)