This commit is contained in:
Mathieu Lagace
2019-09-12 07:53:18 -04:00
parent 7f07490bdf
commit 2331beab17
12 changed files with 378 additions and 190 deletions

View File

@@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use App\Permission;
use Illuminate\Http\Request;
class PermissionController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Permission $permission
* @return \Illuminate\Http\Response
*/
public function show(Permission $permission)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Permission $permission
* @return \Illuminate\Http\Response
*/
public function edit(Permission $permission)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Permission $permission
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Permission $permission)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Permission $permission
* @return \Illuminate\Http\Response
*/
public function destroy(Permission $permission)
{
//
}
}

View File

@@ -14,7 +14,7 @@ class RankController extends Controller
*/
public function index()
{
//
return view('admin.configs.ranks.index',['ranks' => 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)]);
}
/**

95
app/Permission.php Normal file
View File

@@ -0,0 +1,95 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Arr;
class Permission extends Model
{
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)
{
foreach ($cat as $perm)
{
$permissions[$perm['id']] = 0;
}
}
return $permissions;
}
public static function allToString()
{
return json_encode(Permission::allToArray());
}
}

View File

@@ -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));
}
}

View File

@@ -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();
});
}

View File

@@ -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()
]
]);
}
}

40
public/js/permissions.js vendored Normal file
View File

@@ -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;
}
}

8
resources/assets/js/permissions.js vendored Normal file
View File

@@ -0,0 +1,8 @@
function switchPermissionSwitch(rank,valeur)
{
switch (valeur) {
case 'close':
$('#'+rank+'-close').addClass('btn-danger');
$('#'+rank+'-close').removeClass('btn-danger');
}
}

View File

@@ -0,0 +1,34 @@
@extends('layouts.admin.main')
@section('content')
<div class="col-md-12">
<div class="card">
<div class="card-header card-header-primary">
<h4>Configuration des grades</h4>
</div>
<div class="card-body mt-5">
<div class="row">
@foreach($ranks as $rank)
<div class="col-md-4">
<div class="card">
<div class="card-header @if($rank->id == 1) card-header-danger @else card-header-primary @endif">
<h4>{{$rank->name}}</h4>
</div>
<div class="card-body">
<div>
{{$rank->desc}}
</div>
<div class="row">
<div class="col-md-12">
<a href="/admin/config/ranks/{{$rank->id}}" class="btn btn-primary btn-block">Gérer</a>
</div>
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,87 @@
@extends('layouts.admin.main')
@section('content')
<div class="col-md-12">
<div class="card">
<div class="card-header card-header-primary">
<h4>Configuration du grade {{$rank->name}}</h4>
</div>
<div class="card-body mt-5">
<form method="post" action="">
@csrf
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label>Nom</label>
<input class="form-control" type="text" name="name" value="{{$rank->name}}">
<small class="form-text text-muted">Nom du grade</small>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label>Description</label>
<textarea id="desc" name="desc">{!! $rank->desc !!}</textarea>
<small class="form-text text-muted">Description du grade</small>
</div>
</div>
<hr>
<div class="col-md-12">
<h3>Permissions du Grade</h3>
<p>
Choisissez quels permissions doivent être associé avec ce grade.
</p>
<div id="accordion" role="tablist">
@foreach(\App\Permission::all() as $key => $cat)
<div class="card card-collapse">
<div class="card-header" role="tab" id="headingOne">
<h5 class="mb-0">
<a class="text-capitalize" data-toggle="collapse" href="#coll-{{$key}}" @if ($loop->first) aria-expanded="true" @endif aria-controls="collapseOne">
{{$key}}
<i class="material-icons">keyboard_arrow_down</i>
</a>
</h5>
</div>
<div id="coll-{{$key}}" class="collapse @if ($loop->first) show @endif" role="tabpanel" aria-labelledby="headingOne" data-parent="#accordion">
<div class="card-body">
<div class="row">
@foreach($cat as $rank)
<div class="col text-center">
<input class="d-none" type="text" id="{{$rank['id']}}" name="{{$rank['id']}}" value="0">
<h5>{{$rank['communName']}}</h5>
<div class="btn-group">
<button type="button" id="{{$rank['id']}}-close" class="btn btn-just-icon btn-outline-danger" onclick="switchPermissionSwitch('{{$rank['id']}}','close')"><i class="fa fa-close"></i></button>
<button type="button" id="{{$rank['id']}}-slash" class="btn btn-just-icon btn-warning" onclick="switchPermissionSwitch('{{$rank['id']}}','slash')"><i class="fa fa-slash"></i></button>
<button type="button" id="{{$rank['id']}}-plus" class="btn btn-just-icon btn-outline-success" onclick="switchPermissionSwitch('{{$rank['id']}}','plus')"><i class="fa fa-plus"></i></button>
</div>
<p>
<small>{{$rank['desc']}}</small>
</p>
</div>
@endforeach
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
<div class="col-md-12 mt-5">
<button type="submit" class="btn btn-primary">Sauvegarder</button>
</div>
</div>
</form>
</div>
</div>
</div>
@endsection
@section('custom_scripts')
<script src="/js/permissions.js"></script>
<script>
$('#desc').trumbowyg({
lang: 'fr'
});
</script>
@endsection

View File

@@ -234,6 +234,18 @@
<span class="sidebar-normal"> Apparence </span>
</a>
</li>
<li class="nav-item ">
<a class="nav-link" href="/admin/config/ranks">
<span class="sidebar-mini"> <i class="fas fa-user-tag"></i> </span>
<span class="sidebar-normal"> Grade </span>
</a>
</li>
<li class="nav-item ">
<a class="nav-link" href="/admin/config/jobs">
<span class="sidebar-mini"> <i class="fas fa-user-shield"></i> </span>
<span class="sidebar-normal"> Poste </span>
</a>
</li>
</ul>
</div>
</li>

View File

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