From e92cef3000a1964faff25b6634578251b142a586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Thu, 15 Jul 2021 15:05:36 +0200 Subject: [PATCH 1/3] remove forgotten resources/views/crud --- resources/views/crud/create.blade.php | 47 -------- resources/views/crud/edit.blade.php | 56 ---------- resources/views/crud/formfield.blade.php | 41 ------- .../views/crud/formfields/belongsTo.blade.php | 30 ----- .../crud/formfields/belongsToMany.blade.php | 29 ----- .../views/crud/formfields/boolean.blade.php | 20 ---- .../views/crud/formfields/email.blade.php | 33 ------ .../views/crud/formfields/enum.blade.php | 13 --- .../views/crud/formfields/float.blade.php | 18 --- .../views/crud/formfields/image.blade.php | 26 ----- resources/views/crud/formfields/int.blade.php | 18 --- .../views/crud/formfields/json.blade.php | 22 ---- .../views/crud/formfields/password.blade.php | 67 ----------- .../views/crud/formfields/string.blade.php | 33 ------ .../views/crud/formfields/text.blade.php | 22 ---- resources/views/crud/index.blade.php | 105 ------------------ resources/views/crud/modules/sorter.blade.php | 12 -- resources/views/crud/printfield.blade.php | 57 ---------- resources/views/crud/show.blade.php | 60 ---------- .../crudOverLoad/sondages/edit.blade.php | 4 +- .../crudOverLoad/sondages/show.blade.php | 4 +- .../views/modules/flashMessage.blade.php | 44 -------- 22 files changed, 4 insertions(+), 757 deletions(-) delete mode 100644 resources/views/crud/create.blade.php delete mode 100644 resources/views/crud/edit.blade.php delete mode 100644 resources/views/crud/formfield.blade.php delete mode 100644 resources/views/crud/formfields/belongsTo.blade.php delete mode 100644 resources/views/crud/formfields/belongsToMany.blade.php delete mode 100644 resources/views/crud/formfields/boolean.blade.php delete mode 100644 resources/views/crud/formfields/email.blade.php delete mode 100644 resources/views/crud/formfields/enum.blade.php delete mode 100644 resources/views/crud/formfields/float.blade.php delete mode 100644 resources/views/crud/formfields/image.blade.php delete mode 100644 resources/views/crud/formfields/int.blade.php delete mode 100644 resources/views/crud/formfields/json.blade.php delete mode 100644 resources/views/crud/formfields/password.blade.php delete mode 100644 resources/views/crud/formfields/string.blade.php delete mode 100644 resources/views/crud/formfields/text.blade.php delete mode 100644 resources/views/crud/index.blade.php delete mode 100644 resources/views/crud/modules/sorter.blade.php delete mode 100644 resources/views/crud/printfield.blade.php delete mode 100644 resources/views/crud/show.blade.php delete mode 100644 resources/views/modules/flashMessage.blade.php diff --git a/resources/views/crud/create.blade.php b/resources/views/crud/create.blade.php deleted file mode 100644 index f3e1127..0000000 --- a/resources/views/crud/create.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.backend') - -@section('title', sprintf('%s - Ajouter', Str::plural(class_basename($modelClass)))) -@section('description', sprintf('Ajouter un %s', class_basename($modelClass))) -@section('metaIndex', 'noindex,nofollow') - -@section('content') -
- @include('modules.flashMessage') -
- @can('viewAny', $modelClass) - {{ trans(Str::plural(class_basename($modelClass))) }} - {{ __('Ajouter') }} - @else - {{ Str::plural(class_basename($modelClass)) }} - {{ __('Ajouter') }} - @endcan -
-
-
- @csrf - - - - - - - - - @foreach ($modelClass::getEditableProperties() as $fieldName => $prop) - @php - // create form cannot accept readonly field - $prop['readonly'] = false; - @endphp - @if(in_array(CrudAction::create(), $prop['actions'])) - - @include('crud.formfield') - - @endif - @endforeach - -
{{ __('Propriété') }}{{ __('Valeur') }}
-
- -
-
-
-
-@endsection diff --git a/resources/views/crud/edit.blade.php b/resources/views/crud/edit.blade.php deleted file mode 100644 index 4ea9d2f..0000000 --- a/resources/views/crud/edit.blade.php +++ /dev/null @@ -1,56 +0,0 @@ -@extends('layouts.backend') - -@section('title', sprintf('%s - Editer', trans(Str::plural(class_basename($modelClass))))) -@section('description', sprintf('Editer un %s', trans(class_basename($modelClass)))) -@section('metaIndex', 'noindex,nofollow') - -@section('content') -
- @include('modules.flashMessage') -
- @can('viewAny', $modelClass) - {{ trans(Str::plural(class_basename($modelClass))) }} - {{ __('Editer') }} - @else - {{ trans(Str::plural(class_basename($modelClass))) }} - {{ __('Editer') }} - @endcan -
- @can('view', $model) - {{ __('Voir') }} - @endcan - @can('delete', $model) -
- @csrf - @method('DELETE') - -
- @endcan -
-
-
-
- @method('put') - @csrf - - - - - - - - - @foreach ($modelClass::getEditableProperties() as $fieldName => $prop) - @if(in_array(CrudAction::update(), $prop['actions'])) - - @include('crud.formfield') - - @endif - @endforeach - -
{{ __('Propriété') }}{{ __('Valeur') }}
-
- -
-
-
-
-@endsection diff --git a/resources/views/crud/formfield.blade.php b/resources/views/crud/formfield.blade.php deleted file mode 100644 index d38ead4..0000000 --- a/resources/views/crud/formfield.blade.php +++ /dev/null @@ -1,41 +0,0 @@ -@php -$readonly = is_callable($prop['readonly']) ? $prop['readonly']() : $prop['readonly']; -@endphp -@switch($prop['type']) - @case(CrudType::password()) - @include('crud.formfields.password') - @break - @case(CrudType::boolean()) - @include('crud.formfields.boolean') - @break - @case(CrudType::int()) - @include('crud.formfields.int') - @break - @case(CrudType::float()) - @include('crud.formfields.float') - @break - @case(CrudType::email()) - @include('crud.formfields.email') - @break - @case(CrudType::text()) - @include('crud.formfields.text') - @break - @case(CrudType::json()) - @include('crud.formfields.json') - @break - @case(CrudType::image()) - @include('crud.formfields.image') - @break - @case(CrudType::enum()) - @include('crud.formfields.enum') - @break - @case(CrudType::belongsTo()) - @include('crud.formfields.belongsTo') - @break - @case(CrudType::belongsToMany()) - @include('crud.formfields.belongsToMany') - @break - @case(CrudType::string()) - @default - @include('crud.formfields.string') -@endswitch diff --git a/resources/views/crud/formfields/belongsTo.blade.php b/resources/views/crud/formfields/belongsTo.blade.php deleted file mode 100644 index 9cedcbe..0000000 --- a/resources/views/crud/formfields/belongsTo.blade.php +++ /dev/null @@ -1,30 +0,0 @@ -@php - $related = isset($model) ? $props[$fieldName]['belongsTo']::find($model->{$fieldName}) : null; - if($related) { - $related = [ - 'label' => $related->crudLabel, - 'value' => $related->crudValue - ]; - } -@endphp - - - - - - - - -@push('scriptsConstants') - -@endpush diff --git a/resources/views/crud/formfields/belongsToMany.blade.php b/resources/views/crud/formfields/belongsToMany.blade.php deleted file mode 100644 index 1dd24b6..0000000 --- a/resources/views/crud/formfields/belongsToMany.blade.php +++ /dev/null @@ -1,29 +0,0 @@ -@php - $related = isset($model) ? $model->{$fieldName}->mapWithKeys(function ($model) use($prop) { - return [$model->{'id'} => [ - 'label' => $model->{$prop['belongsToManyLabel']}, - 'value' => $model->{'id'} - ]]; - }) : []; -@endphp - - - - - - - - -@push('scriptsConstants') - -@endpush diff --git a/resources/views/crud/formfields/boolean.blade.php b/resources/views/crud/formfields/boolean.blade.php deleted file mode 100644 index e1c363c..0000000 --- a/resources/views/crud/formfields/boolean.blade.php +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - diff --git a/resources/views/crud/formfields/email.blade.php b/resources/views/crud/formfields/email.blade.php deleted file mode 100644 index a9e6fad..0000000 --- a/resources/views/crud/formfields/email.blade.php +++ /dev/null @@ -1,33 +0,0 @@ - - - - - @if(strlen($prop['placeholder'])) -
- - -
- @else - - @endif - diff --git a/resources/views/crud/formfields/enum.blade.php b/resources/views/crud/formfields/enum.blade.php deleted file mode 100644 index 046ecd0..0000000 --- a/resources/views/crud/formfields/enum.blade.php +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/resources/views/crud/formfields/float.blade.php b/resources/views/crud/formfields/float.blade.php deleted file mode 100644 index ec3e719..0000000 --- a/resources/views/crud/formfields/float.blade.php +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/resources/views/crud/formfields/image.blade.php b/resources/views/crud/formfields/image.blade.php deleted file mode 100644 index 6362773..0000000 --- a/resources/views/crud/formfields/image.blade.php +++ /dev/null @@ -1,26 +0,0 @@ - - - - - @if(strlen($prop['placeholder'])) -
- @endif - {$fieldName}))required @endif> - @if(strlen($prop['placeholder'])) - -
- @endif - @if(isset($model) and $model->{$fieldName}) - {{ sprintf('/storage/%s', $model->{$fieldName}) }} - @endif - diff --git a/resources/views/crud/formfields/int.blade.php b/resources/views/crud/formfields/int.blade.php deleted file mode 100644 index ec3e719..0000000 --- a/resources/views/crud/formfields/int.blade.php +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/resources/views/crud/formfields/json.blade.php b/resources/views/crud/formfields/json.blade.php deleted file mode 100644 index 726b583..0000000 --- a/resources/views/crud/formfields/json.blade.php +++ /dev/null @@ -1,22 +0,0 @@ - - - - -
- -
- -@push('scripts') - - -@endpush diff --git a/resources/views/crud/formfields/password.blade.php b/resources/views/crud/formfields/password.blade.php deleted file mode 100644 index f9dacf1..0000000 --- a/resources/views/crud/formfields/password.blade.php +++ /dev/null @@ -1,67 +0,0 @@ - - - - - @if(strlen($prop['placeholder'])) -
- - -
- @else - - @endif - - - - - - - @if(strlen($prop['placeholder'])) -
- - -
- @else - - @endif - diff --git a/resources/views/crud/formfields/string.blade.php b/resources/views/crud/formfields/string.blade.php deleted file mode 100644 index 566e7a4..0000000 --- a/resources/views/crud/formfields/string.blade.php +++ /dev/null @@ -1,33 +0,0 @@ - - - - - @if(strlen($prop['placeholder'])) -
- - -
- @else - - @endif - diff --git a/resources/views/crud/formfields/text.blade.php b/resources/views/crud/formfields/text.blade.php deleted file mode 100644 index 2a3ea54..0000000 --- a/resources/views/crud/formfields/text.blade.php +++ /dev/null @@ -1,22 +0,0 @@ - - - - -
- -
- -@push('scripts') - - -@endpush diff --git a/resources/views/crud/index.blade.php b/resources/views/crud/index.blade.php deleted file mode 100644 index 0ce68a9..0000000 --- a/resources/views/crud/index.blade.php +++ /dev/null @@ -1,105 +0,0 @@ -@extends('layouts.backend') - -@section('title', sprintf('%s - Liste', trans(Str::plural(class_basename($modelClass))))) -@section('description', sprintf('Liste des %s', trans(Str::plural(class_basename($modelClass))))) -@section('metaIndex', 'noindex,nofollow') - -@section('content') -
- @include('modules.flashMessage') -
- {{ trans(Str::plural(class_basename($modelClass))) }} - {{ __('Liste') }} - @can('create', $modelClass) - {{ __('Ajouter') }} - @endcan -
-
-
-
- {{ $models->links() }} -
-
-
-
- - - - Réinitialiser - -
-
- -
-
- - - - @foreach ($modelClass::getEditableProperties() as $fieldName => $prop) - @if(in_array(CrudAction::viewAny(), $prop['actions'])) - @switch($prop['type']) - @case(CrudType::password()) - {{-- Ignore --}} - @break - @default - - @endswitch - @endif - @endforeach - - - - @if(count($models)) - @foreach($models as $model) - - @foreach ($modelClass::getEditableProperties() as $fieldName => $prop) - @if(in_array(CrudAction::viewAny(), $prop['actions'])) - @switch($prop['type']) - @case(CrudType::password()) - {{-- Ignore --}} - @break - @default - - @endswitch - @endif - @endforeach - - - @endforeach - @else - - - - @endif - -
- {{ $prop['label'] }} - @include('crud.modules.sorter', ['colname' => $fieldName]) -
@include('crud.printfield', [ - 'action' => CrudAction::viewAny(), - 'field' => $model->{$fieldName}, - 'props' => $prop - ]) -
- @can('view', $model) - {{ __('Voir') }} - @endcan - @can('update', $model) - {{ __('Éditer') }} - @endcan - @can('delete', $model) -
- @csrf - @method('DELETE') - -
- @endcan -
-
- Rien à afficher -
- {{ $models->links() }} -
- -@endsection diff --git a/resources/views/crud/modules/sorter.blade.php b/resources/views/crud/modules/sorter.blade.php deleted file mode 100644 index 998fc63..0000000 --- a/resources/views/crud/modules/sorter.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@php -$tableName = (new $modelClass())->getTable(); -$sortParams = ['sort_col' => $colname]; -$sortParams = request()->search ? - array_merge($sortParams, ['search' => request()->search]) : $sortParams; -@endphp -@if(!session("crud.$tableName.sort_way") or session("crud.$tableName.sort_col") !== $colname or (session("crud.$tableName.sort_way") === 'desc' and session("crud.$tableName.sort_col") === $colname)) - 'asc'])) }}"> ↓  -@endif -@if(!session("crud.$tableName.sort_way") or session("crud.$tableName.sort_col") !== $colname or (session("crud.$tableName.sort_way") === 'asc' and session("crud.$tableName.sort_col") === $colname)) - 'desc'])) }}"> ↑  -@endif diff --git a/resources/views/crud/printfield.blade.php b/resources/views/crud/printfield.blade.php deleted file mode 100644 index a9aff63..0000000 --- a/resources/views/crud/printfield.blade.php +++ /dev/null @@ -1,57 +0,0 @@ -@switch($action) - @case(CrudAction::viewAny()) - @switch($props['type']) - @case(CrudType::email()) - {{ $field }} - @break - @case(CrudType::enum()) - {{ $model->{$fieldName}->label }} - @break - @case(CrudType::belongsTo()) - {{ $prop['belongsTo']::find($model->{$fieldName})->{$model->crudLabelColumn} }} - @break - @case(CrudType::belongsToMany()) - {{ $model->{$fieldName}->implode($prop['belongsToManyLabel'], ',') }} - @break - @case(CrudType::boolean()) - @if($model->{$fieldName})OUI @else NON @endif - @break - @case(CrudType::image()) - {{ sprintf('/storage/%s', $model->{$fieldName}) }} - @break - @default - {{ $field }} - @endswitch - @break - - @case(CrudAction::view()) - @switch($props['type']) - @case(CrudType::email()) - {{ $field }} - @break - @case(CrudType::enum()) - {{ $model->{$fieldName}->label }} - @break - @case(CrudType::json()) - @json($field) - @break - @case(CrudType::boolean()) - @if($model->{$fieldName})OUI @else NON @endif - @break - @case(CrudType::image()) - {{ sprintf('/storage/%s', $model->{$fieldName}) }} - @break - @case(CrudType::belongsTo()) - {{ $prop['belongsTo']::find($model->{$fieldName})->{$model->crudLabelColumn} }} - @break - @case(CrudType::belongsToMany()) - {{ $model->{$fieldName}->implode($prop['belongsToManyLabel'], ',') }} - @break - @default - {{ $field }} - @endswitch - @break - - @default - @dd('unknown action') -@endswitch diff --git a/resources/views/crud/show.blade.php b/resources/views/crud/show.blade.php deleted file mode 100644 index c3d797d..0000000 --- a/resources/views/crud/show.blade.php +++ /dev/null @@ -1,60 +0,0 @@ -@extends('layouts.backend') - -@section('title', sprintf('%s - Voir', trans(Str::plural(class_basename($modelClass))))) -@section('description', sprintf('Voir un %s', trans(class_basename($modelClass)))) -@section('metaIndex', 'noindex,nofollow') - -@section('content') -
- @include('modules.flashMessage') -
- @can('viewAny', $modelClass) - {{ trans(Str::plural(class_basename($modelClass))) }} - {{ __('Voir') }} - @else - {{ trans(Str::plural(class_basename($modelClass))) }} - {{ __('Voir') }} - @endcan -
- @can('update', $model) - {{ __('Modifier') }} - @endcan - @can('delete', $model) -
- @csrf - @method('DELETE') - -
- @endcan -
-
-
- - - - - - - - - @foreach ($modelClass::getEditableProperties() as $fieldName => $prop) - @if(in_array(CrudAction::view(), $prop['actions'])) - @switch($prop['type']) - @case(CrudType::password()) - {{-- Ignore --}} - @break - @default - - - - - @endswitch - @endif - @endforeach - -
{{ __('Propriété') }}{{ __('Valeur') }}
{{ $prop['label'] }}@include('crud.printfield', [ - 'action' => CrudAction::view(), - 'field' => $model->{$fieldName}, - 'props' => $prop - ])
-
-
-@endsection diff --git a/resources/views/crudOverLoad/sondages/edit.blade.php b/resources/views/crudOverLoad/sondages/edit.blade.php index 7178889..210e931 100644 --- a/resources/views/crudOverLoad/sondages/edit.blade.php +++ b/resources/views/crudOverLoad/sondages/edit.blade.php @@ -6,7 +6,7 @@ @section('content')
- @include('modules.flashMessage') + @include('crud-policies::crud.modules.flashMessage')
{{ Str::plural(class_basename($modelClass)) }} - {{ __('Editer') }}
@@ -34,7 +34,7 @@ @foreach ($modelClass::getEditableProperties() as $fieldName => $prop) @if(in_array(CrudAction::update(), $prop['actions'])) - @include('crud.formfield') + @include('crud-policies::crud.formfield') @endif @endforeach diff --git a/resources/views/crudOverLoad/sondages/show.blade.php b/resources/views/crudOverLoad/sondages/show.blade.php index 18cfad7..f16da84 100644 --- a/resources/views/crudOverLoad/sondages/show.blade.php +++ b/resources/views/crudOverLoad/sondages/show.blade.php @@ -6,7 +6,7 @@ @section('content')
- @include('modules.flashMessage') + @include('crud-policies::crud.modules.flashMessage')
{{ Str::plural(class_basename($modelClass)) }} - {{ __('Voir') }}
@@ -33,7 +33,7 @@ @default {{ $prop['label'] }} - @include('crud.printfield', [ + @include('crud-policies::crud.printfield', [ 'action' => CrudAction::view(), 'field' => $model->{$fieldName}, 'props' => $prop diff --git a/resources/views/modules/flashMessage.blade.php b/resources/views/modules/flashMessage.blade.php deleted file mode 100644 index 919668a..0000000 --- a/resources/views/modules/flashMessage.blade.php +++ /dev/null @@ -1,44 +0,0 @@ -@if ($message = Session::get('success')) -
- - {!! nl2br(e($message)) !!} -
-@endif - - -@if ($message = Session::get('error')) -
- - {!! nl2br(e($message)) !!} -
-@endif - - -@if ($message = Session::get('warning')) -
- - {!! nl2br(e($message)) !!} -
-@endif - - -@if ($message = Session::get('info')) -
- - {!! nl2br(e($message)) !!} -
-@endif - - -@if ($errors->any()) -
- - @if ($errors->any()) -
    - @foreach ($errors->all() as $error) -
  • {{ $error }}
  • - @endforeach -
- @endif -
-@endif From 7fc5942ee0b23d04753b16a9bc2bf0c286b8b916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Thu, 15 Jul 2021 15:06:14 +0200 Subject: [PATCH 2/3] Fix user.update validation rule for email --- app/Models/User.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Models/User.php b/app/Models/User.php index d82e546..76cb2c4 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -99,7 +99,18 @@ class User extends Authenticatable 'nullable' => false, 'validate' => [ 'max:255', - 'unique:users,email' + // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed + function ($attribute, $value, $fail) { + $q = User::query(); + if ($this->id) { + $q = $q->where('id', '!=', $this->id); + } + if ($q->where('email', $value)->exists()) { + $fail(__(':attribute est déjà utilisé', [ + 'attribute' => $attribute + ])); + } + } ], 'actions' => [ CrudAction::viewAny(), From 773ce226436c5cf253f813259351309ce74c6f20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Mon, 19 Jul 2021 15:24:17 +0200 Subject: [PATCH 3/3] - bump to kwaadpepper/crud-policies 0.1.1 - clean up remaining crud elements --- app/Http/Controllers/EmployeesController.php | 5 +- app/Http/Controllers/HomeController.php | 3 +- app/Http/Controllers/PlanningController.php | 3 +- app/Models/Site.php | 10 +- app/Policies/EmployeePolicy.php | 43 ++++++- composer.json | 2 +- composer.lock | 16 +-- config/crud-policies.php | 33 ++++++ resources/js/back.js | 1 - resources/js/components/backend/belongsTo.vue | 112 ------------------ .../js/components/backend/belongsToMany.vue | 108 ----------------- resources/js/crud.js | 21 ---- resources/sass/__import.scss | 1 - resources/sass/_crud.scss | 12 -- .../back/employees/import-exit.blade.php | 2 +- .../views/back/employees/import.blade.php | 2 +- resources/views/back/home.blade.php | 2 +- .../views/back/plannings/import.blade.php | 2 +- .../crudOverLoad/sondages/edit.blade.php | 11 +- resources/views/layouts/backend.blade.php | 2 + 20 files changed, 105 insertions(+), 286 deletions(-) create mode 100644 config/crud-policies.php delete mode 100644 resources/js/components/backend/belongsTo.vue delete mode 100644 resources/js/components/backend/belongsToMany.vue delete mode 100644 resources/js/crud.js delete mode 100644 resources/sass/_crud.scss diff --git a/app/Http/Controllers/EmployeesController.php b/app/Http/Controllers/EmployeesController.php index 0c17490..7ac11a1 100644 --- a/app/Http/Controllers/EmployeesController.php +++ b/app/Http/Controllers/EmployeesController.php @@ -36,6 +36,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Session; +use Illuminate\Support\Facades\View; use Kwaadpepper\CrudPolicies\Traits\CrudController; use Maatwebsite\Excel\Excel as LExcel; use Maatwebsite\Excel\Facades\Excel; @@ -82,7 +83,7 @@ class EmployeesController extends Controller public function importExit() { $this->authorize('importExit', Employee::class); - self::shareCrudModelsClassesToView(); + View::share('modelsClasses', static::getCrudModels()); return view('back.employees.import-exit'); } @@ -144,7 +145,7 @@ class EmployeesController extends Controller public function import() { $this->authorize('import', Employee::class); - self::shareCrudModelsClassesToView(); + View::share('modelsClasses', CrudController::getCrudModels()); return view('back.employees.import'); } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 291a33c..eed70e1 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use Illuminate\Support\Facades\View; use Kwaadpepper\CrudPolicies\Traits\CrudController; class HomeController extends Controller @@ -10,7 +11,7 @@ class HomeController extends Controller public function home() { - CrudController::shareCrudModelsClassesToView(); + View::share('modelsClasses', CrudController::getCrudModels()); return view('back.home'); } } diff --git a/app/Http/Controllers/PlanningController.php b/app/Http/Controllers/PlanningController.php index 6a60ac8..da8d359 100644 --- a/app/Http/Controllers/PlanningController.php +++ b/app/Http/Controllers/PlanningController.php @@ -7,6 +7,7 @@ use App\Imports\PlanningImport; use App\Models\Planning; use App\Models\Site; use Illuminate\Http\UploadedFile; +use Illuminate\Support\Facades\View; use Kwaadpepper\CrudPolicies\Traits\CrudController; use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Excel as LExcel; @@ -27,7 +28,7 @@ class PlanningController extends Controller public function import() { $this->authorize('import', Planning::class); - CrudController::shareCrudModelsClassesToView(); + View::share('modelsClasses', CrudController::getCrudModels()); return view('back.plannings.import'); } diff --git a/app/Models/Site.php b/app/Models/Site.php index 36b5a7a..dc64106 100644 --- a/app/Models/Site.php +++ b/app/Models/Site.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Enums\Role; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Kwaadpepper\CrudPolicies\Enums\CrudAction; @@ -167,12 +168,15 @@ class Site extends Model 'belongsTo' => Societe::class, 'actions' => [ CrudAction::viewAny(), - CrudAction::view(), - CrudAction::create(), - CrudAction::update() + CrudAction::view() ] ] ]; + + if (auth()->user() and auth()->user()->role->equals(Role::admin())) { + self::$editableProperties['societe_id']['actions'][] = CrudAction::create(); + self::$editableProperties['societe_id']['actions'][] = CrudAction::update(); + } parent::__construct($attributes); } diff --git a/app/Policies/EmployeePolicy.php b/app/Policies/EmployeePolicy.php index 9bffdd1..35ff0ed 100644 --- a/app/Policies/EmployeePolicy.php +++ b/app/Policies/EmployeePolicy.php @@ -2,9 +2,50 @@ namespace App\Policies; +use App\Models\User; use Illuminate\Auth\Access\HandlesAuthorization; +use Kwaadpepper\CrudPolicies\Policies\RootPolicy; +use App\Policies\Rules\UserStaticRules as USR; +use App\Policies\Rules\UserRoleRules as URR; +use App\Policies\Rules\EmployeeStaticRules as SaSR; +use Illuminate\Database\Eloquent\Model; +use Kwaadpepper\CrudPolicies\Policies\Rules\StaticRules; -class EmployeePolicy extends AppPolicies +class EmployeePolicy extends RootPolicy { use HandlesAuthorization; + + /** + * Init policies on call + * + * @param User $user + * @param Model $model + * @return void + */ + public function setPolicies(User $user, Model $model = null) + { + /** + * This first rule to return true in a policy action authorises the action + */ + $this->policies = [ + 'employee' => [ + 'viewAny' => USR::make('everyOne'), + 'view' => StaticRules::or([ + URR::make('userIsAdmin', $user), + SaSR::make('employeeIsOwnedByUser', $user, $model) + ]), + 'update' => StaticRules::or([ + URR::make('userIsAdmin', $user), + SaSR::make('employeeIsOwnedByUser', $user, $model) + ]), + 'create' => USR::make('everyOne'), + 'delete' => StaticRules::or([ + URR::make('userIsAdmin', $user), + SaSR::make('employeeIsOwnedByUser', $user, $model) + ]), + 'import' => USR::make('everyOne'), + 'importExit' => USR::make('everyOne') + ] + ]; + } } diff --git a/composer.json b/composer.json index ecf1c54..0834a13 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ "fruitcake/laravel-cors": "^2.0", "guzzlehttp/guzzle": "^7.0.1", "htmlmin/htmlmin": "^8.0", - "kwaadpepper/crud-policies": "^0.0.1", + "kwaadpepper/crud-policies": "^0.1.1", "kwaadpepper/enum": "^0.1.4", "kwaadpepper/image-resizer": "^0.0.3", "laravel/framework": "^8.12", diff --git a/composer.lock b/composer.lock index 727e85a..0a768df 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0c397e537654e64d226ffcb97dce406b", + "content-hash": "24d9aa36e131e7867c72fa78c51cfcb5", "packages": [ { "name": "asm89/stack-cors", @@ -1683,16 +1683,16 @@ }, { "name": "kwaadpepper/crud-policies", - "version": "0.0.1", + "version": "0.1.1", "source": { "type": "git", "url": "https://github.com/Kwaadpepper/crud-policies.git", - "reference": "9fb83c3696f2e2bf5b9c06a4ed098b3d089843cc" + "reference": "cb3bce79d646c8530add808f04d4406ded910fc9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Kwaadpepper/crud-policies/zipball/9fb83c3696f2e2bf5b9c06a4ed098b3d089843cc", - "reference": "9fb83c3696f2e2bf5b9c06a4ed098b3d089843cc", + "url": "https://api.github.com/repos/Kwaadpepper/crud-policies/zipball/cb3bce79d646c8530add808f04d4406ded910fc9", + "reference": "cb3bce79d646c8530add808f04d4406ded910fc9", "shasum": "" }, "require": { @@ -1710,7 +1710,7 @@ "extra": { "laravel": { "providers": [ - "Kwaadpepper\\CrudPolicies\\CrudPoliciesServiceProvider" + "Kwaadpepper\\CrudPolicies\\Providers\\CrudPoliciesServiceProvider" ] } }, @@ -1740,9 +1740,9 @@ ], "support": { "issues": "https://github.com/Kwaadpepper/crud-policies/issues", - "source": "https://github.com/Kwaadpepper/crud-policies/tree/0.0.1" + "source": "https://github.com/Kwaadpepper/crud-policies/tree/0.1.1" }, - "time": "2021-07-14T23:54:49+00:00" + "time": "2021-07-19T13:20:33+00:00" }, { "name": "kwaadpepper/enum", diff --git a/config/crud-policies.php b/config/crud-policies.php new file mode 100644 index 0000000..34254a7 --- /dev/null +++ b/config/crud-policies.php @@ -0,0 +1,33 @@ + 'crud-policies', + + /** + * The public path where are stored + * crud-policies asset files + * + * Change this if you want to modify + * published assets folder under /public + ** default is 'vendor/crud-policies' + */ + 'assetPath' => 'vendor/crud-policies', + + /** + * This is the package layout that will be used + * to display crud elements + * + * You can publish views to know what sections it + * has to display + */ + 'viewLayout' => 'layouts.backend', + + // Dont touch this + 'isLoaded' => true +]; diff --git a/resources/js/back.js b/resources/js/back.js index 267d60a..40c55f6 100644 --- a/resources/js/back.js +++ b/resources/js/back.js @@ -1,2 +1 @@ require('./bootstrap'); -require('./crud'); diff --git a/resources/js/components/backend/belongsTo.vue b/resources/js/components/backend/belongsTo.vue deleted file mode 100644 index 3a2653f..0000000 --- a/resources/js/components/backend/belongsTo.vue +++ /dev/null @@ -1,112 +0,0 @@ - - - diff --git a/resources/js/components/backend/belongsToMany.vue b/resources/js/components/backend/belongsToMany.vue deleted file mode 100644 index 2437db8..0000000 --- a/resources/js/components/backend/belongsToMany.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - diff --git a/resources/js/crud.js b/resources/js/crud.js deleted file mode 100644 index 52c4465..0000000 --- a/resources/js/crud.js +++ /dev/null @@ -1,21 +0,0 @@ -require('./vuejs') - -window.__CRUD = { - confirmDelete: (e) => { - let self = e.target - e.preventDefault(); - Swal.fire({ - title: 'Confirmez', - text: 'Voulez-vous vraiment supprimer cet élément ?', - icon: 'question', - confirmButtonText: 'Supprimer', - showCancelButton: true, - cancelButtonText: 'Annuler', - confirmButtonColor: '#dc3545' - }).then((result) => { - if (result.isConfirmed) { - self.submit() - } - }) - } -} diff --git a/resources/sass/__import.scss b/resources/sass/__import.scss index 6f47c2e..7d9c21e 100644 --- a/resources/sass/__import.scss +++ b/resources/sass/__import.scss @@ -1,3 +1,2 @@ @import "variables"; @import "classes"; -@import "crud"; diff --git a/resources/sass/_crud.scss b/resources/sass/_crud.scss deleted file mode 100644 index 7251816..0000000 --- a/resources/sass/_crud.scss +++ /dev/null @@ -1,12 +0,0 @@ -@import "vue-select/src/scss/vue-select.scss"; - -// readonly checkboxes -select[readonly],input[type='checkbox'][readonly]{ - pointer-events: none; -} - -//bootstrap overload -.btn-group > form:not(:first-child) > .btn-group:not(:last-child) > .btn, .btn-group > form:not(:first-child) > .btn:last-child:not(.dropdown-toggle) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} diff --git a/resources/views/back/employees/import-exit.blade.php b/resources/views/back/employees/import-exit.blade.php index 1967d0c..524d53c 100644 --- a/resources/views/back/employees/import-exit.blade.php +++ b/resources/views/back/employees/import-exit.blade.php @@ -6,7 +6,7 @@ @section('content')
- @include('modules.flashMessage') + @include('crud-policies::crud.modules.flashMessage')
{{ __('Salaries - Import Fichier de Sortie Employés') }}
diff --git a/resources/views/back/employees/import.blade.php b/resources/views/back/employees/import.blade.php index fa1e2b6..97ea7ff 100644 --- a/resources/views/back/employees/import.blade.php +++ b/resources/views/back/employees/import.blade.php @@ -6,7 +6,7 @@ @section('content')
- @include('modules.flashMessage') + @include('crud-policies::crud.modules.flashMessage')
{{ __('Salaries - Import') }}
diff --git a/resources/views/back/home.blade.php b/resources/views/back/home.blade.php index 270a242..b2210d4 100644 --- a/resources/views/back/home.blade.php +++ b/resources/views/back/home.blade.php @@ -6,7 +6,7 @@ @section('content')
- @include('modules.flashMessage') + @include('crud-policies::crud.modules.flashMessage')
{{ __('Back office') }}

Portail Salarie

diff --git a/resources/views/back/plannings/import.blade.php b/resources/views/back/plannings/import.blade.php index d1d4748..fd0bbbf 100644 --- a/resources/views/back/plannings/import.blade.php +++ b/resources/views/back/plannings/import.blade.php @@ -6,7 +6,7 @@ @section('content')
- @include('modules.flashMessage') + @include('crud-policies::crud.modules.flashMessage')
{{ __('Plannings - Import') }}
diff --git a/resources/views/crudOverLoad/sondages/edit.blade.php b/resources/views/crudOverLoad/sondages/edit.blade.php index 210e931..a204b7e 100644 --- a/resources/views/crudOverLoad/sondages/edit.blade.php +++ b/resources/views/crudOverLoad/sondages/edit.blade.php @@ -50,14 +50,5 @@
+@include('crud-policies::crud.modules.scriptConstants') @endsection - -@push('scriptsConstants') - -@endpush diff --git a/resources/views/layouts/backend.blade.php b/resources/views/layouts/backend.blade.php index 54ddb49..ab9784c 100644 --- a/resources/views/layouts/backend.blade.php +++ b/resources/views/layouts/backend.blade.php @@ -3,6 +3,7 @@ @include('layouts.backend.head') @stack('styles') + @crudPoliciesCSS()
@@ -29,5 +30,6 @@ @stack('scripts') + @crudPoliciesJS()