mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-11-23 11:22:33 +01:00
Removed joint_permissions auto_increment id
Removed auto_incrementing id and set a primary key of the [role_id, entity_type, entity_id, action] instead since this table could recieve a lot of activity, especially when permission regeneration was automated, leading to very high auto_increment counts which could max out the integer limit. Also updated some RolesTest comment endpoints to align with recent route changes. Should fix #2091
This commit is contained in:
parent
7590ecd37c
commit
a9f02550f0
@ -3,25 +3,26 @@
|
||||
use BookStack\Auth\Role;
|
||||
use BookStack\Entities\Entity;
|
||||
use BookStack\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphOne;
|
||||
|
||||
class JointPermission extends Model
|
||||
{
|
||||
protected $primaryKey = null;
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* Get the role that this points to.
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function role()
|
||||
public function role(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Role::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the entity this points to.
|
||||
* @return \Illuminate\Database\Eloquent\Relations\MorphOne
|
||||
*/
|
||||
public function entity()
|
||||
public function entity(): MorphOne
|
||||
{
|
||||
return $this->morphOne(Entity::class, 'entity');
|
||||
}
|
||||
|
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class DropJointPermissionsId extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('joint_permissions', function (Blueprint $table) {
|
||||
$table->dropColumn('id');
|
||||
$table->primary(['role_id', 'entity_type', 'entity_id', 'action'], 'joint_primary');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('joint_permissions', function (Blueprint $table) {
|
||||
$table->dropPrimary(['role_id', 'entity_type', 'entity_id', 'action']);
|
||||
});
|
||||
|
||||
Schema::table('joint_permissions', function (Blueprint $table) {
|
||||
$table->increments('id')->unsigned();
|
||||
});
|
||||
}
|
||||
}
|
@ -2,10 +2,8 @@
|
||||
|
||||
use BookStack\Entities\Bookshelf;
|
||||
use BookStack\Entities\Page;
|
||||
use BookStack\Auth\Permissions\PermissionsRepo;
|
||||
use BookStack\Auth\Role;
|
||||
use Laravel\BrowserKitTesting\HttpException;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
use Tests\BrowserKitTest;
|
||||
|
||||
class RolesTest extends BrowserKitTest
|
||||
@ -852,7 +850,7 @@ class RolesTest extends BrowserKitTest
|
||||
|
||||
private function addComment($page) {
|
||||
$comment = factory(\BookStack\Actions\Comment::class)->make();
|
||||
$url = "/ajax/page/$page->id/comment";
|
||||
$url = "/comment/$page->id";
|
||||
$request = [
|
||||
'text' => $comment->text,
|
||||
'html' => $comment->html
|
||||
@ -865,7 +863,7 @@ class RolesTest extends BrowserKitTest
|
||||
|
||||
private function updateComment($commentId) {
|
||||
$comment = factory(\BookStack\Actions\Comment::class)->make();
|
||||
$url = "/ajax/comment/$commentId";
|
||||
$url = "/comment/$commentId";
|
||||
$request = [
|
||||
'text' => $comment->text,
|
||||
'html' => $comment->html
|
||||
@ -875,7 +873,7 @@ class RolesTest extends BrowserKitTest
|
||||
}
|
||||
|
||||
private function deleteComment($commentId) {
|
||||
$url = '/ajax/comment/' . $commentId;
|
||||
$url = '/comment/' . $commentId;
|
||||
return $this->json('DELETE', $url);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user