mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-03-24 06:57:26 +08:00
Added owners to entity creation and updated tests
This commit is contained in:
parent
b493becadf
commit
4c580d1571
@ -526,8 +526,10 @@ class PermissionService
|
||||
$action = end($explodedPermission);
|
||||
$this->currentAction = $action;
|
||||
|
||||
$nonJointPermissions = ['restrictions', 'image', 'attachment', 'comment'];
|
||||
|
||||
// Handle non entity specific jointPermissions
|
||||
if (!($ownable instanceof Entity)) {
|
||||
if (in_array($explodedPermission[0], $nonJointPermissions)) {
|
||||
$allPermission = $this->currentUser() && $this->currentUser()->can($permission . '-all');
|
||||
$ownPermission = $this->currentUser() && $this->currentUser()->can($permission . '-own');
|
||||
$this->currentAction = 'view';
|
||||
|
@ -34,6 +34,7 @@ class BaseRepo
|
||||
$entity->forceFill([
|
||||
'created_by' => user()->id,
|
||||
'updated_by' => user()->id,
|
||||
'owned_by' => user()->id,
|
||||
]);
|
||||
$entity->refreshSlug();
|
||||
$entity->save();
|
||||
|
@ -130,6 +130,7 @@ class PageRepo
|
||||
$page = (new Page())->forceFill([
|
||||
'name' => trans('entities.pages_initial_name'),
|
||||
'created_by' => user()->id,
|
||||
'owned_by' => user()->id,
|
||||
'updated_by' => user()->id,
|
||||
'draft' => true,
|
||||
]);
|
||||
|
@ -1,10 +1,16 @@
|
||||
<?php namespace Tests;
|
||||
|
||||
use BookStack\Auth\User;
|
||||
use BookStack\Entities\Models\Book;
|
||||
use BookStack\Entities\Models\Chapter;
|
||||
use BookStack\Entities\Models\Entity;
|
||||
use BookStack\Auth\Role;
|
||||
use BookStack\Auth\Permissions\PermissionService;
|
||||
use BookStack\Entities\Models\Page;
|
||||
use BookStack\Settings\SettingService;
|
||||
use DB;
|
||||
use Illuminate\Contracts\Console\Kernel;
|
||||
use Illuminate\Foundation\Application;
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use Laravel\BrowserKitTesting\TestCase;
|
||||
use Symfony\Component\DomCrawler\Crawler;
|
||||
@ -23,14 +29,14 @@ abstract class BrowserKitTest extends TestCase
|
||||
|
||||
public function tearDown() : void
|
||||
{
|
||||
\DB::disconnect();
|
||||
DB::disconnect();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the application.
|
||||
*
|
||||
* @return \Illuminate\Foundation\Application
|
||||
* @return Application
|
||||
*/
|
||||
public function createApplication()
|
||||
{
|
||||
@ -47,7 +53,7 @@ abstract class BrowserKitTest extends TestCase
|
||||
*/
|
||||
public function getNormalUser()
|
||||
{
|
||||
return \BookStack\Auth\User::where('system_name', '=', null)->get()->last();
|
||||
return User::where('system_name', '=', null)->get()->last();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -64,23 +70,21 @@ abstract class BrowserKitTest extends TestCase
|
||||
|
||||
/**
|
||||
* Create a group of entities that belong to a specific user.
|
||||
* @param $creatorUser
|
||||
* @param $updaterUser
|
||||
* @return array
|
||||
*/
|
||||
protected function createEntityChainBelongingToUser($creatorUser, $updaterUser = false)
|
||||
protected function createEntityChainBelongingToUser(User $creatorUser, ?User $updaterUser): array
|
||||
{
|
||||
if ($updaterUser === false) $updaterUser = $creatorUser;
|
||||
$book = factory(\BookStack\Entities\Models\Book::class)->create(['created_by' => $creatorUser->id, 'updated_by' => $updaterUser->id]);
|
||||
$chapter = factory(\BookStack\Entities\Models\Chapter::class)->create(['created_by' => $creatorUser->id, 'updated_by' => $updaterUser->id, 'book_id' => $book->id]);
|
||||
$page = factory(\BookStack\Entities\Models\Page::class)->create(['created_by' => $creatorUser->id, 'updated_by' => $updaterUser->id, 'book_id' => $book->id, 'chapter_id' => $chapter->id]);
|
||||
if (empty($updaterUser)) {
|
||||
$updaterUser = $creatorUser;
|
||||
}
|
||||
|
||||
$userAttrs = ['created_by' => $creatorUser->id, 'owned_by' => $creatorUser->id, 'updated_by' => $updaterUser->id];
|
||||
$book = factory(Book::class)->create($userAttrs);
|
||||
$chapter = factory(Chapter::class)->create(array_merge(['book_id' => $book->id], $userAttrs));
|
||||
$page = factory(Page::class)->create(array_merge(['book_id' => $book->id, 'chapter_id' => $chapter->id], $userAttrs));
|
||||
$restrictionService = $this->app[PermissionService::class];
|
||||
$restrictionService->buildJointPermissionsForEntity($book);
|
||||
return [
|
||||
'book' => $book,
|
||||
'chapter' => $chapter,
|
||||
'page' => $page
|
||||
];
|
||||
|
||||
return compact('book', 'chapter', 'page');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -101,7 +105,7 @@ abstract class BrowserKitTest extends TestCase
|
||||
*/
|
||||
protected function getNewBlankUser($attributes = [])
|
||||
{
|
||||
$user = factory(\BookStack\Auth\User::class)->create($attributes);
|
||||
$user = factory(User::class)->create($attributes);
|
||||
return $user;
|
||||
}
|
||||
|
||||
|
@ -287,7 +287,7 @@ class SortTest extends TestCase
|
||||
$resp = $this->actingAs($viewer)->get($page->getUrl());
|
||||
$resp->assertDontSee($page->getUrl('/copy'));
|
||||
|
||||
$newBook->created_by = $viewer->id;
|
||||
$newBook->owned_by = $viewer->id;
|
||||
$newBook->save();
|
||||
$this->giveUserPermissions($viewer, ['page-create-own']);
|
||||
$this->regenEntityPermissions($newBook);
|
||||
|
@ -289,7 +289,7 @@ class RolesTest extends BrowserKitTest
|
||||
{
|
||||
$otherShelf = Bookshelf::first();
|
||||
$ownShelf = $this->newShelf(['name' => 'test-shelf', 'slug' => 'test-shelf']);
|
||||
$ownShelf->forceFill(['created_by' => $this->user->id, 'updated_by' => $this->user->id])->save();
|
||||
$ownShelf->forceFill(['owned_by' => $this->user->id, 'updated_by' => $this->user->id])->save();
|
||||
$this->regenEntityPermissions($ownShelf);
|
||||
|
||||
$this->checkAccessPermission('bookshelf-update-own', [
|
||||
@ -319,7 +319,7 @@ class RolesTest extends BrowserKitTest
|
||||
$this->giveUserPermissions($this->user, ['bookshelf-update-all']);
|
||||
$otherShelf = Bookshelf::first();
|
||||
$ownShelf = $this->newShelf(['name' => 'test-shelf', 'slug' => 'test-shelf']);
|
||||
$ownShelf->forceFill(['created_by' => $this->user->id, 'updated_by' => $this->user->id])->save();
|
||||
$ownShelf->forceFill(['owned_by' => $this->user->id, 'updated_by' => $this->user->id])->save();
|
||||
$this->regenEntityPermissions($ownShelf);
|
||||
|
||||
$this->checkAccessPermission('bookshelf-delete-own', [
|
||||
|
Loading…
x
Reference in New Issue
Block a user