]> BookStack Code Mirror - bookstack/blobdiff - app/Http/Controllers/Api/UserApiController.php
Updated System CLI
[bookstack] / app / Http / Controllers / Api / UserApiController.php
index aa2a2481c8a191e66dd9d5f3abc000b67794f3b4..da6ca4321c3eab9c05ed4046efa535bf2ab9640f 100644 (file)
@@ -13,10 +13,10 @@ use Illuminate\Validation\Rules\Unique;
 
 class UserApiController extends ApiController
 {
-    protected $userRepo;
+    protected UserRepo $userRepo;
 
-    protected $fieldsToExpose = [
-        'email', 'created_at', 'updated_at', 'last_activity_at', 'external_auth_id'
+    protected array $fieldsToExpose = [
+        'email', 'created_at', 'updated_at', 'last_activity_at', 'external_auth_id',
     ];
 
     public function __construct(UserRepo $userRepo)
@@ -27,6 +27,7 @@ class UserApiController extends ApiController
         $this->middleware(function ($request, $next) {
             $this->checkPermission('users-manage');
             $this->preventAccessInDemoMode();
+
             return $next($request);
         });
     }
@@ -35,29 +36,29 @@ class UserApiController extends ApiController
     {
         return [
             'create' => [
-                'name' => ['required', 'min:2'],
+                'name'  => ['required', 'min:2', 'max:100'],
                 'email' => [
-                    'required', 'min:2', 'email', new Unique('users', 'email')
+                    'required', 'min:2', 'email', new Unique('users', 'email'),
                 ],
                 'external_auth_id' => ['string'],
-                'language' => ['string'],
-                'password' => [Password::default()],
-                'roles' => ['array'],
-                'roles.*' => ['integer'],
-                'send_invite' => ['boolean'],
+                'language'         => ['string', 'max:15', 'alpha_dash'],
+                'password'         => [Password::default()],
+                'roles'            => ['array'],
+                'roles.*'          => ['integer'],
+                'send_invite'      => ['boolean'],
             ],
             'update' => [
-                'name' => ['min:2'],
+                'name'  => ['min:2', 'max:100'],
                 'email' => [
                     'min:2',
                     'email',
-                    (new Unique('users', 'email'))->ignore($userId ?? null)
+                    (new Unique('users', 'email'))->ignore($userId ?? null),
                 ],
                 'external_auth_id' => ['string'],
-                'language' => ['string'],
-                'password' => [Password::default()],
-                'roles' => ['array'],
-                'roles.*' => ['integer'],
+                'language'         => ['string', 'max:15', 'alpha_dash'],
+                'password'         => [Password::default()],
+                'roles'            => ['array'],
+                'roles.*'          => ['integer'],
             ],
             'delete' => [
                 'migrate_ownership_id' => ['integer', 'exists:users,id'],
@@ -71,7 +72,9 @@ class UserApiController extends ApiController
      */
     public function list()
     {
-        $users = $this->userRepo->getApiUsersBuilder();
+        $users = User::query()->select(['*'])
+            ->scopes('withLastActivityAt')
+            ->with(['avatar']);
 
         return $this->apiListingResponse($users, [
             'id', 'name', 'slug', 'email', 'external_auth_id',
@@ -113,6 +116,7 @@ class UserApiController extends ApiController
     /**
      * Update an existing user in the system.
      * Requires permission to manage users.
+     *
      * @throws UserUpdateException
      */
     public function update(Request $request, string $id)