From 5a8c494179a65b9e69e78cfaae9d9a50a28a2cca Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Wed, 1 Apr 2020 18:24:34 +0200 Subject: [PATCH] wip #3546 @2 --- app/Models/User.php | 2 +- config/backpack/permissionmanager.php | 21 +- ...13_04_09_062329_create_revisions_table.php | 37 +++ ..._04_01_150232_create_permission_tables.php | 110 +++++++++ .../backpack/backupmanager/backup.blade.php | 134 +++++++++++ .../base/inc/sidebar_content.blade.php | 49 +++- .../crud/buttons/quiz/download.blade.php | 2 + .../crud/buttons/quiz/import.blade.php | 25 ++ .../crud/buttons/quiz/preview.blade.php | 3 + .../crud/fields/dropzone_media.blade.php | 227 ++++++++++++++++++ routes/backpack/custom.php | 18 +- routes/backpack/permissionmanager.php | 2 +- 12 files changed, 619 insertions(+), 11 deletions(-) create mode 100644 database/migrations/2013_04_09_062329_create_revisions_table.php create mode 100644 database/migrations/2020_04_01_150232_create_permission_tables.php create mode 100644 resources/views/vendor/backpack/backupmanager/backup.blade.php create mode 100644 resources/views/vendor/backpack/crud/buttons/quiz/download.blade.php create mode 100644 resources/views/vendor/backpack/crud/buttons/quiz/import.blade.php create mode 100644 resources/views/vendor/backpack/crud/buttons/quiz/preview.blade.php create mode 100644 resources/views/vendor/backpack/crud/fields/dropzone_media.blade.php diff --git a/app/Models/User.php b/app/Models/User.php index 1b23e10..a77b969 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -8,7 +8,7 @@ use Cubist\Backpack\app\Magic\Models\CubistMagicAuthenticatable; class User extends CubistMagicAuthenticatable { protected $table = 'user'; - protected $_options = ['name' => 'user', + protected $_options = ['name' => 'users', 'singular' => 'user', 'plural' => 'users']; diff --git a/config/backpack/permissionmanager.php b/config/backpack/permissionmanager.php index 1f0b4e7..6396f8d 100644 --- a/config/backpack/permissionmanager.php +++ b/config/backpack/permissionmanager.php @@ -3,9 +3,20 @@ return [ /* - | Backpack/PermissionManager configs. + |-------------------------------------------------------------------------- + | Models + |-------------------------------------------------------------------------- + | + | Models used in the User, Role and Permission CRUDs. + | */ + 'models' => [ + 'user' => App\Models\User::class, + 'permission' => Backpack\PermissionManager\app\Models\Permission::class, + 'role' => Backpack\PermissionManager\app\Models\Role::class, + ], + /* |-------------------------------------------------------------------------- | Disallow the user interface for creating/updating permissions or roles. @@ -26,4 +37,12 @@ return [ 'allow_role_update' => true, 'allow_role_delete' => true, + /* + |-------------------------------------------------------------------------- + | Multiple-guards functionality + |-------------------------------------------------------------------------- + | + */ + 'multiple_guards' => false, + ]; diff --git a/database/migrations/2013_04_09_062329_create_revisions_table.php b/database/migrations/2013_04_09_062329_create_revisions_table.php new file mode 100644 index 0000000..fdd5b1e --- /dev/null +++ b/database/migrations/2013_04_09_062329_create_revisions_table.php @@ -0,0 +1,37 @@ +increments('id'); + $table->string('revisionable_type'); + $table->integer('revisionable_id'); + $table->integer('user_id')->nullable(); + $table->string('key'); + $table->text('old_value')->nullable(); + $table->text('new_value')->nullable(); + $table->timestamps(); + + $table->index(array('revisionable_id', 'revisionable_type')); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('revisions'); + } +} diff --git a/database/migrations/2020_04_01_150232_create_permission_tables.php b/database/migrations/2020_04_01_150232_create_permission_tables.php new file mode 100644 index 0000000..8ad013b --- /dev/null +++ b/database/migrations/2020_04_01_150232_create_permission_tables.php @@ -0,0 +1,110 @@ +bigIncrements('id'); + $table->string('name'); + $table->string('guard_name'); + $table->timestamps(); + }); + + Schema::create($tableNames['roles'], function (Blueprint $table) { + $table->bigIncrements('id'); + $table->string('name'); + $table->string('guard_name'); + $table->timestamps(); + }); + + Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames) { + $table->unsignedBigInteger('permission_id'); + + $table->string('model_type'); + $table->unsignedBigInteger($columnNames['model_morph_key']); + $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index'); + + $table->foreign('permission_id') + ->references('id') + ->on($tableNames['permissions']) + ->onDelete('cascade'); + + $table->primary(['permission_id', $columnNames['model_morph_key'], 'model_type'], + 'model_has_permissions_permission_model_type_primary'); + }); + + Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames) { + $table->unsignedBigInteger('role_id'); + + $table->string('model_type'); + $table->unsignedBigInteger($columnNames['model_morph_key']); + $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index'); + + $table->foreign('role_id') + ->references('id') + ->on($tableNames['roles']) + ->onDelete('cascade'); + + $table->primary(['role_id', $columnNames['model_morph_key'], 'model_type'], + 'model_has_roles_role_model_type_primary'); + }); + + Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) { + $table->unsignedBigInteger('permission_id'); + $table->unsignedBigInteger('role_id'); + + $table->foreign('permission_id') + ->references('id') + ->on($tableNames['permissions']) + ->onDelete('cascade'); + + $table->foreign('role_id') + ->references('id') + ->on($tableNames['roles']) + ->onDelete('cascade'); + + $table->primary(['permission_id', 'role_id'], 'role_has_permissions_permission_id_role_id_primary'); + }); + + app('cache') + ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null) + ->forget(config('permission.cache.key')); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $tableNames = config('permission.table_names'); + + if (empty($tableNames)) { + throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.'); + } + + Schema::drop($tableNames['role_has_permissions']); + Schema::drop($tableNames['model_has_roles']); + Schema::drop($tableNames['model_has_permissions']); + Schema::drop($tableNames['roles']); + Schema::drop($tableNames['permissions']); + } +} diff --git a/resources/views/vendor/backpack/backupmanager/backup.blade.php b/resources/views/vendor/backpack/backupmanager/backup.blade.php new file mode 100644 index 0000000..6484104 --- /dev/null +++ b/resources/views/vendor/backpack/backupmanager/backup.blade.php @@ -0,0 +1,134 @@ +@extends(backpack_view('layouts.top_left')) + +@php + $breadcrumbs = [ + trans('backpack::crud.admin') => backpack_url('dashboard'), + trans('backpack::backup.backup') => false, + ]; +@endphp + +@section('header') +
+

+ {{ trans('backpack::backup.backup') }} +

+
+@endsection + +@section('content') + + +
+
+ + + + + + + + + + + + @foreach ($backups as $k => $b) + + + + + + + + @endforeach + +
#{{ trans('backpack::backup.location') }}{{ trans('backpack::backup.date') }}{{ trans('backpack::backup.file_size') }}{{ trans('backpack::backup.actions') }}
{{ $k+1 }}{{ $b['disk'] }}{{ \Carbon\Carbon::createFromTimeStamp($b['last_modified'])->formatLocalized('%d %B %Y, %H:%M') }}{{ round((int)$b['file_size']/1048576, 2).' MB' }} + @if ($b['download']) + {{ trans('backpack::backup.download') }} + @endif + {{ trans('backpack::backup.delete') }} +
+ +
+
+ +@endsection + +@section('after_scripts') + + +@endsection diff --git a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php index 80f09b3..07fb54d 100644 --- a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php +++ b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php @@ -1,2 +1,49 @@ - \ No newline at end of file + + + + +@can('maintenance') + +@endcan +{{--@can('manageusers')--}} + + +{{--@endcan--}} diff --git a/resources/views/vendor/backpack/crud/buttons/quiz/download.blade.php b/resources/views/vendor/backpack/crud/buttons/quiz/download.blade.php new file mode 100644 index 0000000..669e481 --- /dev/null +++ b/resources/views/vendor/backpack/crud/buttons/quiz/download.blade.php @@ -0,0 +1,2 @@ + Download diff --git a/resources/views/vendor/backpack/crud/buttons/quiz/import.blade.php b/resources/views/vendor/backpack/crud/buttons/quiz/import.blade.php new file mode 100644 index 0000000..d642525 --- /dev/null +++ b/resources/views/vendor/backpack/crud/buttons/quiz/import.blade.php @@ -0,0 +1,25 @@ + + Import + + +@push('after_scripts') + +@endpush diff --git a/resources/views/vendor/backpack/crud/buttons/quiz/preview.blade.php b/resources/views/vendor/backpack/crud/buttons/quiz/preview.blade.php new file mode 100644 index 0000000..87fa740 --- /dev/null +++ b/resources/views/vendor/backpack/crud/buttons/quiz/preview.blade.php @@ -0,0 +1,3 @@ + Preview diff --git a/resources/views/vendor/backpack/crud/fields/dropzone_media.blade.php b/resources/views/vendor/backpack/crud/fields/dropzone_media.blade.php new file mode 100644 index 0000000..6aee771 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/dropzone_media.blade.php @@ -0,0 +1,227 @@ +@section('previewTemplate') +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+ + Check + + + + + +
+
+ + Error + + + + + + + +
+
+@endsection + +
+ {{ $field['label'] }}
+
+
+ Drop files here or click to upload. +
+
+
+ +{{-- ########################################## --}} +{{-- Extra CSS and JS for this particular field --}} +{{-- If a field type is shown multiple times on a form, the CSS and JS will only be loaded once --}} +@if ($crud->checkIfFieldIsFirstOfItsType($field, $fields)) + {{-- FIELD CSS - will be loaded in the after_styles section --}} + @push('crud_fields_styles') + + + @endpush + + {{-- FIELD JS - will be loaded in the after_scripts section --}} + @push('crud_fields_scripts') + + + + @endpush + +@endif + +@push('crud_fields_scripts') + +@endpush \ No newline at end of file diff --git a/routes/backpack/custom.php b/routes/backpack/custom.php index 687539b..7c43ebf 100644 --- a/routes/backpack/custom.php +++ b/routes/backpack/custom.php @@ -1,12 +1,16 @@ config('backpack.base.route_prefix', 'admin'), + 'prefix' => config('backpack.base.route_prefix', 'admin'), 'middleware' => ['web', config('backpack.base.middleware_key', 'admin')], - 'namespace' => 'App\Http\Controllers\Admin', + 'namespace' => 'App\Http\Controllers\Admin', ], function () { // custom admin routes - Route::crud('company', 'CompanyCrudController'); - Route::crud('locale', 'LocaleCrudController'); - Route::crud('page', 'PageCrudController'); - Route::crud('settings', 'SettingsCrudController'); - Route::crud('user', 'UserCrudController'); + try { + Route::crud('locale', 'LocaleCrudController'); + Route::crud('settings', 'SettingsCrudController'); + Route::crud('page', 'PageCrudController'); + Route::crud('company', 'CompanyCrudController'); + Route::crud('users', 'UsersCrudController'); + } catch (\Throwable $e) { + + } }); diff --git a/routes/backpack/permissionmanager.php b/routes/backpack/permissionmanager.php index de224a8..4577d6d 100644 --- a/routes/backpack/permissionmanager.php +++ b/routes/backpack/permissionmanager.php @@ -13,7 +13,7 @@ Route::group([ 'namespace' => 'Backpack\PermissionManager\app\Http\Controllers', 'prefix' => config('backpack.base.route_prefix', 'admin'), - 'middleware' => ['web', backpack_middleware(), 'can:manageusers'], + 'middleware' => ['web', backpack_middleware()/*, 'can:manageusers'*/], ], function () { Route::crud('permission', 'PermissionCrudController'); Route::crud('role', 'RoleCrudController'); -- 2.39.5