From 2331beab172ab02ba05ead7f46d52578b9275fbe Mon Sep 17 00:00:00 2001 From: Mathieu Lagace Date: Thu, 12 Sep 2019 07:53:18 -0400 Subject: [PATCH 1/7] 3.2.3 --- app/Http/Controllers/PermissionController.php | 85 +++++++++ app/Http/Controllers/RankController.php | 6 +- app/Permission.php | 95 ++++++++++ app/Rank.php | 7 +- .../2018_08_21_094646_create_ranks_table.php | 19 +- database/seeds/RanksTableSeeder.php | 171 +----------------- public/js/permissions.js | 40 ++++ resources/assets/js/permissions.js | 8 + .../views/admin/configs/ranks/index.blade.php | 34 ++++ .../views/admin/configs/ranks/show.blade.php | 87 +++++++++ .../views/layouts/admin/sidebar.blade.php | 12 ++ routes/web.php | 4 + 12 files changed, 378 insertions(+), 190 deletions(-) create mode 100644 app/Http/Controllers/PermissionController.php create mode 100644 app/Permission.php create mode 100644 public/js/permissions.js create mode 100644 resources/assets/js/permissions.js create mode 100644 resources/views/admin/configs/ranks/index.blade.php create mode 100644 resources/views/admin/configs/ranks/show.blade.php diff --git a/app/Http/Controllers/PermissionController.php b/app/Http/Controllers/PermissionController.php new file mode 100644 index 00000000..3e656a99 --- /dev/null +++ b/app/Http/Controllers/PermissionController.php @@ -0,0 +1,85 @@ + Rank::all()]); } /** @@ -44,9 +44,9 @@ class RankController extends Controller * @param \App\Rank $rank * @return \Illuminate\Http\Response */ - public function show(Rank $rank) + public function show($rank) { - // + return view('admin.configs.ranks.show',['rank' => Rank::find($rank)]); } /** diff --git a/app/Permission.php b/app/Permission.php new file mode 100644 index 00000000..76395ee4 --- /dev/null +++ b/app/Permission.php @@ -0,0 +1,95 @@ + [ + 'news_see' => [ + 'id' => 'news_see', + 'communName' => 'Voir les nouvelles', + 'desc' => 'L\'utilisateur peut-il consulter les nouvelles', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'news_add' => [ + 'id' => 'news_add', + 'communName' => 'Ajouter une nouvelles', + 'desc' => 'L\'utilisateur peut-il ajouter une nouvelle', + 'icon' => 'fa-plus', + 'valeur' => 0 + ], + 'news_edit' => [ + 'id' => 'news_edit', + 'communName' => 'Modifier une nouvelles', + 'desc' => 'L\'utilisateur peut-il modifier une nouvelle', + 'icon' => 'fa-edit', + 'valeur' => 0 + ], + 'news_delete' => [ + 'id' => 'news_delete', + 'communName' => 'Supprimer une nouvelles', + 'desc' => 'L\'utilisateur peut-il supprimer une nouvelle', + 'icon' => 'fa-close', + 'valeur' => 0 + ] + ], + 'message' => [ + 'msg_see' => [ + 'id' => 'msg_see', + 'communName' => 'Voir les messages', + 'desc' => 'L\'utilisateur peut-il consulter les messages de la semaine', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'msg_add' => [ + 'id' => 'msg_add', + 'communName' => 'Ajouter un message', + 'desc' => 'L\'utilisateur peut-il ajouter un message de la semaine', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'msg_edit' => [ + 'id' => 'msg_edit', + 'communName' => 'Modifier un message', + 'desc' => 'L\'utilisateur peut-il modifier les messages de la semaine', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'msg_delete' => [ + 'id' => 'msg_delete', + 'communName' => 'Supprimer un message', + 'desc' => 'L\'utilisateur peut-il supprimer un message de la semaine', + 'icon' => 'fa-eye', + 'valeur' => 0 + ] + ] + ]; + + return $perm; + } + + public static function allToArray() + { + $permissions = []; + foreach (Permission::all() as $cat) + { + foreach ($cat as $perm) + { + $permissions[$perm['id']] = 0; + } + } + return $permissions; + } + + public static function allToString() + { + return json_encode(Permission::allToArray()); + } +} diff --git a/app/Rank.php b/app/Rank.php index 1e74e9cb..18e499e8 100644 --- a/app/Rank.php +++ b/app/Rank.php @@ -6,7 +6,8 @@ use Illuminate\Database\Eloquent\Model; class Rank extends Model { - protected $casts = [ - 'perm' => 'array', - ]; + public function permissions() + { + return collect(json_decode($this->permissions,true)); + } } diff --git a/database/migrations/2018_08_21_094646_create_ranks_table.php b/database/migrations/2018_08_21_094646_create_ranks_table.php index 69bea7da..3d81f0c0 100644 --- a/database/migrations/2018_08_21_094646_create_ranks_table.php +++ b/database/migrations/2018_08_21_094646_create_ranks_table.php @@ -15,23 +15,10 @@ class CreateRanksTable extends Migration { Schema::create('ranks', function (Blueprint $table) { $table->increments('id'); - $table->string('name'); + $table->string('name'); + $table->text('desc'); $table->text('acces_level'); - $table->boolean('schedule_see'); - $table->boolean('schedule_edit'); - $table->boolean('schedule_notify'); - $table->boolean('message_see'); - $table->boolean('message_edit'); - $table->boolean('message_notify'); - $table->boolean('paper_edit'); - $table->boolean('paper_publish'); - $table->boolean('paper_notify'); - $table->boolean('inventory_see'); - $table->boolean('inventory_edit'); - $table->boolean('inventory_notify'); - $table->boolean('user_see'); - $table->boolean('user_edit'); - $table->boolean('user_notify'); + $table->text('permissions'); $table->timestamps(); }); } diff --git a/database/seeds/RanksTableSeeder.php b/database/seeds/RanksTableSeeder.php index e5ca8a9c..34d0537c 100644 --- a/database/seeds/RanksTableSeeder.php +++ b/database/seeds/RanksTableSeeder.php @@ -15,174 +15,9 @@ class RanksTableSeeder extends Seeder [ 'name' => "SuperAdmin", 'acces_level' => '2', - 'schedule_see' => true, - 'schedule_edit' => true, - 'schedule_notify' => true, - 'message_see' => true, - 'message_edit' => true, - 'message_notify' => true, - 'paper_edit' => true, - 'paper_publish' => true, - 'paper_notify' => true, - 'inventory_see' => true, - 'inventory_edit' => true, - 'inventory_notify' => true, - 'user_see' => true, - 'user_edit' => true, - 'user_notify' => true - ], - [ - 'name' => "Cadet", - 'acces_level' => '0', - 'schedule_see' => false, - 'schedule_edit' => false, - 'schedule_notify' => false, - 'message_see' => false, - 'message_edit' => false, - 'message_notify' => false, - 'paper_edit' => false, - 'paper_publish' => false, - 'paper_notify' => false, - 'inventory_see' => false, - 'inventory_edit' => false, - 'inventory_notify' => false, - 'user_see' => false, - 'user_edit' => false, - 'user_notify' => false - ], - [ - 'name' => "1er classe", - 'acces_level' => '0', - 'schedule_see' => false, - 'schedule_edit' => false, - 'schedule_notify' => false, - 'message_see' => false, - 'message_edit' => false, - 'message_notify' => false, - 'paper_edit' => false, - 'paper_publish' => false, - 'paper_notify' => false, - 'inventory_see' => false, - 'inventory_edit' => false, - 'inventory_notify' => false, - 'user_see' => false, - 'user_edit' => false, - 'user_notify' => false - ], - [ - 'name' => "Caporal", - 'acces_level' => '0', - 'schedule_see' => false, - 'schedule_edit' => false, - 'schedule_notify' => false, - 'message_see' => false, - 'message_edit' => false, - 'message_notify' => false, - 'paper_edit' => false, - 'paper_publish' => false, - 'paper_notify' => false, - 'inventory_see' => false, - 'inventory_edit' => false, - 'inventory_notify' => false, - 'user_see' => false, - 'user_edit' => false, - 'user_notify' => false - ], - [ - 'name' => "Caporal de section", - 'acces_level' => '0', - 'schedule_see' => false, - 'schedule_edit' => false, - 'schedule_notify' => false, - 'message_see' => false, - 'message_edit' => false, - 'message_notify' => false, - 'paper_edit' => false, - 'paper_publish' => false, - 'paper_notify' => false, - 'inventory_see' => false, - 'inventory_edit' => false, - 'inventory_notify' => false, - 'user_see' => false, - 'user_edit' => false, - 'user_notify' => false - ], - [ - 'name' => "Sergent", - 'acces_level' => '1', - 'schedule_see' => true, - 'schedule_edit' => false, - 'schedule_notify' => false, - 'message_see' => true, - 'message_edit' => false, - 'message_notify' => true, - 'paper_edit' => false, - 'paper_publish' => false, - 'paper_notify' => false, - 'inventory_see' => true, - 'inventory_edit' => false, - 'inventory_notify' => false, - 'user_see' => false, - 'user_edit' => false, - 'user_notify' => false - ], - [ - 'name' => "Sergent de section", - 'acces_level' => '1', - 'schedule_see' => true, - 'schedule_edit' => false, - 'schedule_notify' => false, - 'message_see' => true, - 'message_edit' => false, - 'message_notify' => true, - 'paper_edit' => false, - 'paper_publish' => false, - 'paper_notify' => false, - 'inventory_see' => true, - 'inventory_edit' => false, - 'inventory_notify' => false, - 'user_see' => false, - 'user_edit' => false, - 'user_notify' => false - ], - [ - 'name' => "Adjudant 2e Classe", - 'acces_level' => '2', - 'schedule_see' => true, - 'schedule_edit' => false, - 'schedule_notify' => false, - 'message_see' => true, - 'message_edit' => true, - 'message_notify' => true, - 'paper_edit' => true, - 'paper_publish' => false, - 'paper_notify' => false, - 'inventory_see' => true, - 'inventory_edit' => false, - 'inventory_notify' => false, - 'user_see' => true, - 'user_edit' => false, - 'user_notify' => false - ], - [ - 'name' => "Adjudant 1er Classe", - 'acces_level' => '2', - 'schedule_see' => true, - 'schedule_edit' => true, - 'schedule_notify' => true, - 'message_see' => true, - 'message_edit' => true, - 'message_notify' => true, - 'paper_edit' => true, - 'paper_publish' => true, - 'paper_notify' => true, - 'inventory_see' => true, - 'inventory_edit' => true, - 'inventory_notify' => true, - 'user_see' => true, - 'user_edit' => true, - 'user_notify' => true - ], + 'desc' => 'Compte SuperAdmin donne toutes les permissions ne peux être modifié', + 'permissions' => \App\Permission::allToString() + ] ]); } } diff --git a/public/js/permissions.js b/public/js/permissions.js new file mode 100644 index 00000000..35ca3962 --- /dev/null +++ b/public/js/permissions.js @@ -0,0 +1,40 @@ +function switchPermissionSwitch(rank,valeur) +{ + switch (valeur) { + case 'close': + $('#'+rank).val('-1'); + $('#'+rank+'-close').addClass('btn-danger'); + $('#'+rank+'-close').removeClass('btn-outline-danger'); + + $('#'+rank+'-slash').removeClass('btn-warning'); + $('#'+rank+'-slash').addClass('btn-outline-warning'); + + $('#'+rank+'-plus').addClass('btn-outline-success'); + $('#'+rank+'-plus').removeClass('btn-success'); + break; + + case 'slash': + $('#'+rank).val('0'); + $('#'+rank+'-close').addClass('btn-outline-danger'); + $('#'+rank+'-close').removeClass('btn-danger'); + + $('#'+rank+'-slash').addClass('btn-warning'); + $('#'+rank+'-slash').removeClass('btn-outline-warning'); + + $('#'+rank+'-plus').addClass('btn-outline-success'); + $('#'+rank+'-plus').removeClass('btn-success'); + break; + + case 'plus': + $('#'+rank).val('1'); + $('#'+rank+'-close').addClass('btn-outline-danger'); + $('#'+rank+'-close').removeClass('btn-danger'); + + $('#'+rank+'-slash').removeClass('btn-warning'); + $('#'+rank+'-slash').addClass('btn-outline-warning'); + + $('#'+rank+'-plus').addClass('btn-success'); + $('#'+rank+'-plus').removeClass('btn-outline-success'); + break; + } +} diff --git a/resources/assets/js/permissions.js b/resources/assets/js/permissions.js new file mode 100644 index 00000000..6f33d8cd --- /dev/null +++ b/resources/assets/js/permissions.js @@ -0,0 +1,8 @@ +function switchPermissionSwitch(rank,valeur) +{ + switch (valeur) { + case 'close': + $('#'+rank+'-close').addClass('btn-danger'); + $('#'+rank+'-close').removeClass('btn-danger'); + } +} diff --git a/resources/views/admin/configs/ranks/index.blade.php b/resources/views/admin/configs/ranks/index.blade.php new file mode 100644 index 00000000..87c484c7 --- /dev/null +++ b/resources/views/admin/configs/ranks/index.blade.php @@ -0,0 +1,34 @@ +@extends('layouts.admin.main') + +@section('content') +
+
+
+

Configuration des grades

+
+
+
+ @foreach($ranks as $rank) +
+
+
+

{{$rank->name}}

+
+
+
+ {{$rank->desc}} +
+
+
+ Gérer +
+
+
+
+
+ @endforeach +
+
+
+
+@endsection diff --git a/resources/views/admin/configs/ranks/show.blade.php b/resources/views/admin/configs/ranks/show.blade.php new file mode 100644 index 00000000..292a49df --- /dev/null +++ b/resources/views/admin/configs/ranks/show.blade.php @@ -0,0 +1,87 @@ +@extends('layouts.admin.main') + +@section('content') +
+
+
+

Configuration du grade {{$rank->name}}

+
+
+
+ @csrf + +
+
+
+ + + Nom du grade +
+
+
+
+ + + Description du grade +
+
+
+
+

Permissions du Grade

+

+ Choisissez quels permissions doivent être associé avec ce grade. +

+
+ @foreach(\App\Permission::all() as $key => $cat) +
+ + +
+
+
+ @foreach($cat as $rank) +
+ +
{{$rank['communName']}}
+
+ + + +
+

+ {{$rank['desc']}} +

+
+ @endforeach +
+
+
+
+ @endforeach +
+
+
+ +
+
+
+
+
+
+@endsection + +@section('custom_scripts') + + +@endsection \ No newline at end of file diff --git a/resources/views/layouts/admin/sidebar.blade.php b/resources/views/layouts/admin/sidebar.blade.php index cde959a2..093c8f12 100644 --- a/resources/views/layouts/admin/sidebar.blade.php +++ b/resources/views/layouts/admin/sidebar.blade.php @@ -234,6 +234,18 @@ Apparence + + diff --git a/routes/web.php b/routes/web.php index fe0509a5..7593a1d4 100644 --- a/routes/web.php +++ b/routes/web.php @@ -86,6 +86,10 @@ Route::middleware(['auth','admin'])->group(function () { Route::get('/admin/config/customisation','ConfigController@customisation'); Route::post('/admin/config/customisation','ConfigController@customisationUpdate'); + Route::get('/admin/config/ranks','RankController@index'); + Route::get('/admin/config/ranks/{id}','RankController@show'); + Route::get('/admin/config/jobs','JobController@index'); + /** Public page */ Route::get('/admin/public/edit/{config}', 'PublicController@edit'); Route::post('/admin/public/edit/{config}', 'PublicController@update'); From b7c2b8a632f21844cdeb7486375931116b5d4559 Mon Sep 17 00:00:00 2001 From: Mathieu Lagace Date: Thu, 12 Sep 2019 18:21:55 -0400 Subject: [PATCH 2/7] Perm --- app/Permission.php | 214 ++++++++++++++++++++++++++++++--------------- 1 file changed, 142 insertions(+), 72 deletions(-) diff --git a/app/Permission.php b/app/Permission.php index 76395ee4..daa5175d 100644 --- a/app/Permission.php +++ b/app/Permission.php @@ -7,89 +7,159 @@ use Illuminate\Support\Arr; class Permission extends Model { + const PERMISSIONS = [ + 'news' => [ + 'news_see' => [ + 'id' => 'news_see', + 'communName' => 'Voir les nouvelles', + 'desc' => 'L\'utilisateur peut-il consulter les nouvelles', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'news_add' => [ + 'id' => 'news_add', + 'communName' => 'Ajouter une nouvelles', + 'desc' => 'L\'utilisateur peut-il ajouter une nouvelle', + 'icon' => 'fa-plus', + 'valeur' => 0 + ], + 'news_edit' => [ + 'id' => 'news_edit', + 'communName' => 'Modifier une nouvelles', + 'desc' => 'L\'utilisateur peut-il modifier une nouvelle', + 'icon' => 'fa-edit', + 'valeur' => 0 + ], + 'news_delete' => [ + 'id' => 'news_delete', + 'communName' => 'Supprimer une nouvelles', + 'desc' => 'L\'utilisateur peut-il supprimer une nouvelle', + 'icon' => 'fa-close', + 'valeur' => 0 + ] + ], + 'message' => [ + 'msg_see' => [ + 'id' => 'msg_see', + 'communName' => 'Voir les messages', + 'desc' => 'L\'utilisateur peut-il consulter les messages de la semaine', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'msg_add' => [ + 'id' => 'msg_add', + 'communName' => 'Ajouter un message', + 'desc' => 'L\'utilisateur peut-il ajouter un message de la semaine', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'msg_edit' => [ + 'id' => 'msg_edit', + 'communName' => 'Modifier un message', + 'desc' => 'L\'utilisateur peut-il modifier les messages de la semaine', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'msg_delete' => [ + 'id' => 'msg_delete', + 'communName' => 'Supprimer un message', + 'desc' => 'L\'utilisateur peut-il supprimer un message de la semaine', + 'icon' => 'fa-eye', + 'valeur' => 0 + ] + ], + 'inventory' => [ + 'inventory_see' => [ + 'id' => 'inventory_see', + 'communName' => 'Voir l\'inventaire', + 'desc' => 'L\'utilisateur peut-il consulter l\'inventaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'inventory_add' => [ + 'id' => 'inventory_add', + 'communName' => 'Ajouter item a l\'inventaire', + 'desc' => 'L\'utilisateur peut-il ajouter un item a l\'inventaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'inventory_edit' => [ + 'id' => 'inventory_edit', + 'communName' => 'Modifier un item de l\'inventaire', + 'desc' => 'L\'utilisateur peut-il modifier un item de l\'inventaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'inventory_delete' => [ + 'id' => 'inventory_delete', + 'communName' => 'Supprimer un item de l\'inventaire', + 'desc' => 'L\'utilisateur peut-il supprimer un item de l\'inventaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + ], + 'booking' => [ + 'booking_see' => [ + 'id' => 'booking_see', + 'communName' => 'Voir les réservations', + 'desc' => 'L\'utilisateur peut-il consulter la liste des réservations', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'booking_see_self' => [ + 'id' => 'booking_see_self', + 'communName' => 'Voir ses propres réservations', + 'desc' => 'L\'utilisateur peut-il consulter la liste de ses réservations', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'booking_add' => [ + 'id' => 'booking_add', + 'communName' => 'Ajouter item a l\'inventaire', + 'desc' => 'L\'utilisateur peut-il ajouter un item a l\'inventaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'booking_edit' => [ + 'id' => 'booking_edit', + 'communName' => 'Modifier un item de l\'inventaire', + 'desc' => 'L\'utilisateur peut-il modifier un item de l\'inventaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'booking_delete' => [ + 'id' => 'booking_delete', + 'communName' => 'Supprimer un item de l\'inventaire', + 'desc' => 'L\'utilisateur peut-il supprimer un item de l\'inventaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ] + ] + ]; + public static function all($columns = null) { - $perm = [ - 'news' => [ - 'news_see' => [ - 'id' => 'news_see', - 'communName' => 'Voir les nouvelles', - 'desc' => 'L\'utilisateur peut-il consulter les nouvelles', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'news_add' => [ - 'id' => 'news_add', - 'communName' => 'Ajouter une nouvelles', - 'desc' => 'L\'utilisateur peut-il ajouter une nouvelle', - 'icon' => 'fa-plus', - 'valeur' => 0 - ], - 'news_edit' => [ - 'id' => 'news_edit', - 'communName' => 'Modifier une nouvelles', - 'desc' => 'L\'utilisateur peut-il modifier une nouvelle', - 'icon' => 'fa-edit', - 'valeur' => 0 - ], - 'news_delete' => [ - 'id' => 'news_delete', - 'communName' => 'Supprimer une nouvelles', - 'desc' => 'L\'utilisateur peut-il supprimer une nouvelle', - 'icon' => 'fa-close', - 'valeur' => 0 - ] - ], - 'message' => [ - 'msg_see' => [ - 'id' => 'msg_see', - 'communName' => 'Voir les messages', - 'desc' => 'L\'utilisateur peut-il consulter les messages de la semaine', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'msg_add' => [ - 'id' => 'msg_add', - 'communName' => 'Ajouter un message', - 'desc' => 'L\'utilisateur peut-il ajouter un message de la semaine', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'msg_edit' => [ - 'id' => 'msg_edit', - 'communName' => 'Modifier un message', - 'desc' => 'L\'utilisateur peut-il modifier les messages de la semaine', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], - 'msg_delete' => [ - 'id' => 'msg_delete', - 'communName' => 'Supprimer un message', - 'desc' => 'L\'utilisateur peut-il supprimer un message de la semaine', - 'icon' => 'fa-eye', - 'valeur' => 0 - ] - ] - ]; - return $perm; - } - - public static function allToArray() - { - $permissions = []; - foreach (Permission::all() as $cat) + $permissions = collect(); + foreach (self::PERMISSIONS as $key => $cat) { - foreach ($cat as $perm) + foreach ($cat as $c) { - $permissions[$perm['id']] = 0; + $p = new Permission(); + $p->id = $c['id']; + $p->communName = $c['communName']; + $p->desc = $c['desc']; + $p->icon = $c['icon']; + $p->value = $c['valeur']; + $permissions->push($p); } } + return $permissions; } public static function allToString() { - return json_encode(Permission::allToArray()); + return \GuzzleHttp\json_encode(Permission::all()); } } From 7dedd9586b42e2fcb3be5f44f375ae234f4b3884 Mon Sep 17 00:00:00 2001 From: Mathieu Lagace Date: Fri, 13 Sep 2019 16:25:36 -0400 Subject: [PATCH 3/7] 3.2.3 --- app/Http/Controllers/Auth/LoginController.php | 9 +- app/Http/Controllers/EventController.php | 4 +- app/Http/Controllers/RankController.php | 45 ++- app/Http/Controllers/UserController.php | 8 +- app/Http/Kernel.php | 1 + app/Http/Middleware/CheckPerm.php | 25 ++ app/Permission.php | 224 ++++++++++++--- app/Rank.php | 18 ++ app/User.php | 15 + .../2014_10_12_000000_create_users_table.php | 2 +- database/seeds/RanksTableSeeder.php | 2 +- database/seeds/UsersTableSeeder.php | 4 +- resources/views/admin/article/index.blade.php | 8 +- .../views/admin/configs/ranks/add.blade.php | 87 ++++++ .../views/admin/configs/ranks/show.blade.php | 16 +- resources/views/admin/dashboard.blade.php | 267 ++++++++---------- .../views/admin/inventory/index.blade.php | 10 +- resources/views/admin/log/display.blade.php | 4 +- resources/views/admin/news/index.blade.php | 17 +- resources/views/admin/update.blade.php | 107 +++++++ resources/views/admin/user/edit.blade.php | 2 +- resources/views/admin/user/index.blade.php | 2 +- resources/views/admin/user/profil.blade.php | 2 +- .../admin/user/profil/password.blade.php | 4 +- resources/views/layouts/admin/alert.blade.php | 7 + resources/views/layouts/admin/main.blade.php | 1 + .../views/layouts/admin/sidebar.blade.php | 119 +++++--- .../layouts/modal/schedule/show.blade.php | 6 +- routes/api.php | 60 ++-- routes/web.php | 181 +++++------- 30 files changed, 834 insertions(+), 423 deletions(-) create mode 100644 app/Http/Middleware/CheckPerm.php create mode 100644 resources/views/admin/configs/ranks/add.blade.php diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 660e753e..39e16ac7 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -22,12 +22,9 @@ class LoginController extends Controller protected function redirectTo() { - if(\Auth::User()->getAcces(2)) - { - return '/admin'; - } else if(\Auth::User()->getAcces(1)){ - return '/ecc'; - } + + return '/admin'; + } /** * Where to redirect users after login. diff --git a/app/Http/Controllers/EventController.php b/app/Http/Controllers/EventController.php index 87d4cacb..ffdb46d2 100644 --- a/app/Http/Controllers/EventController.php +++ b/app/Http/Controllers/EventController.php @@ -84,7 +84,7 @@ class EventController extends Controller } } clog('add','success','a ajouté un évènement',null,'App\Event',$event->id); - return redirect('/admin/calendar')->with('success','Événement ajouter à l\'horaire'); + return redirect('/admin/schedule')->with('success','Événement ajouter à l\'horaire'); } /** @@ -175,7 +175,7 @@ class EventController extends Controller } } clog('edit','success','a modifié un évènement',null,'App\Event',$event->id); - return redirect('/admin/calendar')->with('success','Modification à l\'événement sauvegarder à l\'horaire'); + return redirect('/admin/schedule')->with('success','Modification à l\'événement sauvegarder à l\'horaire'); } /** diff --git a/app/Http/Controllers/RankController.php b/app/Http/Controllers/RankController.php index 523dc6bd..eb809eb5 100644 --- a/app/Http/Controllers/RankController.php +++ b/app/Http/Controllers/RankController.php @@ -24,7 +24,7 @@ class RankController extends Controller */ public function create() { - // + return view('admin.configs.ranks.add'); } /** @@ -35,7 +35,25 @@ class RankController extends Controller */ public function store(Request $request) { - // + $r = new Rank(); + + $r->name = $request->name; + $r->desc = $request->desc; + $r->acces_level = 1; + + $tpermission = []; + + foreach (\App\Permission::all() as $perm) + { + $tkey = $perm->ckey; + $tpermission[$tkey] = $request->$tkey; + } + + $r->permissions = json_encode($tpermission); + $r->save(); + + clog('add','success','Grade ajouté avec succès'); + return redirect('/admin/config/ranks')->with('success','Grade ajouté avec succès'); } /** @@ -57,7 +75,7 @@ class RankController extends Controller */ public function edit(Rank $rank) { - // + } /** @@ -67,9 +85,26 @@ class RankController extends Controller * @param \App\Rank $rank * @return \Illuminate\Http\Response */ - public function update(Request $request, Rank $rank) + public function update(Request $request, $rank) { - // + $r = Rank::find($rank); + + $r->name = $request->name; + $r->desc = $request->desc; + + $tpermission = []; + + foreach (\App\Permission::all() as $perm) + { + $tkey = $perm->ckey; + $tpermission[$tkey] = $request->$tkey; + } + + $r->permissions = json_encode($tpermission); + $r->save(); + + clog('edit','success','Grade modifié avec succès'); + return redirect('/admin/config/ranks')->with('success','Grade modifié avec succès'); } /** diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 8c5512fd..c64b3952 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -69,7 +69,7 @@ class UserController extends Controller } $user->avatar = rand(1,16); - $user->rank = request('rank'); + $user->rank_id = request('rank'); $user->job = request('job'); $user->password = bcrypt(request('psw')); $user->api_token = str_random(60); @@ -141,7 +141,7 @@ class UserController extends Controller $user->age = request('age'); } - $user->rank = request('rank'); + $user->rank_id = request('rank'); $user->job = request('job'); if (request('psw') != null) { $user->password = bcrypt(request('psw')); @@ -231,7 +231,7 @@ class UserController extends Controller $user->save(); - return back()->with('success', 'Modification enregistré'); + return redirect('/admin/profil')->with('success', 'Modification enregistré'); } public function UserAdress() @@ -247,7 +247,7 @@ class UserController extends Controller $user->save(); - return back()->with('success', 'Modification enregistré'); + return redirect('/admin/profil')->with('success', 'Modification enregistré'); } public function apiList() diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 76785d61..649e7b55 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -61,5 +61,6 @@ class Kernel extends HttpKernel 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'staff' => \App\Http\Middleware\AccesStaff::class, 'admin' => \App\Http\Middleware\AccesAdmin::class, + 'perm' => \App\Http\Middleware\CheckPerm::class, ]; } diff --git a/app/Http/Middleware/CheckPerm.php b/app/Http/Middleware/CheckPerm.php new file mode 100644 index 00000000..ced3b4df --- /dev/null +++ b/app/Http/Middleware/CheckPerm.php @@ -0,0 +1,25 @@ +p($permission) != 1) + { + clog('navigate','danger','L\'utilisateur n\'est pas autorisé à effectuer cette action',\Auth::user()->id); + return redirect('/admin')->with('error','Vous n\'êtes pas autorisé à effectuer cette action'); + } + return $next($request); + } +} diff --git a/app/Permission.php b/app/Permission.php index daa5175d..9f60eee4 100644 --- a/app/Permission.php +++ b/app/Permission.php @@ -10,28 +10,28 @@ class Permission extends Model const PERMISSIONS = [ 'news' => [ 'news_see' => [ - 'id' => 'news_see', + 'ckey' => 'news_see', 'communName' => 'Voir les nouvelles', 'desc' => 'L\'utilisateur peut-il consulter les nouvelles', 'icon' => 'fa-eye', 'valeur' => 0 ], 'news_add' => [ - 'id' => 'news_add', + 'ckey' => 'news_add', 'communName' => 'Ajouter une nouvelles', 'desc' => 'L\'utilisateur peut-il ajouter une nouvelle', 'icon' => 'fa-plus', 'valeur' => 0 ], 'news_edit' => [ - 'id' => 'news_edit', + 'ckey' => 'news_edit', 'communName' => 'Modifier une nouvelles', 'desc' => 'L\'utilisateur peut-il modifier une nouvelle', 'icon' => 'fa-edit', 'valeur' => 0 ], 'news_delete' => [ - 'id' => 'news_delete', + 'ckey' => 'news_delete', 'communName' => 'Supprimer une nouvelles', 'desc' => 'L\'utilisateur peut-il supprimer une nouvelle', 'icon' => 'fa-close', @@ -40,28 +40,28 @@ class Permission extends Model ], 'message' => [ 'msg_see' => [ - 'id' => 'msg_see', + 'ckey' => 'msg_see', 'communName' => 'Voir les messages', 'desc' => 'L\'utilisateur peut-il consulter les messages de la semaine', 'icon' => 'fa-eye', 'valeur' => 0 ], 'msg_add' => [ - 'id' => 'msg_add', + 'ckey' => 'msg_add', 'communName' => 'Ajouter un message', 'desc' => 'L\'utilisateur peut-il ajouter un message de la semaine', 'icon' => 'fa-eye', 'valeur' => 0 ], 'msg_edit' => [ - 'id' => 'msg_edit', + 'ckey' => 'msg_edit', 'communName' => 'Modifier un message', 'desc' => 'L\'utilisateur peut-il modifier les messages de la semaine', 'icon' => 'fa-eye', 'valeur' => 0 ], 'msg_delete' => [ - 'id' => 'msg_delete', + 'ckey' => 'msg_delete', 'communName' => 'Supprimer un message', 'desc' => 'L\'utilisateur peut-il supprimer un message de la semaine', 'icon' => 'fa-eye', @@ -70,28 +70,28 @@ class Permission extends Model ], 'inventory' => [ 'inventory_see' => [ - 'id' => 'inventory_see', + 'ckey' => 'inventory_see', 'communName' => 'Voir l\'inventaire', 'desc' => 'L\'utilisateur peut-il consulter l\'inventaire', 'icon' => 'fa-eye', 'valeur' => 0 ], 'inventory_add' => [ - 'id' => 'inventory_add', + 'ckey' => 'inventory_add', 'communName' => 'Ajouter item a l\'inventaire', 'desc' => 'L\'utilisateur peut-il ajouter un item a l\'inventaire', 'icon' => 'fa-eye', 'valeur' => 0 ], 'inventory_edit' => [ - 'id' => 'inventory_edit', + 'ckey' => 'inventory_edit', 'communName' => 'Modifier un item de l\'inventaire', 'desc' => 'L\'utilisateur peut-il modifier un item de l\'inventaire', 'icon' => 'fa-eye', 'valeur' => 0 ], 'inventory_delete' => [ - 'id' => 'inventory_delete', + 'ckey' => 'inventory_delete', 'communName' => 'Supprimer un item de l\'inventaire', 'desc' => 'L\'utilisateur peut-il supprimer un item de l\'inventaire', 'icon' => 'fa-eye', @@ -100,44 +100,182 @@ class Permission extends Model ], 'booking' => [ 'booking_see' => [ - 'id' => 'booking_see', + 'ckey' => 'booking_see', 'communName' => 'Voir les réservations', 'desc' => 'L\'utilisateur peut-il consulter la liste des réservations', 'icon' => 'fa-eye', 'valeur' => 0 ], - 'booking_see_self' => [ - 'id' => 'booking_see_self', - 'communName' => 'Voir ses propres réservations', - 'desc' => 'L\'utilisateur peut-il consulter la liste de ses réservations', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], 'booking_add' => [ - 'id' => 'booking_add', - 'communName' => 'Ajouter item a l\'inventaire', - 'desc' => 'L\'utilisateur peut-il ajouter un item a l\'inventaire', + 'ckey' => 'booking_add', + 'communName' => 'Ajouter une réservation', + 'desc' => 'L\'utilisateur peut-il ajouter une réservation', 'icon' => 'fa-eye', 'valeur' => 0 ], 'booking_edit' => [ - 'id' => 'booking_edit', - 'communName' => 'Modifier un item de l\'inventaire', - 'desc' => 'L\'utilisateur peut-il modifier un item de l\'inventaire', + 'ckey' => 'booking_edit', + 'communName' => 'Modifier une réservation', + 'desc' => 'L\'utilisateur peut-il modifier une réservation', 'icon' => 'fa-eye', 'valeur' => 0 ], 'booking_delete' => [ - 'id' => 'booking_delete', - 'communName' => 'Supprimer un item de l\'inventaire', - 'desc' => 'L\'utilisateur peut-il supprimer un item de l\'inventaire', + 'ckey' => 'booking_delete', + 'communName' => 'Supprimer une réservation', + 'desc' => 'L\'utilisateur peut-il supprimer une réservation', 'icon' => 'fa-eye', 'valeur' => 0 ] + ], + 'user' => [ + 'user_see' => [ + 'ckey' => 'user_see', + 'communName' => 'Voir la liste des utilisateurs', + 'desc' => 'L\'utilisateur peut-il consulter la liste des utilisateurs', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'user_add' => [ + 'ckey' => 'user_add', + 'communName' => 'Ajouter un utilisateur', + 'desc' => 'L\'utilisateur peut-il ajouter un autre utilisateur', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'user_edit' => [ + 'ckey' => 'user_edit', + 'communName' => 'Modifier un utilisateur', + 'desc' => 'L\'utilisateur peut-il modifier un autre utilisateur', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'user_delete' => [ + 'ckey' => 'user_delete', + 'communName' => 'Supprimer un utilisateur', + 'desc' => 'L\'utilisateur peut-il supprimer un autre utilisateur', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + ], + 'config' => [ + 'config_see' => [ + 'ckey' => 'config_see', + 'communName' => 'Voir les configurations', + 'desc' => 'L\'utilisateur peut-il consulter les configurations', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'config_edit' => [ + 'ckey' => 'config_edit', + 'communName' => 'Modifier les configurations', + 'desc' => 'L\'utilisateur peut-il modifier les configurations', + 'icon' => 'fa-eye', + 'valeur' => 0 + ] + ], + 'statistique' => [ + 'stats_see' => [ + 'ckey' => 'stats_see', + 'communName' => 'Voir les statistiques', + 'desc' => 'L\'utilisateur peut-il consulter les statistiques', + 'icon' => 'fa-eye', + 'valeur' => 0 + ] + ], + 'schedule' => [ + 'schedule_see' => [ + 'ckey' => 'schedule_see', + 'communName' => 'Voir l\'horaire', + 'desc' => 'L\'utilisateur peut-il consulter l\'horaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'schedule_add' => [ + 'ckey' => 'schedule_add', + 'communName' => 'Ajouter un évènement à l\'horaire', + 'desc' => 'L\'utilisateur peut-il ajouter un évènement à l\'horaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'schedule_edit' => [ + 'ckey' => 'schedule_edit', + 'communName' => 'Modifier un évènement à l\'horaire', + 'desc' => 'L\'utilisateur peut-il modifier un évènement à l\'horaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'schedule_delete' => [ + 'ckey' => 'schedule_delete', + 'communName' => 'Supprimer un évènement à l\'horaire', + 'desc' => 'L\'utilisateur peut-il supprimer un évènement à l\'horaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ] + ], + 'article' => [ + 'article_see' => [ + 'ckey' => 'article_see', + 'communName' => 'Voir les articles', + 'desc' => 'L\'utilisateur peut-il consulter les articles', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'article_add' => [ + 'ckey' => 'article_add', + 'communName' => 'Ajouter un article', + 'desc' => 'L\'utilisateur peut-il ajouter un article', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'article_edit' => [ + 'ckey' => 'article_edit', + 'communName' => 'Modifier un article', + 'desc' => 'L\'utilisateur peut-il modifier un évènement à l\'horaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'article_delete' => [ + 'ckey' => 'article_delete', + 'communName' => 'Supprimer un article', + 'desc' => 'L\'utilisateur peut-il supprimer un article', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + ], + 'picture' => [ + 'picture_see' => [ + 'ckey' => 'picture_see', + 'communName' => 'Voir les images', + 'desc' => 'L\'utilisateur peut-il consulter les images', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'picture_add' => [ + 'ckey' => 'picture_add', + 'communName' => 'Ajouter une image', + 'desc' => 'L\'utilisateur peut-il ajouter une image', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'picture_edit' => [ + 'ckey' => 'picture_edit', + 'communName' => 'Modifier une image', + 'desc' => 'L\'utilisateur peut-il modifier une image', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'picture_delete' => [ + 'ckey' => 'picture_delete', + 'communName' => 'Supprimer une image', + 'desc' => 'L\'utilisateur peut-il supprimer une image', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], ] ]; - public static function all($columns = null) + public static function all($value = null,$columns = null) { $permissions = collect(); @@ -146,11 +284,18 @@ class Permission extends Model foreach ($cat as $c) { $p = new Permission(); - $p->id = $c['id']; + $p->ckey = $c['ckey']; $p->communName = $c['communName']; $p->desc = $c['desc']; $p->icon = $c['icon']; - $p->value = $c['valeur']; + if ($value == null) + { + $p->value = $c['valeur']; + } + else + { + $p->value = $value; + } $permissions->push($p); } } @@ -158,8 +303,19 @@ class Permission extends Model return $permissions; } - public static function allToString() + public static function allToArray() { - return \GuzzleHttp\json_encode(Permission::all()); + return self::PERMISSIONS; + } + + public static function allToString($value = null) + { + $perm = []; + foreach (Permission::all($value) as $p) + { + $perm[$p->ckey] = $p->value; + } + + return \GuzzleHttp\json_encode($perm); } } diff --git a/app/Rank.php b/app/Rank.php index 18e499e8..92f07c20 100644 --- a/app/Rank.php +++ b/app/Rank.php @@ -10,4 +10,22 @@ class Rank extends Model { return collect(json_decode($this->permissions,true)); } + + public function permission($permission) + { + foreach ($this->permissions() as $perm => $value) + { + if ($permission == $perm) + { + return $value; + } + } + + return 0; + } + + public function p($perm) + { + return $this->permission($perm); + } } diff --git a/app/User.php b/app/User.php index 6fe3f330..32b5fae3 100644 --- a/app/User.php +++ b/app/User.php @@ -27,6 +27,11 @@ class User extends Authenticatable 'password', 'remember_token', ]; + public function rank() + { + return $this->belongsTo('App\Rank'); + } + public function logs() { return $this->hasMany(Log::class); @@ -279,4 +284,14 @@ class User extends Authenticatable { return $this->hasMany('App\News'); } + + public function permission($perm) + { + return $this->rank->permission($perm); + } + + public function p($perm) + { + return $this->permission($perm); + } } diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 6f8f739b..bbb8c931 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -19,7 +19,7 @@ class CreateUsersTable extends Migration $table->string('lastname'); $table->string('email')->unique(); $table->string('password'); - $table->string('rank')->default(1); + $table->string('rank_id')->default(1); $table->string('adress')->default('unknown'); $table->string('telephone')->default('unknown'); $table->string('age'); diff --git a/database/seeds/RanksTableSeeder.php b/database/seeds/RanksTableSeeder.php index 34d0537c..170727f4 100644 --- a/database/seeds/RanksTableSeeder.php +++ b/database/seeds/RanksTableSeeder.php @@ -16,7 +16,7 @@ class RanksTableSeeder extends Seeder 'name' => "SuperAdmin", 'acces_level' => '2', 'desc' => 'Compte SuperAdmin donne toutes les permissions ne peux être modifié', - 'permissions' => \App\Permission::allToString() + 'permissions' => \App\Permission::allToString(1) ] ]); } diff --git a/database/seeds/UsersTableSeeder.php b/database/seeds/UsersTableSeeder.php index e5f20ab1..6e303df5 100644 --- a/database/seeds/UsersTableSeeder.php +++ b/database/seeds/UsersTableSeeder.php @@ -17,7 +17,7 @@ class UsersTableSeeder extends Seeder 'lastname' => 'Autre', 'email' => 'visiteur@exvps.ca', 'password' => bcrypt('f329er8kl2jHJGHdEj12567'), - 'rank' => '1', + 'rank_id' => '1', 'adress' => 'Inconnu', 'age' => '99', 'avatar' => '3', @@ -30,7 +30,7 @@ class UsersTableSeeder extends Seeder 'lastname' => 'Administrateur', 'email' => 'admin@exvps.ca', 'password' => bcrypt('SuperAdmin'), - 'rank' => '1', + 'rank_id' => '1', 'adress' => 'Inconnu', 'age' => '99', 'avatar' => '3', diff --git a/resources/views/admin/article/index.blade.php b/resources/views/admin/article/index.blade.php index cc771dab..7ea11e73 100644 --- a/resources/views/admin/article/index.blade.php +++ b/resources/views/admin/article/index.blade.php @@ -24,8 +24,12 @@
-   Modifier l'article -   Gérer les photos + @if(\Auth::user()->p('article_edit') == 1) +   Modifier l'article + @endif + @if(\Auth::user()->p('article_edit') == 1 && \Auth::user()->p('picture_add')) +   Gérer les photos + @endif
diff --git a/resources/views/admin/configs/ranks/add.blade.php b/resources/views/admin/configs/ranks/add.blade.php new file mode 100644 index 00000000..11409aa2 --- /dev/null +++ b/resources/views/admin/configs/ranks/add.blade.php @@ -0,0 +1,87 @@ +@extends('layouts.admin.main') + +@section('content') +
+
+
+

Ajouter un grade

+
+
+
+ @csrf + +
+
+
+ + + Nom du grade +
+
+
+
+ + + Description du grade +
+
+
+
+

Permissions du Grade

+

+ Choisissez quels permissions doivent être associé avec ce grade. +

+
+ @foreach(\App\Permission::allToArray() as $key => $cat) +
+ + +
+
+
+ @foreach($cat as $r) +
+ +
{{$r['communName']}}
+
+ + + +
+

+ {{$r['desc']}} +

+
+ @endforeach +
+
+
+
+ @endforeach +
+
+
+ +
+
+
+
+
+
+@endsection + +@section('custom_scripts') + + +@endsection \ No newline at end of file diff --git a/resources/views/admin/configs/ranks/show.blade.php b/resources/views/admin/configs/ranks/show.blade.php index 292a49df..839c00e1 100644 --- a/resources/views/admin/configs/ranks/show.blade.php +++ b/resources/views/admin/configs/ranks/show.blade.php @@ -32,7 +32,7 @@ Choisissez quels permissions doivent être associé avec ce grade.

- @foreach(\App\Permission::all() as $key => $cat) + @foreach(\App\Permission::allToArray() as $key => $cat)