mirror of
https://gitlab.com/TheGamecraft/c-cms.git
synced 2026-04-21 02:39:10 -04:00
3.2.3
This commit is contained in:
85
app/Http/Controllers/PermissionController.php
Normal file
85
app/Http/Controllers/PermissionController.php
Normal 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)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@@ -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
95
app/Permission.php
Normal 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());
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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
40
public/js/permissions.js
vendored
Normal 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
8
resources/assets/js/permissions.js
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
function switchPermissionSwitch(rank,valeur)
|
||||
{
|
||||
switch (valeur) {
|
||||
case 'close':
|
||||
$('#'+rank+'-close').addClass('btn-danger');
|
||||
$('#'+rank+'-close').removeClass('btn-danger');
|
||||
}
|
||||
}
|
||||
34
resources/views/admin/configs/ranks/index.blade.php
Normal file
34
resources/views/admin/configs/ranks/index.blade.php
Normal 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
|
||||
87
resources/views/admin/configs/ranks/show.blade.php
Normal file
87
resources/views/admin/configs/ranks/show.blade.php
Normal 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
|
||||
@@ -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>
|
||||
|
||||
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user