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');