Skip to content

Commit de8bbcd

Browse files
committed
Configuration for API pagination and includes on listing
1 parent 69dfd38 commit de8bbcd

File tree

4 files changed

+45
-17
lines changed

4 files changed

+45
-17
lines changed

app/Http/Controllers/API/Admin/NodeController.php

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
use Pterodactyl\Repositories\NodeRepository;
3333
use Pterodactyl\Transformers\Admin\NodeTransformer;
3434
use Pterodactyl\Exceptions\DisplayValidationException;
35+
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
3536

3637
class NodeController extends Controller
3738
{
@@ -45,14 +46,17 @@ public function index(Request $request)
4546
{
4647
$this->authorize('node-list', $request->apiKey());
4748

48-
$fractal = Fractal::create()->collection(Node::all());
49-
if ($request->input('include')) {
49+
$nodes = Node::paginate(config('pterodactyl.paginate.api.nodes'));
50+
$fractal = Fractal::create()->collection($nodes)
51+
->transformWith(new NodeTransformer($request))
52+
->withResourceName('user')
53+
->paginateWith(new IlluminatePaginatorAdapter($nodes));
54+
55+
if (config('pterodactyl.api.allow_includes_on_list') && $request->input('include')) {
5056
$fractal->parseIncludes(explode(',', $request->input('include')));
5157
}
5258

53-
return $fractal->transformWith(new NodeTransformer($request))
54-
->withResourceName('node')
55-
->toArray();
59+
return $fractal->toArray();
5660
}
5761

5862
/**

app/Http/Controllers/API/Admin/ServerController.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,17 @@ public function index(Request $request)
4747
{
4848
$this->authorize('server-list', $request->apiKey());
4949

50-
$servers = Server::paginate(20);
51-
52-
return Fractal::create()
53-
->collection($servers)
50+
$servers = Server::paginate(config('pterodactyl.paginate.api.servers'));
51+
$fractal = Fractal::create()->collection($servers)
5452
->transformWith(new ServerTransformer($request))
55-
->paginateWith(new IlluminatePaginatorAdapter($servers))
56-
->withResourceName('server')
57-
->toArray();
53+
->withResourceName('user')
54+
->paginateWith(new IlluminatePaginatorAdapter($servers));
55+
56+
if (config('pterodactyl.api.allow_includes_on_list') && $request->input('include')) {
57+
$fractal->parseIncludes(explode(',', $request->input('include')));
58+
}
59+
60+
return $fractal->toArray();
5861
}
5962

6063
/**

app/Http/Controllers/API/Admin/UserController.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,18 @@ class UserController extends Controller
4545
public function index(Request $request)
4646
{
4747
$this->authorize('user-list', $request->apiKey());
48-
$users = User::paginate(50);
4948

50-
return Fractal::create()->collection($users)
49+
$users = User::paginate(config('pterodactyl.paginate.api.users'));
50+
$fractal = Fractal::create()->collection($users)
5151
->transformWith(new UserTransformer($request))
5252
->withResourceName('user')
53-
->paginateWith(new IlluminatePaginatorAdapter($users))
54-
->toArray();
53+
->paginateWith(new IlluminatePaginatorAdapter($users));
54+
55+
if (config('pterodactyl.api.allow_includes_on_list') && $request->input('include')) {
56+
$fractal->parseIncludes(explode(',', $request->input('include')));
57+
}
58+
59+
return $fractal->toArray();
5560
}
5661

5762
/**

config/pterodactyl.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,24 @@
2626
*/
2727
'paginate' => [
2828
'frontend' => [
29-
'servers' => 15,
29+
'servers' => env('APP_PAGINATE_FRONT_SERVERS', 15),
3030
],
31+
'api' => [
32+
'nodes' => env('APP_PAGINATE_API_NODES', 25),
33+
'servers' => env('APP_PAGINATE_API_SERVERS', 25),
34+
'users' => env('APP_PAGINATE_API_USERS', 25),
35+
]
36+
],
37+
38+
/*
39+
|--------------------------------------------------------------------------
40+
| API Options
41+
|--------------------------------------------------------------------------
42+
|
43+
| Configuration options for the API.
44+
*/
45+
'api' => [
46+
'allow_includes_on_list' => env('API_ALLOW_INCLUDE_ON_LIST', false),
3147
],
3248

3349
/*

0 commit comments

Comments
 (0)