diff --git a/app/Http/Controllers/API/Admin/ServerController.php b/app/Http/Controllers/API/Admin/ServerController.php index 7562e013d..111d33009 100644 --- a/app/Http/Controllers/API/Admin/ServerController.php +++ b/app/Http/Controllers/API/Admin/ServerController.php @@ -61,6 +61,7 @@ class ServerController extends Controller * Controller to handle returning information on a single server. * * @param \Illuminate\Http\Request $request + * @param int $id * @return array */ public function view(Request $request, $id) diff --git a/app/Http/Controllers/API/Admin/ServiceController.php b/app/Http/Controllers/API/Admin/ServiceController.php new file mode 100644 index 000000000..fbe911f14 --- /dev/null +++ b/app/Http/Controllers/API/Admin/ServiceController.php @@ -0,0 +1,74 @@ +. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +namespace Pterodactyl\Http\Controllers\API\Admin; + +use Fractal; +use Illuminate\Http\Request; +use Pterodactyl\Models\Service; +use Pterodactyl\Http\Controllers\Controller; +use Pterodactyl\Transformers\Admin\ServiceTransformer; + +class ServiceController extends Controller +{ + /** + * Controller to handle returning all locations on the system. + * + * @param \Illuminate\Http\Request $request + * @return array + */ + public function index(Request $request) + { + $this->authorize('service-list', $request->apiKey()); + + return Fractal::create() + ->collection(Service::all()) + ->transformWith(new ServiceTransformer($request)) + ->withResourceName('service') + ->toArray(); + } + + /** + * Controller to handle returning information on a single server. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return array + */ + public function view(Request $request, $id) + { + $this->authorize('service-view', $request->apiKey()); + + $service = Service::findOrFail($id); + $fractal = Fractal::create()->item($service); + + if ($request->input('include')) { + $fractal->parseIncludes(explode(',', $request->input('include'))); + } + + return $fractal->transformWith(new ServiceTransformer($request)) + ->withResourceName('service') + ->toArray(); + } +} diff --git a/app/Http/Controllers/API/Admin/UserController.php b/app/Http/Controllers/API/Admin/UserController.php index 1f0dfb69a..5d7ffdf09 100644 --- a/app/Http/Controllers/API/Admin/UserController.php +++ b/app/Http/Controllers/API/Admin/UserController.php @@ -32,6 +32,7 @@ use Pterodactyl\Exceptions\DisplayException; use Pterodactyl\Repositories\UserRepository; use Pterodactyl\Transformers\Admin\UserTransformer; use Pterodactyl\Exceptions\DisplayValidationException; +use League\Fractal\Pagination\IlluminatePaginatorAdapter; class UserController extends Controller { @@ -44,14 +45,12 @@ class UserController extends Controller public function index(Request $request) { $this->authorize('user-list', $request->apiKey()); + $users = User::paginate(50); - $fractal = Fractal::create()->collection(User::all()); - if ($request->input('include')) { - $fractal->parseIncludes(explode(',', $request->input('include'))); - } - - return $fractal->transformWith(new UserTransformer($request)) + return Fractal::create()->collection($users) + ->transformWith(new UserTransformer($request)) ->withResourceName('user') + ->paginateWith(new IlluminatePaginatorAdapter($users)) ->toArray(); } diff --git a/routes/api-admin.php b/routes/api-admin.php index d62510c94..b4aff6c53 100644 --- a/routes/api-admin.php +++ b/routes/api-admin.php @@ -97,3 +97,16 @@ Route::group(['prefix' => '/users'], function () { Route::delete('/{id}', 'UserController@delete'); }); + +/* +|-------------------------------------------------------------------------- +| Service Controller Routes +|-------------------------------------------------------------------------- +| +| Endpoint: /api/admin/services +| +*/ +Route::group(['prefix' => '/services'], function () { + Route::get('/', 'ServiceController@index'); + Route::get('/{id}', 'ServiceController@view'); +});