From c3986cedfc992abfe12c8ad596e949dbaf35a093 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 4 Aug 2018 12:45:45 +0100 Subject: [PATCH] Added shelve icon, improved migration, added role permission Icon is placeholder for now Migration will now copy permissions from Books to apply to shelves. Role view updated with visibility on shelve permission --- ...08_04_115700_create_bookshelves_table.php} | 45 +++++++++++-------- resources/assets/icons/bookshelf.svg | 2 + resources/lang/en/entities.php | 6 +++ resources/views/base.blade.php | 1 + resources/views/settings/roles/form.blade.php | 18 ++++++++ 5 files changed, 54 insertions(+), 18 deletions(-) rename database/migrations/{2018_06_24_115700_create_bookshelves_table.php => 2018_08_04_115700_create_bookshelves_table.php} (53%) create mode 100644 resources/assets/icons/bookshelf.svg 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 @@