diff --git a/app/Http/Controllers/API/UserController.php b/app/Http/Controllers/API/UserController.php index 146575552..f4f3cf250 100644 --- a/app/Http/Controllers/API/UserController.php +++ b/app/Http/Controllers/API/UserController.php @@ -25,9 +25,38 @@ class UserController extends BaseController * }) * @Response(200) */ - public function getUsers(Request $request) { + public function getUsers(Request $request) + { $users = Models\User::paginate(15); return $this->response->paginator($users, new UserTransformer); } + /** + * List Specific User + * + * Lists specific fields about a user or all fields pertaining to that user. + * + * @Get("/{id}/{fields}") + * @Versions({"v1"}) + * @Parameters({ + * @Parameter("id", type="integer", required=true, description="The ID of the user to get information on."), + * @Parameter("fields", type="string", required=false, description="A comma delimidated list of fields to include.") + * }) + * @Response(200) + */ + public function getUserByID(Request $request, $id, $fields = null) + { + $query = Models\User::where('id', $id); + + if (!is_null($fields)) { + foreach(explode(',', $fields) as $field) { + if (!empty($field)) { + $query->addSelect($field); + } + } + } + + return $query->first(); + } + } diff --git a/app/Http/Routes/APIRoutes.php b/app/Http/Routes/APIRoutes.php index 355a1a3b7..3525e6cd1 100644 --- a/app/Http/Routes/APIRoutes.php +++ b/app/Http/Routes/APIRoutes.php @@ -32,13 +32,14 @@ class APIRoutes $api->version('v1', ['middleware' => 'api.auth'], function ($api) { $api->get('users', [ - 'as' => 'api.auth.validate', + 'as' => 'api.users', 'uses' => 'Pterodactyl\Http\Controllers\API\UserController@getUsers' ]); - $api->get('users/{id}', function($id) { - return Models\User::findOrFail($id); - }); + $api->get('users/{id}/{fields?}', [ + 'as' => 'api.users.view', + 'uses' => 'Pterodactyl\Http\Controllers\API\UserController@getUserByID' + ]); });