diff --git a/database/migrations/2018_06_24_115700_create_bookshelves_table.php b/database/migrations/2018_08_04_115700_create_bookshelves_table.php similarity index 53% rename from database/migrations/2018_06_24_115700_create_bookshelves_table.php rename to database/migrations/2018_08_04_115700_create_bookshelves_table.php index 173e9214b..f32a1cdfb 100644 --- a/database/migrations/2018_06_24_115700_create_bookshelves_table.php +++ b/database/migrations/2018_08_04_115700_create_bookshelves_table.php @@ -30,31 +30,31 @@ class CreateBookshelvesTable extends Migration $table->index('restricted'); }); - // Get roles with permissions we need to change - $adminRoleId = DB::table('roles')->where('system_name', '=', 'admin')->first()->id; - $editorRole = DB::table('roles')->where('name', '=', 'editor')->first(); - - // TODO - Copy existing role permissions from Books - $entity = 'BookShelf'; + // Copy existing role permissions from Books $ops = ['View All', 'View Own', 'Create All', 'Create Own', 'Update All', 'Update Own', 'Delete All', 'Delete Own']; foreach ($ops as $op) { - $permId = DB::table('permissions')->insertGetId([ - 'name' => strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op)), + $dbOpName = strtolower(str_replace(' ', '-', $op)); + $roleIdsWithBookPermission = DB::table('role_permissions') + ->leftJoin('permission_role', 'role_permissions.id', '=', 'permission_role.permission_id') + ->leftJoin('roles', 'roles.id', '=', 'permission_role.role_id') + ->where('role_permissions.name', '=', 'book-' . $dbOpName)->get(['roles.id'])->pluck('id'); + + $permId = DB::table('role_permissions')->insertGetId([ + 'name' => 'bookshelf-' . $dbOpName, 'display_name' => $op . ' ' . 'BookShelves', 'created_at' => \Carbon\Carbon::now()->toDateTimeString(), 'updated_at' => \Carbon\Carbon::now()->toDateTimeString() ]); - // Assign view permission to all current roles - DB::table('permission_role')->insert([ - 'role_id' => $adminRoleId, - 'permission_id' => $permId - ]); - if ($editorRole !== null) { - DB::table('permission_role')->insert([ - 'role_id' => $editorRole->id, + + $rowsToInsert = $roleIdsWithBookPermission->map(function($roleId) use ($permId) { + return [ + 'role_id' => $roleId, 'permission_id' => $permId - ]); - } + ]; + })->toArray(); + + // Assign view permission to all current roles + DB::table('permission_role')->insert($rowsToInsert); } } @@ -65,6 +65,15 @@ class CreateBookshelvesTable extends Migration */ public function down() { + // Drop created permissions + $ops = ['bookshelf-create-all','bookshelf-create-own','bookshelf-delete-all','bookshelf-delete-own','bookshelf-update-all','bookshelf-update-own','bookshelf-view-all','bookshelf-view-own']; + + $permissionIds = DB::table('role_permissions')->whereIn('name', $ops) + ->get(['id'])->pluck('id')->toArray(); + DB::table('permission_role')->whereIn('permission_id', $permissionIds)->delete(); + DB::table('role_permissions')->whereIn('id', $permissionIds)->delete(); + + // Drop shelves table Schema::dropIfExists('bookshelves'); } } diff --git a/resources/assets/icons/bookshelf.svg b/resources/assets/icons/bookshelf.svg new file mode 100644 index 000000000..03da68f96 --- /dev/null +++ b/resources/assets/icons/bookshelf.svg @@ -0,0 +1,2 @@ + + diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php index 93025ffd4..834b977e7 100644 --- a/resources/lang/en/entities.php +++ b/resources/lang/en/entities.php @@ -64,6 +64,12 @@ return [ 'search_set_date' => 'Set Date', 'search_update' => 'Update Search', + /** + * Shelves + */ + 'shelves' => 'Shelves', + 'shelves_long' => 'BookShelves', + /** * Books */ diff --git a/resources/views/base.blade.php b/resources/views/base.blade.php index 8f6c2eb46..93517ef6f 100644 --- a/resources/views/base.blade.php +++ b/resources/views/base.blade.php @@ -52,6 +52,7 @@