diff --git a/app/AlbumDefaultGroupPermission.php b/app/AlbumDefaultGroupPermission.php new file mode 100644 index 0000000..a7e02ab --- /dev/null +++ b/app/AlbumDefaultGroupPermission.php @@ -0,0 +1,9 @@ +authorizeAccessToAdminPanel('admin:manage-albums'); + + $addNewGroups = []; + $existingGroups = []; + foreach (Group::orderBy('name')->get() as $group) + { + if (AlbumDefaultGroupPermission::where('group_id', $group->id)->count() == 0) + { + $addNewGroups[] = $group; + } + else + { + $existingGroups[] = $group; + } + } + + $existingUsers = []; + foreach (User::orderBy('name')->get() as $user) + { + if (AlbumDefaultUserPermission::where('user_id', $user->id)->count() > 0) + { + $existingUsers[] = $user; + } + } + + return Theme::render('admin.album_default_permissions', [ + 'add_new_groups' => $addNewGroups, + 'all_permissions' => Permission::where('section', 'album')->get(), + 'existing_groups' => $existingGroups, + 'existing_users' => $existingUsers + ]); + } + public function delete($id) { $this->authorizeAccessToAdminPanel('admin:manage-albums'); diff --git a/database/migrations/2018_09_23_100536_create_album_default_group_permissions_table.php b/database/migrations/2018_09_23_100536_create_album_default_group_permissions_table.php new file mode 100644 index 0000000..d881618 --- /dev/null +++ b/database/migrations/2018_09_23_100536_create_album_default_group_permissions_table.php @@ -0,0 +1,40 @@ +unsignedInteger('group_id'); + $table->unsignedInteger('permission_id'); + + $table->foreign('group_id') + ->references('id')->on('groups') + ->onDelete('cascade'); + $table->foreign('permission_id') + ->references('id')->on('permissions') + ->onDelete('no action'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('album_default_group_permissions'); + } +} diff --git a/database/migrations/2018_09_23_100542_create_album_default_user_permissions_table.php b/database/migrations/2018_09_23_100542_create_album_default_user_permissions_table.php new file mode 100644 index 0000000..2cf4b42 --- /dev/null +++ b/database/migrations/2018_09_23_100542_create_album_default_user_permissions_table.php @@ -0,0 +1,40 @@ +unsignedInteger('user_id'); + $table->unsignedInteger('permission_id'); + + $table->foreign('user_id') + ->references('id')->on('users') + ->onDelete('cascade'); + $table->foreign('permission_id') + ->references('id')->on('permissions') + ->onDelete('no action'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('album_default_user_permissions'); + } +} diff --git a/database/migrations/2018_09_23_100608_create_album_default_anonymous_permissions_table.php b/database/migrations/2018_09_23_100608_create_album_default_anonymous_permissions_table.php new file mode 100644 index 0000000..7d1b51a --- /dev/null +++ b/database/migrations/2018_09_23_100608_create_album_default_anonymous_permissions_table.php @@ -0,0 +1,36 @@ +unsignedInteger('permission_id'); + + $table->foreign('permission_id') + ->references('id')->on('permissions') + ->onDelete('no action'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('album_default_anonymous_permissions'); + } +} diff --git a/resources/lang/en/admin.php b/resources/lang/en/admin.php index 8775ccc..a696646 100644 --- a/resources/lang/en/admin.php +++ b/resources/lang/en/admin.php @@ -81,6 +81,11 @@ return [ 'create_user_title' => 'Create a user account', 'danger_zone_heading' => 'Danger zone', 'danger_zone_intro' => 'The options below WILL cause data loss - please be careful!', + 'default_album_permissions' => [ + 'intro' => 'An album can inherit its security permissions from its parent album. Top-level albums, however, do not have a parent album, so they can be set to inherit the default permissions you set here.', + 'intro_2' => 'When you create a new album, if you choose not to inherit its permissions, the permissions you set here will be copied into tbe new album as a starting point.', + 'title' => 'Default Album Permissions' + ], 'default_storage_legend' => 'Default storage location for new albums.', 'delete_album' => 'Delete album :name', 'delete_album_confirm' => 'Are you sure you want to permanently delete this album and all its contents?', diff --git a/resources/lang/en/navigation.php b/resources/lang/en/navigation.php index ff51105..9156324 100644 --- a/resources/lang/en/navigation.php +++ b/resources/lang/en/navigation.php @@ -9,6 +9,7 @@ return [ 'create_group' => 'Create group', 'create_storage' => 'Create storage', 'create_user' => 'Create user', + 'default_album_permissions' => 'Default album permissions', 'delete_album' => 'Delete album', 'delete_group' => 'Delete group', 'delete_label' => 'Delete label', diff --git a/resources/views/themes/base/admin/album_default_permissions.blade.php b/resources/views/themes/base/admin/album_default_permissions.blade.php new file mode 100644 index 0000000..0905c7d --- /dev/null +++ b/resources/views/themes/base/admin/album_default_permissions.blade.php @@ -0,0 +1,105 @@ +@extends(Theme::viewName('layout')) +@section('title', 'Gallery Admin') + +@section('breadcrumb') +
@lang('admin.default_album_permissions.intro')
+@lang('admin.default_album_permissions.intro_2')
+