0
0
Fork 0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-04-22 03:51:06 +00:00

Updated with latest styleci changes

This commit is contained in:
Dan Brown 2022-02-08 15:29:58 +00:00
parent c6ad16dba6
commit 045710ea08
No known key found for this signature in database
GPG key ID: 46D9F943C24A2EF9
9 changed files with 76 additions and 68 deletions

View file

@ -102,8 +102,8 @@ class ApiDocsGenerator
$this->controllerClasses[$className] = $class; $this->controllerClasses[$className] = $class;
} }
$rules = collect($class->getValidationRules()[$methodName] ?? [])->map(function($validations) { $rules = collect($class->getValidationRules()[$methodName] ?? [])->map(function ($validations) {
return array_map(function($validation) { return array_map(function ($validation) {
return $this->getValidationAsString($validation); return $this->getValidationAsString($validation);
}, $validations); }, $validations);
})->toArray(); })->toArray();
@ -129,6 +129,7 @@ class ApiDocsGenerator
} }
$class = get_class($validation); $class = get_class($validation);
throw new Exception("Cannot provide string representation of rule for class: {$class}"); throw new Exception("Cannot provide string representation of rule for class: {$class}");
} }

View file

@ -48,7 +48,7 @@ class ListingResponseBuilder
$filteredQuery = $this->filterQuery($this->query); $filteredQuery = $this->filterQuery($this->query);
$total = $filteredQuery->count(); $total = $filteredQuery->count();
$data = $this->fetchData($filteredQuery)->each(function($model) { $data = $this->fetchData($filteredQuery)->each(function ($model) {
foreach ($this->resultModifiers as $modifier) { foreach ($this->resultModifiers as $modifier) {
$modifier($model); $modifier($model);
} }
@ -61,7 +61,8 @@ class ListingResponseBuilder
} }
/** /**
* Add a callback to modify each element of the results * Add a callback to modify each element of the results.
*
* @param (callable(Model)) $modifier * @param (callable(Model)) $modifier
*/ */
public function modifyResults($modifier): void public function modifyResults($modifier): void

View file

@ -60,7 +60,7 @@ class UserRepo
} }
/** /**
* Get all users as Builder for API * Get all users as Builder for API.
*/ */
public function getApiUsersBuilder(): Builder public function getApiUsersBuilder(): Builder
{ {
@ -159,6 +159,7 @@ class UserRepo
/** /**
* Create a new basic instance of user with the given pre-validated data. * Create a new basic instance of user with the given pre-validated data.
*
* @param array{name: string, email: string, password: ?string, external_auth_id: ?string, language: ?string, roles: ?array} $data * @param array{name: string, email: string, password: ?string, external_auth_id: ?string, language: ?string, roles: ?array} $data
*/ */
public function createWithoutActivity(array $data, bool $emailConfirmed = false): User public function createWithoutActivity(array $data, bool $emailConfirmed = false): User
@ -188,6 +189,7 @@ class UserRepo
/** /**
* As per "createWithoutActivity" but records a "create" activity. * As per "createWithoutActivity" but records a "create" activity.
*
* @param array{name: string, email: string, password: ?string, external_auth_id: ?string, language: ?string, roles: ?array} $data * @param array{name: string, email: string, password: ?string, external_auth_id: ?string, language: ?string, roles: ?array} $data
*/ */
public function create(array $data, bool $sendInvite = false): User public function create(array $data, bool $sendInvite = false): User
@ -199,12 +201,15 @@ class UserRepo
} }
Activity::add(ActivityType::USER_CREATE, $user); Activity::add(ActivityType::USER_CREATE, $user);
return $user; return $user;
} }
/** /**
* Update the given user with the given data. * Update the given user with the given data.
*
* @param array{name: ?string, email: ?string, external_auth_id: ?string, password: ?string, roles: ?array<int>, language: ?string} $data * @param array{name: ?string, email: ?string, external_auth_id: ?string, password: ?string, roles: ?array<int>, language: ?string} $data
*
* @throws UserUpdateException * @throws UserUpdateException
*/ */
public function update(User $user, array $data, bool $manageUsersAllowed): User public function update(User $user, array $data, bool $manageUsersAllowed): User
@ -307,10 +312,10 @@ class UserRepo
}; };
return [ return [
'pages' => $query(Page::visible()->where('draft', '=', false)), 'pages' => $query(Page::visible()->where('draft', '=', false)),
'chapters' => $query(Chapter::visible()), 'chapters' => $query(Chapter::visible()),
'books' => $query(Book::visible()), 'books' => $query(Book::visible()),
'shelves' => $query(Bookshelf::visible()), 'shelves' => $query(Bookshelf::visible()),
]; ];
} }
@ -322,10 +327,10 @@ class UserRepo
$createdBy = ['created_by' => $user->id]; $createdBy = ['created_by' => $user->id];
return [ return [
'pages' => Page::visible()->where($createdBy)->count(), 'pages' => Page::visible()->where($createdBy)->count(),
'chapters' => Chapter::visible()->where($createdBy)->count(), 'chapters' => Chapter::visible()->where($createdBy)->count(),
'books' => Book::visible()->where($createdBy)->count(), 'books' => Book::visible()->where($createdBy)->count(),
'shelves' => Bookshelf::visible()->where($createdBy)->count(), 'shelves' => Bookshelf::visible()->where($createdBy)->count(),
]; ];
} }

View file

@ -16,7 +16,7 @@ class UserApiController extends ApiController
protected $userRepo; protected $userRepo;
protected $fieldsToExpose = [ protected $fieldsToExpose = [
'email', 'created_at', 'updated_at', 'last_activity_at', 'external_auth_id' 'email', 'created_at', 'updated_at', 'last_activity_at', 'external_auth_id',
]; ];
public function __construct(UserRepo $userRepo) public function __construct(UserRepo $userRepo)
@ -27,6 +27,7 @@ class UserApiController extends ApiController
$this->middleware(function ($request, $next) { $this->middleware(function ($request, $next) {
$this->checkPermission('users-manage'); $this->checkPermission('users-manage');
$this->preventAccessInDemoMode(); $this->preventAccessInDemoMode();
return $next($request); return $next($request);
}); });
} }
@ -35,29 +36,29 @@ class UserApiController extends ApiController
{ {
return [ return [
'create' => [ 'create' => [
'name' => ['required', 'min:2'], 'name' => ['required', 'min:2'],
'email' => [ 'email' => [
'required', 'min:2', 'email', new Unique('users', 'email') 'required', 'min:2', 'email', new Unique('users', 'email'),
], ],
'external_auth_id' => ['string'], 'external_auth_id' => ['string'],
'language' => ['string'], 'language' => ['string'],
'password' => [Password::default()], 'password' => [Password::default()],
'roles' => ['array'], 'roles' => ['array'],
'roles.*' => ['integer'], 'roles.*' => ['integer'],
'send_invite' => ['boolean'], 'send_invite' => ['boolean'],
], ],
'update' => [ 'update' => [
'name' => ['min:2'], 'name' => ['min:2'],
'email' => [ 'email' => [
'min:2', 'min:2',
'email', 'email',
(new Unique('users', 'email'))->ignore($userId ?? null) (new Unique('users', 'email'))->ignore($userId ?? null),
], ],
'external_auth_id' => ['string'], 'external_auth_id' => ['string'],
'language' => ['string'], 'language' => ['string'],
'password' => [Password::default()], 'password' => [Password::default()],
'roles' => ['array'], 'roles' => ['array'],
'roles.*' => ['integer'], 'roles.*' => ['integer'],
], ],
'delete' => [ 'delete' => [
'migrate_ownership_id' => ['integer', 'exists:users,id'], 'migrate_ownership_id' => ['integer', 'exists:users,id'],
@ -113,6 +114,7 @@ class UserApiController extends ApiController
/** /**
* Update an existing user in the system. * Update an existing user in the system.
* Requires permission to manage users. * Requires permission to manage users.
*
* @throws UserUpdateException * @throws UserUpdateException
*/ */
public function update(Request $request, string $id) public function update(Request $request, string $id)

View file

@ -54,6 +54,7 @@ abstract class Controller extends BaseController
protected function showPermissionError() protected function showPermissionError()
{ {
$message = request()->wantsJson() ? trans('errors.permissionJson') : trans('errors.permission'); $message = request()->wantsJson() ? trans('errors.permissionJson') : trans('errors.permission');
throw new NotifyException($message, '/', 403); throw new NotifyException($message, '/', 403);
} }

View file

@ -75,12 +75,12 @@ class UserController extends Controller
$passwordRequired = ($authMethod === 'standard' && !$sendInvite); $passwordRequired = ($authMethod === 'standard' && !$sendInvite);
$validationRules = [ $validationRules = [
'name' => ['required'], 'name' => ['required'],
'email' => ['required', 'email', 'unique:users,email'], 'email' => ['required', 'email', 'unique:users,email'],
'language' => ['string'], 'language' => ['string'],
'roles' => ['array'], 'roles' => ['array'],
'roles.*' => ['integer'], 'roles.*' => ['integer'],
'password' => $passwordRequired ? ['required', Password::default()] : null, 'password' => $passwordRequired ? ['required', Password::default()] : null,
'password-confirm' => $passwordRequired ? ['required', 'same:password'] : null, 'password-confirm' => $passwordRequired ? ['required', 'same:password'] : null,
'external_auth_id' => $externalAuth ? ['required'] : null, 'external_auth_id' => $externalAuth ? ['required'] : null,
]; ];

View file

@ -56,13 +56,13 @@ class UsersApiTest extends TestCase
$resp = $this->getJson($this->baseEndpoint . '?count=1&sort=+id'); $resp = $this->getJson($this->baseEndpoint . '?count=1&sort=+id');
$resp->assertJson(['data' => [ $resp->assertJson(['data' => [
[ [
'id' => $firstUser->id, 'id' => $firstUser->id,
'name' => $firstUser->name, 'name' => $firstUser->name,
'slug' => $firstUser->slug, 'slug' => $firstUser->slug,
'email' => $firstUser->email, 'email' => $firstUser->email,
'profile_url' => $firstUser->getProfileUrl(), 'profile_url' => $firstUser->getProfileUrl(),
'edit_url' => $firstUser->getEditUrl(), 'edit_url' => $firstUser->getEditUrl(),
'avatar_url' => $firstUser->getAvatar(), 'avatar_url' => $firstUser->getAvatar(),
], ],
]]); ]]);
} }
@ -74,24 +74,24 @@ class UsersApiTest extends TestCase
$role = Role::query()->first(); $role = Role::query()->first();
$resp = $this->postJson($this->baseEndpoint, [ $resp = $this->postJson($this->baseEndpoint, [
'name' => 'Benny Boris', 'name' => 'Benny Boris',
'email' => 'bboris@example.com', 'email' => 'bboris@example.com',
'password' => 'mysuperpass', 'password' => 'mysuperpass',
'language' => 'it', 'language' => 'it',
'roles' => [$role->id], 'roles' => [$role->id],
'send_invite' => false, 'send_invite' => false,
]); ]);
$resp->assertStatus(200); $resp->assertStatus(200);
$resp->assertJson([ $resp->assertJson([
'name' => 'Benny Boris', 'name' => 'Benny Boris',
'email' => 'bboris@example.com', 'email' => 'bboris@example.com',
'external_auth_id' => '', 'external_auth_id' => '',
'roles' => [ 'roles' => [
[ [
'id' => $role->id, 'id' => $role->id,
'display_name' => $role->display_name, 'display_name' => $role->display_name,
] ],
], ],
]); ]);
$this->assertDatabaseHas('users', ['email' => 'bboris@example.com']); $this->assertDatabaseHas('users', ['email' => 'bboris@example.com']);
@ -109,8 +109,8 @@ class UsersApiTest extends TestCase
Notification::fake(); Notification::fake();
$resp = $this->postJson($this->baseEndpoint, [ $resp = $this->postJson($this->baseEndpoint, [
'name' => 'Benny Boris', 'name' => 'Benny Boris',
'email' => 'bboris@example.com', 'email' => 'bboris@example.com',
'send_invite' => true, 'send_invite' => true,
]); ]);
@ -140,7 +140,7 @@ class UsersApiTest extends TestCase
$resp = $this->postJson($this->baseEndpoint, [ $resp = $this->postJson($this->baseEndpoint, [
'email' => $existingUser->email, 'email' => $existingUser->email,
'name' => 'Benny Boris', 'name' => 'Benny Boris',
]); ]);
$resp->assertStatus(422); $resp->assertStatus(422);
$resp->assertJson($this->validationResponse(['email' => ['The email has already been taken.']])); $resp->assertJson($this->validationResponse(['email' => ['The email has already been taken.']]));
@ -158,15 +158,15 @@ class UsersApiTest extends TestCase
$resp->assertStatus(200); $resp->assertStatus(200);
$resp->assertJson([ $resp->assertJson([
'id' => $user->id, 'id' => $user->id,
'slug' => $user->slug, 'slug' => $user->slug,
'email' => $user->email, 'email' => $user->email,
'external_auth_id' => $user->external_auth_id, 'external_auth_id' => $user->external_auth_id,
'roles' => [ 'roles' => [
[ [
'id' => $userRole->id, 'id' => $userRole->id,
'display_name' => $userRole->display_name, 'display_name' => $userRole->display_name,
] ],
], ],
]); ]);
} }
@ -178,19 +178,19 @@ class UsersApiTest extends TestCase
$user = $this->getAdmin(); $user = $this->getAdmin();
$roles = Role::query()->pluck('id'); $roles = Role::query()->pluck('id');
$resp = $this->putJson($this->baseEndpoint . "/{$user->id}", [ $resp = $this->putJson($this->baseEndpoint . "/{$user->id}", [
'name' => 'My updated user', 'name' => 'My updated user',
'email' => 'barrytest@example.com', 'email' => 'barrytest@example.com',
'roles' => $roles, 'roles' => $roles,
'external_auth_id' => 'btest', 'external_auth_id' => 'btest',
'password' => 'barrytester', 'password' => 'barrytester',
'language' => 'fr', 'language' => 'fr',
]); ]);
$resp->assertStatus(200); $resp->assertStatus(200);
$resp->assertJson([ $resp->assertJson([
'id' => $user->id, 'id' => $user->id,
'name' => 'My updated user', 'name' => 'My updated user',
'email' => 'barrytest@example.com', 'email' => 'barrytest@example.com',
'external_auth_id' => 'btest', 'external_auth_id' => 'btest',
]); ]);
$user->refresh(); $user->refresh();
@ -210,9 +210,9 @@ class UsersApiTest extends TestCase
$resp->assertStatus(200); $resp->assertStatus(200);
$this->assertDatabaseHas('users', [ $this->assertDatabaseHas('users', [
'id' => $user->id, 'id' => $user->id,
'name' => $user->name, 'name' => $user->name,
'email' => $user->email, 'email' => $user->email,
'password' => $user->password, 'password' => $user->password,
]); ]);
$this->assertEquals($roleCount, $user->roles()->count()); $this->assertEquals($roleCount, $user->roles()->count());

View file

@ -4,7 +4,6 @@ namespace Tests;
class HelpTest extends TestCase class HelpTest extends TestCase
{ {
public function test_wysiwyg_help_shows_tiny_and_tiny_license_link() public function test_wysiwyg_help_shows_tiny_and_tiny_license_link()
{ {
$resp = $this->get('/help/wysiwyg'); $resp = $this->get('/help/wysiwyg');
@ -21,5 +20,4 @@ class HelpTest extends TestCase
$contents = file_get_contents($expectedPath); $contents = file_get_contents($expectedPath);
$this->assertStringContainsString('GNU LESSER GENERAL PUBLIC LICENSE', $contents); $this->assertStringContainsString('GNU LESSER GENERAL PUBLIC LICENSE', $contents);
} }
} }