Skip to content

Commit ab09c7d

Browse files
committed
Fix couple of issues with /api/application/servers
1 parent 20c594a commit ab09c7d

File tree

3 files changed

+108
-4
lines changed

3 files changed

+108
-4
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@ This file is a running track of new features and fixes to each version of the pa
44
This project follows [Semantic Versioning](http://semver.org) guidelines.
55

66
## v0.7.16 (Derelict Dermodactylus)
7+
### Fixed
8+
* Fixed the /api/application/servers endpoint erroring when including subusers or egg
9+
710
### Added
811
* The application API now includes the egg's name in the egg model's response.
12+
* The /api/application/servers endpoint can now include server's databases and subusers
913

1014
## v0.7.15 (Derelict Dermodactylus)
1115
### Fixed

app/Transformers/Api/Application/ServerTransformer.php

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class ServerTransformer extends BaseTransformer
2828
'variables',
2929
'location',
3030
'node',
31+
'databases',
3132
];
3233

3334
/**
@@ -131,7 +132,7 @@ public function includeSubusers(Server $server)
131132

132133
$server->loadMissing('subusers');
133134

134-
return $this->collection($server->getRelation('subusers'), $this->makeTransformer(UserTransformer::class), 'user');
135+
return $this->collection($server->getRelation('subusers'), $this->makeTransformer(SubuserTransformer::class), 'user');
135136
}
136137

137138
/**
@@ -195,22 +196,22 @@ public function includeNest(Server $server)
195196
}
196197

197198
/**
198-
* Return a generic array with service option information for this server.
199+
* Return a generic array with egg information for this server.
199200
*
200201
* @param \Pterodactyl\Models\Server $server
201202
* @return \League\Fractal\Resource\Item|\League\Fractal\Resource\NullResource
202203
*
203204
* @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException
204205
*/
205-
public function includeOption(Server $server)
206+
public function includeEgg(Server $server)
206207
{
207208
if (! $this->authorize(AdminAcl::RESOURCE_EGGS)) {
208209
return $this->null();
209210
}
210211

211212
$server->loadMissing('egg');
212213

213-
return $this->item($server->getRelation('egg'), $this->makeTransformer(EggVariableTransformer::class), 'egg');
214+
return $this->item($server->getRelation('egg'), $this->makeTransformer(EggTransformer::class), 'egg');
214215
}
215216

216217
/**
@@ -269,4 +270,23 @@ public function includeNode(Server $server)
269270

270271
return $this->item($server->getRelation('node'), $this->makeTransformer(NodeTransformer::class), 'node');
271272
}
273+
274+
/**
275+
* Return a generic array with database information for this server.
276+
*
277+
* @param \Pterodactyl\Models\Server $server
278+
* @return \League\Fractal\Resource\Collection|\League\Fractal\Resource\NullResource
279+
*
280+
* @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException
281+
*/
282+
public function includeDatabases(Server $server)
283+
{
284+
if (! $this->authorize(AdminAcl::RESOURCE_SERVER_DATABASES)) {
285+
return $this->null();
286+
}
287+
288+
$server->loadMissing('databases');
289+
290+
return $this->collection($server->getRelation('databases'), $this->makeTransformer(ServerDatabaseTransformer::class), 'databases');
291+
}
272292
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<?php
2+
3+
namespace Pterodactyl\Transformers\Api\Application;
4+
5+
use Pterodactyl\Models\Subuser;
6+
use Pterodactyl\Services\Acl\Api\AdminAcl;
7+
8+
class SubuserTransformer extends BaseTransformer
9+
{
10+
/**
11+
* List of resources that can be included.
12+
*
13+
* @var array
14+
*/
15+
protected $availableIncludes = ['user', 'server'];
16+
17+
/**
18+
* Return the resource name for the JSONAPI output.
19+
*
20+
* @return string
21+
*/
22+
public function getResourceName(): string
23+
{
24+
return Subuser::RESOURCE_NAME;
25+
}
26+
27+
/**
28+
* Return a transformed Subuser model that can be consumed by external services.
29+
*
30+
* @param \Pterodactyl\Models\Subuser $subuser
31+
* @return array
32+
*/
33+
public function transform(Subuser $subuser): array
34+
{
35+
return [
36+
'id' => $subuser->id,
37+
'permissions' => $subuser->permissions->toArray(),
38+
'created_at' => $this->formatTimestamp($subuser->created_at),
39+
'updated_at' => $this->formatTimestamp($subuser->updated_at),
40+
];
41+
}
42+
43+
/**
44+
* Return a generic item of user for this subuser.
45+
*
46+
* @param \Pterodactyl\Models\Subuser $subuser
47+
* @return \League\Fractal\Resource\Item|\League\Fractal\Resource\NullResource
48+
*
49+
* @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException
50+
*/
51+
public function includeUser(Subuser $subuser)
52+
{
53+
if (! $this->authorize(AdminAcl::RESOURCE_USERS)) {
54+
return $this->null();
55+
}
56+
57+
$subuser->loadMissing('user');
58+
59+
return $this->item($subuser->getRelation('user'), $this->makeTransformer(UserTransformer::class), 'user');
60+
}
61+
62+
/**
63+
* Return a generic item of server for this subuser.
64+
*
65+
* @param \Pterodactyl\Models\Subuser $subuser
66+
* @return \League\Fractal\Resource\Item|\League\Fractal\Resource\NullResource
67+
*
68+
* @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException
69+
*/
70+
public function includeServer(Subuser $subuser)
71+
{
72+
if (! $this->authorize(AdminAcl::RESOURCE_SERVERS)) {
73+
return $this->null();
74+
}
75+
76+
$subuser->loadMissing('server');
77+
78+
return $this->item($subuser->getRelation('server'), $this->makeTransformer(ServerTransformer::class), 'server');
79+
}
80+
}

0 commit comments

Comments
 (0)