diff --git a/app/Auth/UserRepo.php b/app/Auth/UserRepo.php index e437ff1e3..89d5ba4b7 100644 --- a/app/Auth/UserRepo.php +++ b/app/Auth/UserRepo.php @@ -61,6 +61,14 @@ class UserRepo return User::query()->with('roles', 'avatar')->orderBy('name', 'asc')->get(); } + /** + * Get all users as Builder for API + */ + public function getUsersBuilder(): Builder + { + $query = User::query()->select(['*']); + return $query; + } /** * Get all the users with their permissions in a paginated format. */ diff --git a/app/Http/Controllers/Api/UserApiController.php b/app/Http/Controllers/Api/UserApiController.php new file mode 100644 index 000000000..e8b98525d --- /dev/null +++ b/app/Http/Controllers/Api/UserApiController.php @@ -0,0 +1,42 @@ +<?php + +namespace BookStack\Http\Controllers\Api; + +use BookStack\Exceptions\PermissionsException; +use BookStack\Auth\User; +use BookStack\Auth\UserRepo; +use Exception; +use Illuminate\Http\Request; + +class UserApiController extends ApiController +{ + protected $user; + protected $userRepo; + +# TBD: Endpoints to create / update users +# protected $rules = [ +# 'create' => [ +# ], +# 'update' => [ +# ], +# ]; + + public function __construct(User $user, UserRepo $userRepo) + { + $this->user = $user; + $this->userRepo = $userRepo; + } + + /** + * Get a listing of pages visible to the user. + */ + public function list() + { + $users = $this->userRepo->getUsersBuilder(); + + return $this->apiListingResponse($users, [ + 'id', 'name', 'slug', + 'email', 'created_at', 'updated_at', + ]); + } +} diff --git a/routes/api.php b/routes/api.php index 44643d6d4..0a9f99f50 100644 --- a/routes/api.php +++ b/routes/api.php @@ -44,3 +44,5 @@ Route::post('shelves', 'BookshelfApiController@create'); Route::get('shelves/{id}', 'BookshelfApiController@read'); Route::put('shelves/{id}', 'BookshelfApiController@update'); Route::delete('shelves/{id}', 'BookshelfApiController@delete'); + +Route::get('users', 'UserApiController@list');