Merge branch 'dev' into 'master'

Dev

See merge request TheGamecraft/c-cms!65
This commit is contained in:
Mathieu Lagace
2019-09-13 20:33:08 +00:00
44 changed files with 1612 additions and 805 deletions

View File

@@ -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.

View File

@@ -42,7 +42,16 @@ class BookingController extends Controller
*/
public function create($type,$id)
{
return view('admin.booking.create',['items' => \App\Item::training(),'event_type' => $type,'event_id' => $id]);
$event = null;
if($type == 'course')
{
$event = \App\Course::find($id)->event;
}
else if ($type == 'event')
{
$event = \App\Event::find($id);
}
return view('admin.booking.create',['items' => \App\Item::training(),'event_type' => $type,'event_id' => $id,'event' => $event]);
}
/**
@@ -136,13 +145,31 @@ class BookingController extends Controller
$b->delete();
}
public function modalItem($id)
public function modalItem($id,$event_type,$event_id)
{
return view('admin.booking.modal.create',['item' => \App\Item::find($id)]);
$event = null;
if ($event_type == 'course')
{
$event = \App\Course::find($event_id)->event;
}
else
{
$event = \App\Event::find($event_id);
}
return view('admin.booking.modal.create',['item' => \App\Item::find($id),'event' => $event]);
}
public function modalItemEdit($id)
public function modalItemEdit($id,$event_type,$event_id)
{
return view('admin.booking.modal.edit',['booking' => \App\Booking::find($id)]);
$event = null;
if ($event_type == 'course')
{
$event = \App\Course::find($event_id)->event;
}
else
{
$event = \App\Event::find($event_id);
}
return view('admin.booking.modal.edit',['booking' => \App\Booking::find($id),'event' => $event]);
}
}

View File

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

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()]);
}
/**
@@ -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');
}
/**
@@ -44,9 +62,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)]);
}
/**
@@ -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');
}
/**

View File

@@ -196,7 +196,8 @@ class ScheduleController extends Controller
public function printtopdf($id)
{
$event = \App\Event::find($id);
$pdf = PDF::loadView('admin.schedule.print.event',['event' => $event]);
//return view('admin.schedule.print.event',['event' => $event]);
$pdf = PDF::loadView('admin.schedule.print.event',['event' => $event])->setPaper('8.5x11', 'landscape');
return $pdf->download($event->date_begin.'.pdf');
}

View File

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

View File

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

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Http\Middleware;
use Closure;
class CheckPerm
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next,$permission)
{
if (\Auth::user()->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);
}
}

View File

@@ -51,15 +51,52 @@ class Item extends Model
{
return $this->quantity - $this->booked();
}
else
{
return $this->quantity - $this->booked($begin,$end);
}
}
public function booked()
public function booked($begin_time = null,$end_time = null)
{
$nbBooked = 0;
foreach ($this->bookings() as $b)
foreach ($this->bookings as $b)
{
$nbBooked = $nbBooked + $b->amount;
if ($begin_time != null && $end_time != null)
{
$b_begin_time = null;
$b_end_time = null;
if ($b->bookable_type == 'App\Course')
{
$b_begin_time = $b->bookable->event->date_begin;
$b_end_time = $b->bookable->event->date_end;
}
else
{
$b_begin_time = $b->bookable->date_begin;
$b_end_time = $b->bookable->date_end;
}
if (date('U',strtotime($b_begin_time)) <= date('U',strtotime($begin_time)) && date('U',strtotime($b_end_time)) <= date('U',strtotime($end_time)) && date('U',strtotime($b_end_time)) >= date('U',strtotime($begin_time)))
{
$nbBooked = $nbBooked + $b->amount;
}
elseif (date('U',strtotime($b_begin_time)) <= date('U',strtotime($begin_time)) && date('U',strtotime($b_end_time)) >= date('U',strtotime($end_time)))
{
$nbBooked = $nbBooked + $b->amount;
}
elseif (date('U',strtotime($b_begin_time)) >= date('U',strtotime($begin_time)) && date('U',strtotime($b_begin_time)) <= date('U',strtotime($end_time)) && date('U',strtotime($b_end_time)) >= date('U',strtotime($end_time)))
{
$nbBooked = $nbBooked + $b->amount;
}
elseif (date('U',strtotime($b_begin_time)) >= date('U',strtotime($begin_time)) && date('U',strtotime($b_begin_time)) <= date('U',strtotime($end_time)))
{
$nbBooked = $nbBooked + $b->amount;
}
}
else
{
$nbBooked = $nbBooked + $b->amount;
}
}
return $nbBooked;

321
app/Permission.php Normal file
View File

@@ -0,0 +1,321 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Arr;
class Permission extends Model
{
const PERMISSIONS = [
'news' => [
'news_see' => [
'ckey' => 'news_see',
'communName' => 'Voir les nouvelles',
'desc' => 'L\'utilisateur peut-il consulter les nouvelles',
'icon' => 'fa-eye',
'valeur' => 0
],
'news_add' => [
'ckey' => 'news_add',
'communName' => 'Ajouter une nouvelles',
'desc' => 'L\'utilisateur peut-il ajouter une nouvelle',
'icon' => 'fa-plus',
'valeur' => 0
],
'news_edit' => [
'ckey' => 'news_edit',
'communName' => 'Modifier une nouvelles',
'desc' => 'L\'utilisateur peut-il modifier une nouvelle',
'icon' => 'fa-edit',
'valeur' => 0
],
'news_delete' => [
'ckey' => 'news_delete',
'communName' => 'Supprimer une nouvelles',
'desc' => 'L\'utilisateur peut-il supprimer une nouvelle',
'icon' => 'fa-close',
'valeur' => 0
]
],
'message' => [
'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' => [
'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' => [
'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' => [
'ckey' => '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' => [
'ckey' => 'inventory_see',
'communName' => 'Voir l\'inventaire',
'desc' => 'L\'utilisateur peut-il consulter l\'inventaire',
'icon' => 'fa-eye',
'valeur' => 0
],
'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' => [
'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' => [
'ckey' => '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' => [
'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_add' => [
'ckey' => 'booking_add',
'communName' => 'Ajouter une réservation',
'desc' => 'L\'utilisateur peut-il ajouter une réservation',
'icon' => 'fa-eye',
'valeur' => 0
],
'booking_edit' => [
'ckey' => 'booking_edit',
'communName' => 'Modifier une réservation',
'desc' => 'L\'utilisateur peut-il modifier une réservation',
'icon' => 'fa-eye',
'valeur' => 0
],
'booking_delete' => [
'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($value = null,$columns = null)
{
$permissions = collect();
foreach (self::PERMISSIONS as $key => $cat)
{
foreach ($cat as $c)
{
$p = new Permission();
$p->ckey = $c['ckey'];
$p->communName = $c['communName'];
$p->desc = $c['desc'];
$p->icon = $c['icon'];
if ($value == null)
{
$p->value = $c['valeur'];
}
else
{
$p->value = $value;
}
$permissions->push($p);
}
}
return $permissions;
}
public static function allToArray()
{
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);
}
}

View File

@@ -6,7 +6,26 @@ use Illuminate\Database\Eloquent\Model;
class Rank extends Model
{
protected $casts = [
'perm' => 'array',
];
public function permissions()
{
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);
}
}

View File

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

299
composer.lock generated
View File

@@ -1,28 +1,28 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "24a0b732198a68feae22520e2527cb91",
"packages": [
{
"name": "barryvdh/laravel-dompdf",
"version": "v0.8.4",
"version": "v0.8.5",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-dompdf.git",
"reference": "3fd817065e1c820b1ddace8b2bf65ca45088df4f"
"reference": "7393732b2f3a3ee357974cbb0c46c9b65b84dad1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/3fd817065e1c820b1ddace8b2bf65ca45088df4f",
"reference": "3fd817065e1c820b1ddace8b2bf65ca45088df4f",
"url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/7393732b2f3a3ee357974cbb0c46c9b65b84dad1",
"reference": "7393732b2f3a3ee357974cbb0c46c9b65b84dad1",
"shasum": ""
},
"require": {
"dompdf/dompdf": "^0.8",
"illuminate/support": "5.5.x|5.6.x|5.7.x|5.8.x",
"illuminate/support": "^5.5|^6",
"php": ">=7"
},
"type": "library",
@@ -60,7 +60,7 @@
"laravel",
"pdf"
],
"time": "2019-02-26T18:07:43+00:00"
"time": "2019-08-23T14:30:33+00:00"
},
{
"name": "barryvdh/laravel-ide-helper",
@@ -187,16 +187,16 @@
},
{
"name": "composer/ca-bundle",
"version": "1.2.3",
"version": "1.2.4",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
"reference": "f26a67e397be0e5c00d7c52ec7b5010098e15ce5"
"reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/f26a67e397be0e5c00d7c52ec7b5010098e15ce5",
"reference": "f26a67e397be0e5c00d7c52ec7b5010098e15ce5",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
"reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
"shasum": ""
},
"require": {
@@ -239,7 +239,7 @@
"ssl",
"tls"
],
"time": "2019-08-02T09:05:43+00:00"
"time": "2019-08-30T08:44:50+00:00"
},
{
"name": "composer/composer",
@@ -875,25 +875,25 @@
},
{
"name": "fideloper/proxy",
"version": "4.2.0",
"version": "4.2.1",
"source": {
"type": "git",
"url": "https://github.com/fideloper/TrustedProxy.git",
"reference": "39a4c2165e578bc771f5dc031c273210a3a9b6d2"
"reference": "03085e58ec7bee24773fa5a8850751a6e61a7e8a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/39a4c2165e578bc771f5dc031c273210a3a9b6d2",
"reference": "39a4c2165e578bc771f5dc031c273210a3a9b6d2",
"url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/03085e58ec7bee24773fa5a8850751a6e61a7e8a",
"reference": "03085e58ec7bee24773fa5a8850751a6e61a7e8a",
"shasum": ""
},
"require": {
"illuminate/contracts": "~5.0|~6.0",
"illuminate/contracts": "^5.0|^6.0|^7.0",
"php": ">=5.4.0"
},
"require-dev": {
"illuminate/http": "~5.6|~6.0",
"mockery/mockery": "~1.0",
"illuminate/http": "^5.0|^6.0|^7.0",
"mockery/mockery": "^1.0",
"phpunit/phpunit": "^6.0"
},
"type": "library",
@@ -925,7 +925,7 @@
"proxy",
"trusted proxy"
],
"time": "2019-07-29T16:49:45+00:00"
"time": "2019-09-03T16:45:42+00:00"
},
{
"name": "guzzlehttp/guzzle",
@@ -1559,8 +1559,8 @@
"authors": [
{
"name": "Luís Otávio Cobucci Oblonczyk",
"role": "Developer",
"email": "lcobucci@gmail.com"
"email": "lcobucci@gmail.com",
"role": "Developer"
}
],
"description": "A simple library to work with JSON Web Token and JSON Web Signature",
@@ -1572,16 +1572,16 @@
},
{
"name": "league/flysystem",
"version": "1.0.53",
"version": "1.0.55",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
"reference": "08e12b7628f035600634a5e76d95b5eb66cea674"
"reference": "33c91155537c6dc899eacdc54a13ac6303f156e6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/08e12b7628f035600634a5e76d95b5eb66cea674",
"reference": "08e12b7628f035600634a5e76d95b5eb66cea674",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/33c91155537c6dc899eacdc54a13ac6303f156e6",
"reference": "33c91155537c6dc899eacdc54a13ac6303f156e6",
"shasum": ""
},
"require": {
@@ -1652,20 +1652,20 @@
"sftp",
"storage"
],
"time": "2019-06-18T20:09:29+00:00"
"time": "2019-08-24T11:17:19+00:00"
},
{
"name": "monolog/monolog",
"version": "1.24.0",
"version": "1.25.1",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266"
"reference": "70e65a5470a42cfec1a7da00d30edb6e617e8dcf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
"reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/70e65a5470a42cfec1a7da00d30edb6e617e8dcf",
"reference": "70e65a5470a42cfec1a7da00d30edb6e617e8dcf",
"shasum": ""
},
"require": {
@@ -1730,7 +1730,7 @@
"logging",
"psr-3"
],
"time": "2018-11-05T09:00:11+00:00"
"time": "2019-09-06T13:49:17+00:00"
},
{
"name": "nesbot/carbon",
@@ -1828,9 +1828,9 @@
"authors": [
{
"name": "Tim Lytle",
"role": "Developer",
"email": "tim@nexmo.com",
"homepage": "http://twitter.com/tjlytle"
"homepage": "http://twitter.com/tjlytle",
"role": "Developer"
}
],
"description": "PHP Client for using Nexmo's API.",
@@ -1838,16 +1838,16 @@
},
{
"name": "nikic/php-parser",
"version": "v4.2.3",
"version": "v4.2.4",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "e612609022e935f3d0337c1295176505b41188c8"
"reference": "97e59c7a16464196a8b9c77c47df68e4a39a45c4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/e612609022e935f3d0337c1295176505b41188c8",
"reference": "e612609022e935f3d0337c1295176505b41188c8",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/97e59c7a16464196a8b9c77c47df68e4a39a45c4",
"reference": "97e59c7a16464196a8b9c77c47df68e4a39a45c4",
"shasum": ""
},
"require": {
@@ -1885,7 +1885,7 @@
"parser",
"php"
],
"time": "2019-08-12T20:17:41+00:00"
"time": "2019-09-01T07:51:21+00:00"
},
{
"name": "paragonie/random_compat",
@@ -2818,16 +2818,16 @@
},
{
"name": "symfony/console",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "8b0ae5742ce9aaa8b0075665862c1ca397d1c1d9"
"reference": "de63799239b3881b8a08f8481b22348f77ed7b36"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/8b0ae5742ce9aaa8b0075665862c1ca397d1c1d9",
"reference": "8b0ae5742ce9aaa8b0075665862c1ca397d1c1d9",
"url": "https://api.github.com/repos/symfony/console/zipball/de63799239b3881b8a08f8481b22348f77ed7b36",
"reference": "de63799239b3881b8a08f8481b22348f77ed7b36",
"shasum": ""
},
"require": {
@@ -2889,20 +2889,20 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"time": "2019-07-24T17:13:59+00:00"
"time": "2019-08-26T08:26:39+00:00"
},
{
"name": "symfony/css-selector",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
"reference": "105c98bb0c5d8635bea056135304bd8edcc42b4d"
"reference": "c6e5e2a00db768c92c3ae131532af4e1acc7bd03"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/105c98bb0c5d8635bea056135304bd8edcc42b4d",
"reference": "105c98bb0c5d8635bea056135304bd8edcc42b4d",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/c6e5e2a00db768c92c3ae131532af4e1acc7bd03",
"reference": "c6e5e2a00db768c92c3ae131532af4e1acc7bd03",
"shasum": ""
},
"require": {
@@ -2942,20 +2942,20 @@
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
"time": "2019-01-16T21:53:39+00:00"
"time": "2019-08-20T14:07:54+00:00"
},
{
"name": "symfony/debug",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
"reference": "527887c3858a2462b0137662c74837288b998ee3"
"reference": "afcdea44a2e399c1e4b52246ec8d54c715393ced"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/527887c3858a2462b0137662c74837288b998ee3",
"reference": "527887c3858a2462b0137662c74837288b998ee3",
"url": "https://api.github.com/repos/symfony/debug/zipball/afcdea44a2e399c1e4b52246ec8d54c715393ced",
"reference": "afcdea44a2e399c1e4b52246ec8d54c715393ced",
"shasum": ""
},
"require": {
@@ -2998,20 +2998,20 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
"time": "2019-07-23T11:21:36+00:00"
"time": "2019-08-20T14:27:59+00:00"
},
{
"name": "symfony/event-dispatcher",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "212b020949331b6531250584531363844b34a94e"
"reference": "429d0a1451d4c9c4abe1959b2986b88794b9b7d2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/212b020949331b6531250584531363844b34a94e",
"reference": "212b020949331b6531250584531363844b34a94e",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/429d0a1451d4c9c4abe1959b2986b88794b9b7d2",
"reference": "429d0a1451d4c9c4abe1959b2986b88794b9b7d2",
"shasum": ""
},
"require": {
@@ -3068,7 +3068,7 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
"time": "2019-06-27T06:42:14+00:00"
"time": "2019-08-26T08:55:16+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -3130,16 +3130,16 @@
},
{
"name": "symfony/filesystem",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d"
"reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/b9896d034463ad6fd2bf17e2bf9418caecd6313d",
"reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/9abbb7ef96a51f4d7e69627bc6f63307994e4263",
"reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263",
"shasum": ""
},
"require": {
@@ -3176,20 +3176,20 @@
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
"time": "2019-06-23T08:51:25+00:00"
"time": "2019-08-20T14:07:54+00:00"
},
{
"name": "symfony/finder",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "9638d41e3729459860bb96f6247ccb61faaa45f2"
"reference": "86c1c929f0a4b24812e1eb109262fc3372c8e9f2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/9638d41e3729459860bb96f6247ccb61faaa45f2",
"reference": "9638d41e3729459860bb96f6247ccb61faaa45f2",
"url": "https://api.github.com/repos/symfony/finder/zipball/86c1c929f0a4b24812e1eb109262fc3372c8e9f2",
"reference": "86c1c929f0a4b24812e1eb109262fc3372c8e9f2",
"shasum": ""
},
"require": {
@@ -3225,20 +3225,20 @@
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"time": "2019-06-28T13:16:30+00:00"
"time": "2019-08-14T12:26:46+00:00"
},
{
"name": "symfony/http-foundation",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "8b778ee0c27731105fbf1535f51793ad1ae0ba2b"
"reference": "d804bea118ff340a12e22a79f9c7e7eb56b35adc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/8b778ee0c27731105fbf1535f51793ad1ae0ba2b",
"reference": "8b778ee0c27731105fbf1535f51793ad1ae0ba2b",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/d804bea118ff340a12e22a79f9c7e7eb56b35adc",
"reference": "d804bea118ff340a12e22a79f9c7e7eb56b35adc",
"shasum": ""
},
"require": {
@@ -3280,20 +3280,20 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
"time": "2019-07-23T11:21:36+00:00"
"time": "2019-08-26T08:55:16+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "a414548d236ddd8fa3df52367d583e82339c5e95"
"reference": "5e0fc71be03d52cd00c423061cfd300bd6f92a52"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/a414548d236ddd8fa3df52367d583e82339c5e95",
"reference": "a414548d236ddd8fa3df52367d583e82339c5e95",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/5e0fc71be03d52cd00c423061cfd300bd6f92a52",
"reference": "5e0fc71be03d52cd00c423061cfd300bd6f92a52",
"shasum": ""
},
"require": {
@@ -3372,20 +3372,20 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
"time": "2019-07-28T07:10:23+00:00"
"time": "2019-08-26T16:47:42+00:00"
},
{
"name": "symfony/mime",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
"reference": "6b7148029b1dd5eda1502064f06d01357b7b2d8b"
"reference": "987a05df1c6ac259b34008b932551353f4f408df"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/6b7148029b1dd5eda1502064f06d01357b7b2d8b",
"reference": "6b7148029b1dd5eda1502064f06d01357b7b2d8b",
"url": "https://api.github.com/repos/symfony/mime/zipball/987a05df1c6ac259b34008b932551353f4f408df",
"reference": "987a05df1c6ac259b34008b932551353f4f408df",
"shasum": ""
},
"require": {
@@ -3394,7 +3394,7 @@
"symfony/polyfill-mbstring": "^1.0"
},
"require-dev": {
"egulias/email-validator": "^2.0",
"egulias/email-validator": "^2.1.10",
"symfony/dependency-injection": "~3.4|^4.1"
},
"type": "library",
@@ -3431,7 +3431,7 @@
"mime",
"mime-type"
],
"time": "2019-07-19T16:21:19+00:00"
"time": "2019-08-22T08:16:11+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -3786,16 +3786,16 @@
},
{
"name": "symfony/process",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c"
"reference": "e89969c00d762349f078db1128506f7f3dcc0d4a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/856d35814cf287480465bb7a6c413bb7f5f5e69c",
"reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c",
"url": "https://api.github.com/repos/symfony/process/zipball/e89969c00d762349f078db1128506f7f3dcc0d4a",
"reference": "e89969c00d762349f078db1128506f7f3dcc0d4a",
"shasum": ""
},
"require": {
@@ -3831,20 +3831,20 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2019-05-30T16:10:05+00:00"
"time": "2019-08-26T08:26:39+00:00"
},
{
"name": "symfony/routing",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "a88c47a5861549f5dc1197660818084c3b67d773"
"reference": "ff1049f6232dc5b6023b1ff1c6de56f82bcd264f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/a88c47a5861549f5dc1197660818084c3b67d773",
"reference": "a88c47a5861549f5dc1197660818084c3b67d773",
"url": "https://api.github.com/repos/symfony/routing/zipball/ff1049f6232dc5b6023b1ff1c6de56f82bcd264f",
"reference": "ff1049f6232dc5b6023b1ff1c6de56f82bcd264f",
"shasum": ""
},
"require": {
@@ -3907,20 +3907,20 @@
"uri",
"url"
],
"time": "2019-07-23T14:43:56+00:00"
"time": "2019-08-26T08:26:39+00:00"
},
{
"name": "symfony/service-contracts",
"version": "v1.1.5",
"version": "v1.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d"
"reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d",
"reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/ea7263d6b6d5f798b56a45a5b8d686725f2719a3",
"reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3",
"shasum": ""
},
"require": {
@@ -3965,26 +3965,26 @@
"interoperability",
"standards"
],
"time": "2019-06-13T11:15:36+00:00"
"time": "2019-08-20T14:44:19+00:00"
},
{
"name": "symfony/translation",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "4e3e39cc485304f807622bdc64938e4633396406"
"reference": "28498169dd334095fa981827992f3a24d50fed0f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/4e3e39cc485304f807622bdc64938e4633396406",
"reference": "4e3e39cc485304f807622bdc64938e4633396406",
"url": "https://api.github.com/repos/symfony/translation/zipball/28498169dd334095fa981827992f3a24d50fed0f",
"reference": "28498169dd334095fa981827992f3a24d50fed0f",
"shasum": ""
},
"require": {
"php": "^7.1.3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/translation-contracts": "^1.1.2"
"symfony/translation-contracts": "^1.1.6"
},
"conflict": {
"symfony/config": "<3.4",
@@ -4041,20 +4041,20 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
"time": "2019-07-18T10:34:59+00:00"
"time": "2019-08-26T08:55:16+00:00"
},
{
"name": "symfony/translation-contracts",
"version": "v1.1.5",
"version": "v1.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
"reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c"
"reference": "325b17c24f3ee23cbecfa63ba809c6d89b5fa04a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/cb4b18ad7b92a26e83b65dde940fab78339e6f3c",
"reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c",
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/325b17c24f3ee23cbecfa63ba809c6d89b5fa04a",
"reference": "325b17c24f3ee23cbecfa63ba809c6d89b5fa04a",
"shasum": ""
},
"require": {
@@ -4098,20 +4098,20 @@
"interoperability",
"standards"
],
"time": "2019-06-13T11:15:36+00:00"
"time": "2019-08-02T12:15:04+00:00"
},
{
"name": "symfony/var-dumper",
"version": "v4.3.3",
"version": "v4.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "e4110b992d2cbe198d7d3b244d079c1c58761d07"
"reference": "641043e0f3e615990a0f29479f9c117e8a6698c6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/e4110b992d2cbe198d7d3b244d079c1c58761d07",
"reference": "e4110b992d2cbe198d7d3b244d079c1c58761d07",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/641043e0f3e615990a0f29479f9c117e8a6698c6",
"reference": "641043e0f3e615990a0f29479f9c117e8a6698c6",
"shasum": ""
},
"require": {
@@ -4174,7 +4174,7 @@
"debug",
"dump"
],
"time": "2019-07-27T06:42:46+00:00"
"time": "2019-08-26T08:26:39+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
@@ -4215,8 +4215,8 @@
"authors": [
{
"name": "Tijs Verkoyen",
"role": "Developer",
"email": "css_to_inline_styles@verkoyen.eu"
"email": "css_to_inline_styles@verkoyen.eu",
"role": "Developer"
}
],
"description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
@@ -4443,8 +4443,8 @@
"authors": [
{
"name": "Filipe Dobreira",
"role": "Developer",
"homepage": "https://github.com/filp"
"homepage": "https://github.com/filp",
"role": "Developer"
}
],
"description": "php error handling for cool kids",
@@ -4819,18 +4819,18 @@
"authors": [
{
"name": "Arne Blankerts",
"role": "Developer",
"email": "arne@blankerts.de"
"email": "arne@blankerts.de",
"role": "Developer"
},
{
"name": "Sebastian Heuer",
"role": "Developer",
"email": "sebastian@phpeople.de"
"email": "sebastian@phpeople.de",
"role": "Developer"
},
{
"name": "Sebastian Bergmann",
"role": "Developer",
"email": "sebastian@phpunit.de"
"email": "sebastian@phpunit.de",
"role": "Developer"
}
],
"description": "Library for handling version information and constraints",
@@ -5101,8 +5101,8 @@
"authors": [
{
"name": "Sebastian Bergmann",
"role": "lead",
"email": "sebastian@phpunit.de"
"email": "sebastian@phpunit.de",
"role": "lead"
}
],
"description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
@@ -5152,8 +5152,8 @@
"authors": [
{
"name": "Sebastian Bergmann",
"role": "lead",
"email": "sebastian@phpunit.de"
"email": "sebastian@phpunit.de",
"role": "lead"
}
],
"description": "FilterIterator implementation that filters files based on a list of suffixes.",
@@ -5194,8 +5194,8 @@
"authors": [
{
"name": "Sebastian Bergmann",
"role": "lead",
"email": "sebastian@phpunit.de"
"email": "sebastian@phpunit.de",
"role": "lead"
}
],
"description": "Simple template engine.",
@@ -5243,8 +5243,8 @@
"authors": [
{
"name": "Sebastian Bergmann",
"role": "lead",
"email": "sebastian@phpunit.de"
"email": "sebastian@phpunit.de",
"role": "lead"
}
],
"description": "Utility class for timing",
@@ -5305,16 +5305,16 @@
},
{
"name": "phpunit/phpunit",
"version": "7.5.14",
"version": "7.5.15",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "2834789aeb9ac182ad69bfdf9ae91856a59945ff"
"reference": "d79c053d972856b8b941bb233e39dc521a5093f0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2834789aeb9ac182ad69bfdf9ae91856a59945ff",
"reference": "2834789aeb9ac182ad69bfdf9ae91856a59945ff",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d79c053d972856b8b941bb233e39dc521a5093f0",
"reference": "d79c053d972856b8b941bb233e39dc521a5093f0",
"shasum": ""
},
"require": {
@@ -5374,8 +5374,8 @@
"authors": [
{
"name": "Sebastian Bergmann",
"role": "lead",
"email": "sebastian@phpunit.de"
"email": "sebastian@phpunit.de",
"role": "lead"
}
],
"description": "The PHP Unit Testing framework.",
@@ -5385,7 +5385,7 @@
"testing",
"xunit"
],
"time": "2019-07-15T06:24:08+00:00"
"time": "2019-08-21T07:05:16+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
@@ -5945,8 +5945,8 @@
"authors": [
{
"name": "Sebastian Bergmann",
"role": "lead",
"email": "sebastian@phpunit.de"
"email": "sebastian@phpunit.de",
"role": "lead"
}
],
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
@@ -5995,16 +5995,16 @@
},
{
"name": "webmozart/assert",
"version": "1.4.0",
"version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
"reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
"reference": "88e6d84706d09a236046d686bbea96f07b3a34f4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
"reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
"url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4",
"reference": "88e6d84706d09a236046d686bbea96f07b3a34f4",
"shasum": ""
},
"require": {
@@ -6012,8 +6012,7 @@
"symfony/polyfill-ctype": "^1.8"
},
"require-dev": {
"phpunit/phpunit": "^4.6",
"sebastian/version": "^1.0.1"
"phpunit/phpunit": "^4.8.36 || ^7.5.13"
},
"type": "library",
"extra": {
@@ -6042,7 +6041,7 @@
"check",
"validate"
],
"time": "2018-12-25T11:19:39+00:00"
"time": "2019-08-24T08:43:50+00:00"
}
],
"aliases": [],

View File

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

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

View File

@@ -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',

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

@@ -24,8 +24,12 @@
<div class="row">
<div class="col-md-12">
<div class="btn-group w-100">
<a href="/admin/article/activity/edit/{{$a->id}}" type="button" class="btn btn-secondary btn-block"><i class="fa fa-cog"></i>&nbsp; Modifier l'article</a>
<a href="/admin/article/activity/picture/{{$a->id}}" type="button" class="btn btn-secondary btn-block"><i class="fa fa-picture-o"></i>&nbsp; Gérer les photos</a>
@if(\Auth::user()->p('article_edit') == 1)
<a href="/admin/article/activity/edit/{{$a->id}}" type="button" class="btn btn-secondary btn-block"><i class="fa fa-cog"></i>&nbsp; Modifier l'article</a>
@endif
@if(\Auth::user()->p('article_edit') == 1 && \Auth::user()->p('picture_add'))
<a href="/admin/article/activity/picture/{{$a->id}}" type="button" class="btn btn-secondary btn-block"><i class="fa fa-picture-o"></i>&nbsp; Gérer les photos</a>
@endif
</div>
</div>
<div class="col-md-12">

View File

@@ -27,7 +27,7 @@
<td>{{$item->name}}</td>
<td>{{$item->category()->name}}</td>
<td>{!! $item->desc !!}</td>
<td>{{$item->available()}}</td>
<td>{{$item->available($event->date_begin,$event->date_end)}}</td>
<td>
<button class="btn btn-primary btn-block" onclick='openModal("{{$item->id}}")'>Réserver</button>
</td>
@@ -58,7 +58,7 @@
function openModal(id)
{
$.get("/api/booking/modal/item/" + id + "?api_token="+api_token, function (data) {
$.get("/api/booking/modal/item/" + id + "/{{$event_type}}/{{$event_id}}?api_token="+api_token, function (data) {
$("#modal-content").html(data);
});
$('#createModal').modal('toggle')

View File

@@ -116,7 +116,7 @@
function openModal(id)
{
$.get("/api/booking/modal/edit/item/" + id + "?api_token="+api_token, function (data) {
$.get("/api/booking/modal/edit/item/" + id + "/{{$event_type}}/{{$event_id}}?api_token="+api_token, function (data) {
$("#modal-content").html(data);
});
$('#editModal').modal('toggle')

View File

@@ -27,7 +27,7 @@
<div class="col-md-12">
<div class="form-group">
<label>Quantité</label>
<input class="form-control" name="amount" type="number" min="1" required value="1" max="{{$item->available()}}">
<input class="form-control" name="amount" type="number" min="1" required value="1" max="{{$item->available($event->date_begin,$event->date_end)}}">
<small class="form-text text-muted">Quantité d'item a réserver</small>
</div>
</div>

View File

@@ -27,7 +27,7 @@
<div class="col-md-12">
<div class="form-group">
<label>Quantité</label>
<input class="form-control" name="amount" type="number" min="1" required value="{{$booking->amount}}" max="{{$booking->item->available()}}">
<input class="form-control" name="amount" type="number" min="1" required value="{{$booking->amount}}" max="{{$booking->item->available($event->date_begin,$event->date_end)}}">
<small class="form-text text-muted">Quantité d'item a réserver</small>
</div>
</div>

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>Ajouter un grade</h4>
</div>
<div class="card-body mt-5">
<form method="post" action="/admin/config/ranks/add">
@csrf
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label>Nom</label>
<input class="form-control" type="text" name="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"></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::allToArray() 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 $r)
<div class="col text-center">
<input class="d-none" type="text" id="{{$r['ckey']}}" name="{{$r['ckey']}}">
<h5>{{$r['communName']}}</h5>
<div class="btn-group">
<button type="button" id="{{$r['ckey']}}-close" class="btn btn-just-icon btn-outline-danger" onclick="switchPermissionSwitch('{{$r['ckey']}}','close')"><i class="fa fa-close"></i></button>
<!--<button type="button" id="{{$r['ckey']}}-slash" class="btn btn-just-icon btn-warning" onclick="switchPermissionSwitch('{{$r['ckey']}}','slash')"><i class="fa fa-slash"></i></button>-->
<button type="button" id="{{$r['ckey']}}-plus" class="btn btn-just-icon btn-outline-success" onclick="switchPermissionSwitch('{{$r['ckey']}}','plus')"><i class="fa fa-plus"></i></button>
</div>
<p>
<small>{{$r['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

@@ -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::allToArray() 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 $r)
<div class="col text-center">
<input class="d-none" type="text" id="{{$r['ckey']}}" name="{{$r['ckey']}}" value="{{$rank->p($r['ckey'])}}">
<h5>{{$r['communName']}}</h5>
<div class="btn-group">
<button type="button" id="{{$r['ckey']}}-close" class="btn btn-just-icon @if($rank->p($r['ckey']) != -1) btn-outline-danger @else btn-danger @endif" onclick="switchPermissionSwitch('{{$r['ckey']}}','close')"><i class="fa fa-close"></i></button>
<!--<button type="button" id="{{$r['ckey']}}-slash" class="btn btn-just-icon @if($rank->p($r['ckey']) == 0) btn-warning @else btn-outline-warning @endif" onclick="switchPermissionSwitch('{{$r['ckey']}}','slash')"><i class="fa fa-slash"></i></button>-->
<button type="button" id="{{$r['ckey']}}-plus" class="btn btn-just-icon @if($rank->p($r['ckey']) != 1) btn-outline-success @else btn-success @endif" onclick="switchPermissionSwitch('{{$r['ckey']}}','plus')"><i class="fa fa-plus"></i></button>
</div>
<p>
<small>{{$r['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

@@ -1,162 +1,137 @@
@extends('layouts.admin.main')
@section('content')
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header card-header-primary">
<h4 class="card-title"> Cours à venir</h4>
</div>
<div class="card-body">
@if(count($userClasse) == 0)
<div class="col-sm-12">
<div class="alert alert-info alert-with-icon">
<span data-notify="icon" class="ti-alert"></span>
<span data-notify="message">Aucun cours à venir</span>
</div>
</div>
@endif
@foreach ($userClasse as $classe)
<div class="col-sm-6">
@if ($classe['plan_done'] == "on")
<div class="alert alert-success alert-with-icon">
<span data-notify="icon" class="ti-crown"></span>
<span data-notify="message">Le cours {{$classe['ocom']}} - {{$classe['name']}} du {{$classe['date']}} est remis.<br>
@if ($classe['material'] != "")
- Vous avez réservé
@foreach (\App\Item::explodeItems($classe['material']) as $item)
@if (\App\Item::explodeItems($classe['material'])->last() == $item && \App\Item::explodeItems($classe['material'])->first() != $item)
et
@endif
{{$item->name}}
@endforeach
@else
- Aucun matériel réservé
@endif
</span>
</div>
@else
<div class="alert alert-warning alert-with-icon">
<span data-notify="icon" class="ti-alert"></span>
<span data-notify="message">Le cours {{$classe['ocom']}} - {{$classe['name']}} du {{$classe['date']}} n'est pas remis.<br>
@if ($classe['material'] != "")
- Vous avez réservé
@foreach (\App\Item::explodeItems($classe['material']) as $item)
@if (\App\Item::explodeItems($classe['material'])->last() == $item && \App\Item::explodeItems($classe['material'])->first() != $item)
et
@endif
{{$item->name}}
@endforeach
@else
- Aucun matériel réservé
@endif
</span>
</div>
@endif
</div>
@endforeach
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6 col-lg-6">
<div class="card">
<div class="card-header card-header-primary">
<h4 class="card-title">Activité à venir</h4>
</div>
<div class="card-body">
<div class="row">
@if(count($futureEvent) == 0)
<div class="col-sm-12">
<div class="alert alert-infi alert-with-icon">
<span data-notify="icon" class="ti-alert"></span>
<span data-notify="message">Aucune activité à venir</span>
</div>
</div>
@endif
@foreach ($futureEvent as $event)
<div class="col-md-12">
<div class="alert" style="background-color: {{\App\ComplementaryActivity::find($event->type)->calendar_color}}">
<div class="row text-white">
<div class="col-md-2 text-capitalize m-auto d-none d-md-flex">
<h3 class="m-0 p-0" style="margin-top: -0.5rem !important;">{!! \App\ComplementaryActivity::find($event->type)->calendar_icon !!}</h3>
</div>
<div class="col-md">
{{$event->name}}
</div>
<div class="col-md-4">
{{$event->date_begin}}
</div>
</div>
</div>
</div>
@endforeach
</div>
<br>
<a href="/admin/calendar" type="button" class="btn btn-primary btn-lg btn-block">Afficher plus</a>
</div>
</div>
</div>
<div class="col-sm-6 col-lg-6">
<div class="card">
<div class="card-header card-header-primary">
<h4 class="card-title">Activité sur le site</h4>
</div>
<div class="card-body">
@foreach (\App\Log::all()->forPage(1,3); as $event)
<i class="fa fa-arrow-right" aria-hidden="true"></i> {{$event->action}}<br>
@endforeach
<br>
<a href="/admin/stats/log" type="button" class="btn btn-primary btn-lg btn-block text-white">Afficher plus</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-8 col-md-12">
<div class="card">
<div class="card-header card-header-primary">
<h4 class="card-title">Message publié</h4>
</div>
<div class="card-body">
<div class="row">
@foreach (\App\Message::all()->forPage(1,4); as $msg)
<div class="col-lg-6 text-center">
<a href="/admin/message/{{$msg->id}}">
<div style="height:2rem;">{{$msg->title}}</div>
<br>
<div class="msg-body" style="height:12rem;overflow:hidden">
{!!$msg->body!!}
</div>
<br>
</a>
</div>
@endforeach
<div class="col-md-12">
<div class="card">
<div class="card-header card-header-primary">
<h4 class="card-title"> Cours à venir</h4>
</div>
<div class="card-body">
@if(\Auth::user()->courses->isEmpty())
<div class="col-sm-12 text-center">
<h4 class="m-4">Aucun cours à venir</h4>
</div>
@endif
@foreach (\Auth::user()->courses->take(6) as $course)
<div class="col-sm-6">
<div class="card">
<div class="card-body">
<h4><strong>{{$course->ocom}} - {{$course->name}}</strong></h4>
<p class="float-left">{{date('Y-m-d',strtotime($course->event->date_begin))}}</p>
<p class="float-right">Période {{$course->periode}}, Niveau {{$course->level}}</p>
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
<div class="col-md-12">
<div class="card">
<div class="card-header card-header-primary">
<h4 class="card-title">Activité à venir</h4>
</div>
<div class="card-body">
<div class="row">
@if(count($futureEvent) == 0)
<div class="col-sm-12 text-center">
<h4 class="m-4">Aucune activité à venir</h4>
</div>
@endif
@foreach ($futureEvent as $event)
<div class="col-md-12">
<div class="alert" style="background-color: {{\App\ComplementaryActivity::find($event->type)->calendar_color}}">
<div class="row text-white">
<div class="col-md-2 text-capitalize m-auto d-none d-md-flex">
<h3 class="m-0 p-0" style="margin-top: -0.5rem !important;">{!! \App\ComplementaryActivity::find($event->type)->calendar_icon !!}</h3>
</div>
<div class="col-md">
{{$event->name}}
</div>
<div class="col-md-4">
{{$event->date_begin}}
</div>
</div>
</div>
</div>
@endforeach
</div>
<br>
<a href="/admin/schedule" type="button" class="btn btn-primary btn-lg btn-block">Afficher plus</a>
</div>
<br>
<a href="/admin/message" type="button" class="btn btn-primary btn-lg btn-block text-white">Afficher plus</a>
</div>
</div>
</div>
<div class="col-sm-4 col-lg-4">
<div class="card card-profile">
<div class="card-avatar">
<a>
<img class="img" src="/assets/admin/images/avatar/user-{{\Auth::User()->avatar}}.jpg">
</a>
</div>
<div class="card-body">
<div class="mx-auto d-block">
<h5 class="text-sm-center mt-2 mb-1">{{\Auth::User()->fullname()}}</h5>
<div class="location text-sm-center"><i class="fa fa-id-card-o" aria-hidden="true"></i> {{\App\Rank::find(\Auth::User()->rank)->name}}</div>
<div class="col-lg-4">
<div class="col-12">
<div class="card card-profile">
<div class="card-avatar">
<a>
<img class="img" src="/assets/admin/images/avatar/user-{{\Auth::User()->avatar}}.jpg">
</a>
</div>
<hr>
<div class="card-text text-sm-center">
<a class="btn btn-block btn-secondary" href="/admin/profil">Profil</a>
<div class="card-body">
<div class="mx-auto d-block">
<h5 class="text-sm-center mt-2 mb-1">{{\Auth::User()->fullname()}}</h5>
<div class="location text-sm-center"><i class="fa fa-id-card-o" aria-hidden="true"></i> {{\Auth::User()->rank->name}}</div>
</div>
<hr>
<div class="card-text text-sm-center">
<a class="btn btn-block btn-secondary" href="/admin/profil">Profil</a>
</div>
</div>
</div>
</div>
<div class="col-md-12">
<div class="card">
<div class="card-header card-header-info">
<h4 class="card-title">Nouvelles</h4>
</div>
<div class="card-body">
<div class="row">
@foreach (\App\News::all()->forPage(1,4); as $msg)
<div class="col-12 text-center">
<a href="/admin/message/{{$msg->id}}">
<div style="height:2rem;">{{$msg->title}}</div>
<br>
<div class="msg-body" style="height:12rem;overflow:hidden">
{!!$msg->body!!}
</div>
<br>
</a>
</div>
@endforeach
</div>
<br>
<a href="/admin/news" type="button" class="btn btn-primary btn-lg btn-block text-white">Afficher plus</a>
</div>
</div>
</div>
@if(\Auth::user()->p('stats_see') == 1)
<div class="col-12">
<div class="card">
<div class="card-header card-header-primary">
<h4 class="card-title">Activité sur le site</h4>
</div>
<div class="card-body">
@foreach (\App\Log::all()->forPage(1,3); as $log)
<div class="row mt-3">
<div class="col-lg-12 col-xl-3 mx-3 my-auto">
<span class="badge badge-pill badge-{{$log->typeColor()}} mr-2">{{$log->type}}</span>
</div>
<div class="col">
{{$log->user->fullname()}} - {{$log->event}}
</div>
</div>
@endforeach
<br>
<a href="/admin/stats/log" type="button" class="btn btn-primary btn-lg btn-block text-white">Afficher plus</a>
</div>
</div>
</div>
@endif
</div>
</div>
@endsection

View File

@@ -9,7 +9,9 @@
</div>
<div class="card-body">
<div class="btn-group btn-block">
<a name="add" id="add" class="btn btn-primary btn-block" href="/admin/item/add" role="button">Ajouter un item</a>
@if(\Auth::user()->p('inventory_add') == 1)
<a name="add" id="add" class="btn btn-primary btn-block" href="/admin/item/add" role="button">Ajouter un item</a>
@endif
</div>
<hr>
<table id="log-data" class="table table-striped table-bordered">
@@ -35,8 +37,12 @@
<td>{!! $item->desc !!}</td>
<td style="width: 12%;">
<div class="btn-group">
@if(\Auth::user()->p('inventory_edit') == 1)
<a href="/admin/item/edit/{{$item->id}}" type="button" class="btn btn-secondary"><i class="fa fa-cog"></i>&nbsp; Modifier</a>
<a type="button" class="btn btn-danger" onclick="deleteEvent({{$item->id}});"><i class="fa fa-times-circle" style="color:white;"></i></a>
@endif
@if(\Auth::user()->p('inventory_delete') == 1)
<a type="button" class="btn btn-danger" onclick="deleteEvent({{$item->id}});"><i class="fa fa-times-circle" style="color:white;"></i></a>
@endif
</div>
</td>
</tr>

View File

@@ -8,8 +8,6 @@
</a></strong>
</div>
<div class="card-body">
<button type="button" class="btn btn-primary btn-lg btn-block">Afficher toutes les activitées</button>
<hr>
<div class="material-datatables">
<table id="log-data" class="table table-striped table-no-bordered table-hover dataTable dtr-inline">
<thead>
@@ -26,7 +24,7 @@
<tr>
<td>{{$item->created_at}}</td>
<th><span class="badge badge-pill badge-{{$item->typeColor()}}">{{$item->type}}</span></th>
<th><span class="badge badge-pill badge-{{$item->result}}">Success</span></th>
<th><span class="badge badge-pill badge-{{$item->result}} text-uppercase">{{$item->result}}</span></th>
<td>{{\App\User::find($item->user_id)->fullname()}}</td>
<td><a href="">{{$item->event}}</a></td>
</tr>

View File

@@ -9,10 +9,17 @@
</div>
<div class="card-body">
<div class="btn-group btn-block">
<a name="add" id="add" class="btn btn-primary btn-block" href="/admin/news/add" role="button">Ajouter un nouvelle</a>
@if(\Auth::user()->p('news_add') == 1)
<a name="add" id="add" class="btn btn-primary btn-block" href="/admin/news/add" role="button">Ajouter un nouvelle</a>
@endif
</div>
<hr>
<div class="row">
@if($news->isEmpty())
<div class="col-md-12 text-center">
<h4 class="m-4">Aucune nouvelle</h4>
</div>
@endif
@foreach($news as $n)
<div class="col-md-4">
<div class="card">
@@ -26,8 +33,12 @@
</div>
<div class="card-footer">
<div class="btn-group">
<a href="/admin/news/edit/{{$n->id}}" type="button" class="btn btn-secondary"><i class="fa fa-cog"></i>&nbsp; Modifier</a>
<a type="button" class="btn btn-danger" onclick="deleteEvent({{$n->id}});"><i class="fa fa-times-circle" style="color:white;"></i></a>
@if(\Auth::user()->p('news_edit') == 1)
<a href="/admin/news/edit/{{$n->id}}" type="button" class="btn btn-secondary"><i class="fa fa-cog"></i>&nbsp; Modifier</a>
@endif
@if(\Auth::user()->p('news_delete') == 1)
<a type="button" class="btn btn-danger" onclick="deleteEvent({{$n->id}});"><i class="fa fa-times-circle" style="color:white;"></i></a>
@endif
</div>
</div>
</div>

View File

@@ -2,83 +2,64 @@
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>
<body>
Du <strong>{{$event->date_begin}}</strong> au <strong>{{$event->date_end}}</strong><br>
<small>{{$event->location}} </small>
@if ($event->is_mandatory)
Obligatoire -
@else
Optionnel -
@endif
@if (is_int($event->type))
{{$event->type}}
@else
{{\App\ComplementaryActivity::find($event->type)->name}}
@endif
{!!$event->desc!!}
Du <strong>{{$event->date_begin}}</strong> au <strong>{{$event->date_end}}</strong>
<div>
{{$event->location}}
@if ($event->is_mandatory)
(Activité Obligatoire)
@else
(Activité Optionnel)
@endif
</div>
<div>
@if (is_int($event->type))
{{$event->type}}
@else
{{\App\ComplementaryActivity::find($event->type)->name}}
@endif
</div>
<div>
{!!$event->desc!!}
</div>
@if (!$event->courses->isEmpty())
<h4 class="title text-center">Horaire</h4>
<table>
<thead>
<th>Niveau</th>
@for ($p = 1; $p <= \App\Config::getData('admin_periode_nb'); $p++)
<th>
Période {{$p}} <small>{{\App\Config::all()->where('name','admin_periode_begin')->first()->data[$p]}} à {{\App\Config::all()->where('name','admin_periode_end')->first()->data[$p]}} </small>
</th>
@endfor
</thead>
<tbody>
@for ($l = 1; $l <= \App\Config::getData('admin_level_in_schedule_nb'); $l++)
<div class="w-100 mt-2">
<h4>Horaire</h4>
<table style="width:100%" class="table">
<tr>
<td class="col-md-2 m-3">
Niveau {{$l}}
</td>
<th>Niveau</th>
@for ($p = 1; $p <= \App\Config::getData('admin_periode_nb'); $p++)
<th>
Période {{$p}} <small>{{\App\Config::all()->where('name','admin_periode_begin')->first()->data[$p]}} à {{\App\Config::all()->where('name','admin_periode_end')->first()->data[$p]}}</small>
</th>
@endfor
</tr>
@for ($l = 1; $l <= \App\Config::getData('admin_level_in_schedule_nb'); $l++)
<tr>
<td>
@foreach ($event->courses as $course)
@if ($course->periode == $p && $course->level == $l)
{{$course->name}}
@if(\App\User::find($course->user_id))
{{\App\User::find($course->user_id)->fullname()}}
@else
Utilisateur Inconnu
Niveau {{$l}}
</td>
@for ($p = 1; $p <= \App\Config::getData('admin_periode_nb'); $p++)
<td>
@foreach($event->courses as $course)
@if($course->periode == $p && $course->level == $l)
<table class="w-100 mx-5 table-borderless bg-white">
<tr>
<td>{{$course->name}}</td>
<td class="text-right">{{$course->user->fullname()}}</td>
</tr>
<tr>
<td>{{$course->ocom}}</td>
<td class="text-right">{{$course->location}}</td>
</tr>
</table>
@endif
{{$course->ocom}}
{{$course->location}}
<a>Réservation de materiel</a>
<table>
@if (!$course->bookings->isEmpty())
<thead class="row">
<th class="col-sm-8 p-2">
<strong>Item</strong>
</th>
<th class="col-sm-4 text-right p-2">
<strong>Quantité</strong>
</th>
</thead>
<tbody>
@foreach ($course->bookings as $booking)
<tr>
<td class="col-sm-8 p-2">
<a href="/admin/item/{{$booking->item->id}}">{{$booking->item->name}}</a>
</td>
<td class="col-sm-4 text-right p-2">
{{$booking->amount}}
</td>
</tr>
@endforeach
</tbody>
@else
<p class="text-center">
<strong>Aucune réservation</strong>
</p>
@endif
</table>
@endif
@endforeach
@endfor
@endfor
</table>
@endforeach
</td>
@endfor
</tr>
@endfor
</table>
</div>
@endif
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>

View File

@@ -2,6 +2,206 @@
@section('content')
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">3.2.3</h3>
<p class="category">2019-09-13</p>
</div>
<div class="col-sm-6 text-right">
<span class="badge badge-pill badge-success">STABLE</span>
</div>
</div>
</div>
<div class="card-body">
<div class="alert alert-danger" role="alert">
<i class="fas fa-exclamation-triangle text-white fa-2x mr-3"></i>La gestion des postes est <strong>DÉSACTIVÉ</strong> le temps de moderniser la base de donnée
</div>
<div class="row">
<div class="col-md-6">
<p>
Nouveauté
<ul class="list-group list-group-flush ml-3">
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-coffee"></i>
</div>
<div class="col m-auto text-left">
La gestion des grades est maintenant possible.
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-coffee"></i>
</div>
<div class="col m-auto text-left">
Refonte du code responsable de la gestion des grades
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-coffee"></i>
</div>
<div class="col m-auto text-left">
Modernisation de la base de données des grades
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-coffee"></i>
</div>
<div class="col m-auto text-left">
Suppression de L'ECC au profit d'un nouveau systeme de permission. Le grade et les permissions du grade définissent ce que peux faire un utilisateur sur le site.
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-plus"></i>
</div>
<div class="col m-auto text-left">
Ajout de la possibilité d'imprimer une activité depuis l'horaire
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-plus"></i>
</div>
<div class="col m-auto text-left">
Ajout de la possibilité de réserver du matériel depuis l'horaire
</div>
</div>
</li>
</ul>
</p>
</div>
<div class="col-md-6">
<p>
Bug
<ul class="list-group list-group-flush ml-3">
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-bug"></i>
</div>
<div class="col m-auto text-left">
Correction de <a href="https://op.exvps.ca/versions/8">4 bugs</a>
</div>
</div>
</li>
</ul>
</p>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">3.2.2</h3>
<p class="category">2019-09-11</p>
</div>
<div class="col-sm-6 text-right">
<span class="badge badge-pill badge-success">STABLE</span>
</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<p>
Nouveauté
<ul class="list-group list-group-flush ml-3">
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-coffee"></i>
</div>
<div class="col m-auto text-left">
Réactivation des réservations
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-coffee"></i>
</div>
<div class="col m-auto text-left">
Refonte du code responsable de la gestion de l'inventaire
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-coffee"></i>
</div>
<div class="col m-auto text-left">
Modernisation de la base de données des réservations
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-plus"></i>
</div>
<div class="col m-auto text-left">
Ajout de la possibilité d'imprimer une activité depuis l'horaire
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-plus"></i>
</div>
<div class="col m-auto text-left">
Ajout de la possibilité de réserver du matériel depuis l'horaire
</div>
</div>
</li>
</ul>
</p>
</div>
<div class="col-md-6">
<p>
Bug
<ul class="list-group list-group-flush ml-3">
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-bug"></i>
</div>
<div class="col m-auto text-left">
Correction de <a href="https://op.exvps.ca/versions/8">4 bugs</a>
</div>
</div>
</li>
</ul>
</p>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-12">
<div class="card">
<div class="card-header">

View File

@@ -95,7 +95,7 @@
<div class="form-group">
<label for="rank">Grade</label>
<select class="form-control" name="rank" id="rank" required>
<option value={{$user->rank}}>{{\App\Rank::find($user->rank)->name}}</option>
<option value={{$user->rank->id}}>{{$user->rank->name}}</option>
@foreach ($RankList as $rank)
<option value="{{$rank->id}}">{{$rank->name}}</option>
@endforeach

View File

@@ -22,7 +22,7 @@
<tr>
<td style="width: 5%;">{{$item->id}}</td>
<td>{{$item->fullname()}}</td>
<td>{{\App\Rank::find($item->rank)->name}}</td>
<td>{{$item->rank->name}}</td>
<td>{{\App\Job::find($item->job)->name}}</td>
<td class="td-actions text-right" style="width: 12%;">
<a class="btn btn-info p-2 text-white" href="/admin/user/edit/{{$item->id}}"><i class="material-icons">edit</i></a>

View File

@@ -10,7 +10,7 @@
<div class="mx-auto d-block">
<img class="rounded-circle mx-auto d-block" src="/assets/admin/images/avatar/user-{{\Auth::User()->avatar}}.jpg" alt="Card image cap" style="height:12rem">
<h5 class="text-sm-center mt-2 mb-1">{{\Auth::User()->fullname()}}</h5>
<div class="location text-sm-center"><i class="fa fa-id-card-o" aria-hidden="true"></i> {{\App\Rank::find(\Auth::User()->rank)->name}}</div>
<div class="location text-sm-center"><i class="fa fa-id-card-o" aria-hidden="true"></i> {{\Auth::User()->rank->name}}</div>
</div>
</div>
<div class="col-sm-6 text-center">

View File

@@ -24,11 +24,11 @@
</div>
<div class="form-group">
<label for="pws">Entrer votre nouveau mot de passe</label>
<input type="password" class="form-control" name="psw" id="psw" placeholder="Mot de passe" onkeyup="checkPassword()">
<input type="password" class="form-control" name="psw" id="psw" onkeyup="checkPassword()">
</div>
<div class="form-group">
<label for="pwsc">Confirmer votre nouveau mot de passe</label>
<input type="password" class="form-control" name="pswc" id="pswc" placeholder="Mot de passe" onkeyup="checkPassword()">
<input type="password" class="form-control" name="pswc" id="pswc" onkeyup="checkPassword()">
</div>
<button type="submit" id="submit" class="btn btn-primary" disabled>Enregistrer</button>
</form>

View File

@@ -64,6 +64,13 @@
}, false);
</script>
@endif
@if (session('danger'))
<script>
document.addEventListener('DOMContentLoaded', function() {
showNotification('error','{{ session('error') }}','top', 'center')
}, false);
</script>
@endif
@if (session('warning'))
<script>
document.addEventListener('DOMContentLoaded', function() {

View File

@@ -1,6 +1,7 @@
<?php
use App\Notifications\Alert;
setlocale(LC_ALL,'fr');
?>
<!doctype html>

View File

@@ -15,9 +15,8 @@
<p> Dashboard </p>
</a>
</li>
<h6 class="ml-4 mt-5" style="color:white">
Espace Cadet Cadre
</h6>
<hr>
@if(\Auth::user()->p('msg_see') == 12)
<li class="nav-item ">
<a class="nav-link" data-toggle="collapse" href="#message">
<i class="material-icons">email</i>
@@ -33,78 +32,77 @@
<span class="sidebar-normal"> Afficher les messages </span>
</a>
</li>
@if(\Auth::user()->p('msg_add') == 1)
<li class="nav-item ">
<a class="nav-link" href="/admin/message/add">
<span class="sidebar-mini"> <i class="fas fa-plus"></i> </span>
<span class="sidebar-normal"> Ajouter un message </span>
</a>
</li>
@endif
@if(\Auth::user()->p('msg_delete') == 1)
<li class="nav-item ">
<a class="nav-link" href="/admin/message">
<span class="sidebar-mini"> <i class="fas fa-times"></i> </span>
<span class="sidebar-normal"> Supprimer un message </span>
</a>
</li>
@endif
</ul>
</div>
</li>
<li class="nav-item ">
<a class="nav-link" href="/admin/files">
<i class="material-icons">folder</i>
<p> Fichier</p>
</a>
</li>
<li class="nav-item ">
<a class="nav-link" href="/admin/guide">
<i class="material-icons">library_books</i>
<p> Guide pédagogique</p>
</a>
</li>
<h6 class="ml-4 mt-5" style="color:white">
Espace Administration
</h6>
<li class="nav-item ">
<a class="nav-link" href="/admin/calendar">
<i class="material-icons">calendar_today</i>
<p> Horaire</p>
</a>
</li>
<li class="nav-item ">
<a class="nav-link" data-toggle="collapse" href="#news">
<i class="material-icons">new_releases</i>
<p> Nouvelles
<b class="caret"></b>
</p>
</a>
<div class="collapse" id="news">
<ul class="nav">
<li class="nav-item ">
<a class="nav-link" href="/admin/news">
<span class="sidebar-mini"> <i class="fas fa-eye"></i> </span>
<span class="sidebar-normal"> Voir les nouvelles </span>
</a>
</li>
<li class="nav-item ">
<a class="nav-link" href="/admin/news/add">
<span class="sidebar-mini"> <i class="fas fa-plus"></i> </span>
<span class="sidebar-normal"> Ajouter une nouvelle </span>
</a>
</li>
@endif
@if(\Auth::user()->p('news_see') == 1)
<li class="nav-item ">
<a class="nav-link" data-toggle="collapse" href="#news">
<i class="material-icons">new_releases</i>
<p> Nouvelles
<b class="caret"></b>
</p>
</a>
<div class="collapse" id="news">
<ul class="nav">
<li class="nav-item ">
<a class="nav-link" href="/admin/news">
<span class="sidebar-mini"> <i class="fas fa-eye"></i> </span>
<span class="sidebar-normal"> Voir les nouvelles </span>
</a>
</li>
@if(\Auth::user()->p('news_add') == 1)
<li class="nav-item ">
<a class="nav-link" href="/admin/news/add">
<span class="sidebar-mini"> <i class="fas fa-plus"></i> </span>
<span class="sidebar-normal"> Ajouter une nouvelle </span>
</a>
</li>
@endif
<!--<li class="nav-item ">
<a class="nav-link" href="/admin/inventory/booking">
<span class="sidebar-mini"> <i class="fas fa-bookmark"></i> </span>
<span class="sidebar-normal"> Réservation</span>
</a>
</li>-->
</ul>
</div>
</ul>
</div>
</li>
@endif
@if(\Auth::user()->p('schedule_see') == 1)
<li class="nav-item ">
<a class="nav-link" href="/admin/schedule">
<i class="material-icons">calendar_today</i>
<p> Horaire</p>
</a>
</li>
@endif
@if(\Auth::user()->p('article_see') == 1)
<li class="nav-item ">
<a class="nav-link" href="/admin/article">
<i class="material-icons">description</i>
<p> Articles</p>
</a>
</li>
@endif
@if(\Auth::user()->p('inventory_see') == 1)
<li class="nav-item ">
<a class="nav-link" data-toggle="collapse" href="#inventory">
<i class="material-icons">shopping_basket</i>
@@ -120,12 +118,14 @@
<span class="sidebar-normal"> Voir l'inventaire </span>
</a>
</li>
@if(\Auth::user()->p('inventory_edit') == 1)
<li class="nav-item ">
<a class="nav-link" href="/admin/inventory/management">
<span class="sidebar-mini"> <i class="fas fa-cogs"></i> </span>
<span class="sidebar-normal"> Gestion de l'inventaire </span>
</a>
</li>
@endif
<!--<li class="nav-item ">
<a class="nav-link" href="/admin/inventory/booking">
<span class="sidebar-mini"> <i class="fas fa-bookmark"></i> </span>
@@ -135,6 +135,8 @@
</ul>
</div>
</li>
@endif
@if(\Auth::user()->p('picture_see') == 1)
<li class="nav-item ">
<a class="nav-link" data-toggle="collapse" href="#picture">
<i class="material-icons">image</i>
@@ -150,15 +152,19 @@
<span class="sidebar-normal"> Afficher toutes les images </span>
</a>
</li>
@if(\Auth::user()->p('picture_add') == 1)
<li class="nav-item ">
<a class="nav-link" href="/admin/picture/add">
<span class="sidebar-mini"> <i class="fas fa-plus"></i> </span>
<span class="sidebar-normal"> Ajouter une image </span>
</a>
</li>
@endif
</ul>
</div>
</li>
@endif
@if(\Auth::user()->p('stats_see') == 1)
<li class="nav-item ">
<a class="nav-link" data-toggle="collapse" href="#stats">
<i class="material-icons">timeline</i>
@@ -177,6 +183,8 @@
</ul>
</div>
</li>
@endif
@if(\Auth::user()->p('user_see') == 1)
<li class="nav-item ">
<a class="nav-link" data-toggle="collapse" href="#user">
<i class="material-icons">supervised_user_circle</i>
@@ -186,12 +194,14 @@
</a>
<div class="collapse" id="user">
<ul class="nav">
@if(\Auth::user()->p('user_add') == 1)
<li class="nav-item ">
<a class="nav-link" href="/admin/user/add">
<span class="sidebar-mini"> <i class="fas fa-plus"></i> </span>
<span class="sidebar-normal"> Ajouter un utilisateur </span>
</a>
</li>
@endif
<li class="nav-item ">
<a class="nav-link" href="/admin/user">
<span class="sidebar-mini"> <i class="fas fa-list"></i> </span>
@@ -201,6 +211,20 @@
</ul>
</div>
</li>
@endif
<li class="nav-item ">
<a class="nav-link" href="/admin/files">
<i class="material-icons">folder</i>
<p> Fichier</p>
</a>
</li>
<li class="nav-item ">
<a class="nav-link" href="/admin/guide">
<i class="material-icons">library_books</i>
<p> Guide pédagogique</p>
</a>
</li>
@if(\Auth::user()->p('config_edit') == 1)
<li class="nav-item ">
<a class="nav-link" data-toggle="collapse" href="#config">
<i class="material-icons">settings</i>
@@ -234,9 +258,22 @@
<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>
@endif
<h6 class="ml-4 mt-5" style="color:white">
Outils
</h6>

View File

@@ -12,9 +12,13 @@
<div class="modal-footer">
<div class="col-md-6">
<div class="btn-group">
@if(\Auth::user()->p('schedule_edit') == 1)
<a class="btn btn-primary" href="/admin/schedule/edit/{{$event->id}}" data-toggle="tooltip" data-placement="bottom" title="Modifier"><i class="material-icons">edit</i></a>
<button disabled class="btn btn-primary" href="/admin/schedule/pdf/event/{{$event->id}}" target="_blank" data-toggle="tooltip" data-placement="bottom" title="Imprimer"><i class="material-icons">print</i></button>
<button class="btn btn-danger" data-toggle="tooltip" data-placement="bottom" title="Supprimer" onclick="deleteEvent({{$event->id}})"><i class="material-icons">close</i></button>
@endif
<a class="btn btn-primary" href="/admin/schedule/pdf/event/{{$event->id}}" target="_blank" data-toggle="tooltip" data-placement="bottom" title="Imprimer"><i class="material-icons">print</i></a>
@if(\Auth::user()->p('schedule_delete') == 1)
<button class="btn btn-danger" data-toggle="tooltip" data-placement="bottom" title="Supprimer" onclick="deleteEvent({{$event->id}})"><i class="material-icons">close</i></button>
@endif
</div>
</div>
<div class="col-md-6 text-right">

View File

@@ -20,47 +20,41 @@ Route::middleware('auth:api')->group(function () {
return $request->user();
});
/** Calendar Route */
Route::post('/calendar/generate', 'CalendarController@generate');
Route::post('/calendar_ecc/generate', 'ECCController@generateCalendar');
Route::post('/calendar/loadDay', 'CalendarController@show');
Route::post('/calendar/delete', 'CalendarController@delete');
Route::get('/schedule/events/modal/full/{id}/{db_type}','ScheduleController@loadModalFull');
Route::get('/schedule/events/add/modal/{type}/{date}','ScheduleController@loadModalDefautType');
Route::post('/schedule/event/delete/{id}','ScheduleController@delete');
Route::get('/schedule/events/modal/full/{id}/{db_type}','ScheduleController@loadModalFull')->middleware('perm:schedule_see');
Route::get('/schedule/events/add/modal/{type}/{date}','ScheduleController@loadModalDefautType')->middleware('perm:schedule_add');
Route::post('/schedule/event/delete/{id}','ScheduleController@delete')->middleware('perm:schedule_delete');
/** Booking */
Route::get('/booking/modal/item/{id}','BookingController@modalItem');
Route::get('/booking/modal/edit/item/{id}','BookingController@modalItemEdit');
Route::post('/booking/delete','BookingController@destroy');
Route::get('/booking/modal/item/{id}/{event_type}/{event_id}','BookingController@modalItem')->middleware('perm:booking_see');
Route::get('/booking/modal/edit/item/{id}/{event_type}/{event_id}','BookingController@modalItemEdit')->middleware('perm:booking_edit');
Route::post('/booking/delete','BookingController@destroy')->middleware('perm:booking_delete');
/** Picture */
Route::post('/picture/delete/{id}','PictureController@destroy');
Route::post('/picture/delete/{id}','PictureController@destroy')->middleware('perm:picture_delete');
/** Message Route */
Route::post('/message/delete', 'MessageController@destroy');
Route::post('/message/delete', 'MessageController@destroy')->middleware('perm:msg_delete');
/** News Route */
Route::post('/news/delete','NewsController@destroy');
Route::post('/news/delete','NewsController@destroy')->middleware('perm:news_delete');
/** User Route */
Route::post('/user/delete', 'UserController@destroy');
Route::get('/user/list', 'UserController@apiList');
Route::post('/user/delete', 'UserController@destroy')->middleware('perm:user_delete');
Route::get('/user/list', 'UserController@apiList')->middleware('perm:user_see');
/** Inventory Route */
Route::post('/item/delete', 'ItemController@destroy');
Route::post('/item/delete', 'ItemController@destroy')->middleware('perm:inventory_delete');
/** Item Category */
Route::post('/itemcategory/delete/{id}','ItemCategoryController@destroy');
Route::post('/itemcategory/delete/{id}','ItemCategoryController@destroy')->middleware('perm:inventory_edit');
/** Config Route */
Route::post('/config/general/save', 'ConfigController@update');
Route::post('/config/activity/delete', 'ComplementaryActivityController@destroy');
Route::post('/config/general/save', 'ConfigController@update')->middleware('perm:config_edit');
Route::post('/config/activity/delete', 'ComplementaryActivityController@destroy')->middleware('perm:config_delete');
Route::get('/user/perm/{id}', function($id) {
$user = \App\User::find($id);
return $user->getPerm("schedule_edit");
});
})->middleware('perm:user_see');
});
Route::get('/admin/ping', function(){
$users = \App\User::all();
@@ -84,25 +78,3 @@ Route::get('/admin/ping', function(){
return "pong";
}
});
Route::get('/ecc/ping', function(){
$users = \App\User::all();
$schedules = \App\Schedule::all();
$oups = false;
foreach ($users as $user) {
if($user == null){
$oups = true;
}
}
foreach ($schedules as $schedule) {
if($schedule == null){
$oups = true;
}
}
if ($oups) {
return "oups";
} else {
return "pong";
}
});

View File

@@ -31,7 +31,7 @@ Route::get('/test',function(){
clog('add','success','Test');
});
Route::middleware(['auth','admin'])->group(function () {
Route::middleware(['auth'])->group(function () {
/* Espace Administration Route */
@@ -39,107 +39,105 @@ Route::middleware(['auth','admin'])->group(function () {
Route::get('/admin', 'AdminController@index')->name('admin');
Route::get('/admin/update', 'AdminController@update');
/** Calendar */
Route::get('/admin/calendar', 'CalendarController@index');
Route::get('/admin/calendar/add/{date}', ['uses' =>'CalendarController@add']);
Route::get('/admin/calendar/edit/{id}', ['uses' =>'CalendarController@edit']);
Route::post('/admin/calendar/add', 'CalendarController@store');
Route::patch('/admin/calendar/edit/{id}', ['uses' =>'CalendarController@patch']);
/** Schedule */
Route::get('/admin/schedule/pdf/event/{id}','ScheduleController@printtopdf');
Route::get('/admin/schedule/add/{date}','ScheduleController@create');
Route::get('/admin/schedule/edit/{id}','EventController@edit');
Route::post('/admin/schedule/event/add','EventController@Store');
Route::post('/admin/schedule/event/edit/{id}','EventController@update');
Route::get('/admin/schedule', 'CalendarController@index')->middleware('perm:schedule_see');
Route::get('/admin/schedule/pdf/event/{id}','ScheduleController@printtopdf')->middleware('perm:schedule_see');
Route::get('/admin/schedule/add/{date}','ScheduleController@create')->middleware('perm:schedule_add');
Route::get('/admin/schedule/edit/{id}','EventController@edit')->middleware('perm:schedule_edit');
Route::post('/admin/schedule/event/add','EventController@Store')->middleware('perm:schedule_add');
Route::post('/admin/schedule/event/edit/{id}','EventController@update')->middleware('perm:schedule_edit');
/** Statistique */
Route::get('/admin/stats/log' , 'LogController@index');
Route::get('/admin/stats/log' , 'LogController@index')->middleware('perm:stats_see');;
/** Message */
Route::get('/admin/message' , 'MessageController@index');
Route::get('/admin/message/add' , 'MessageController@create');
Route::post('/admin/message/add' , 'MessageController@store');
Route::get('/admin/message/{id}', ['uses' =>'MessageController@show']);
Route::get('/admin/message' , 'MessageController@index')->middleware('perm:msg_see');
Route::get('/admin/message/add' , 'MessageController@create')->middleware('perm:msg_add');
Route::post('/admin/message/add' , 'MessageController@store')->middleware('perm:msg_add');
Route::get('/admin/message/{id}', ['uses' =>'MessageController@show'])->middleware('perm:msg_see');
/** User */
Route::get('/admin/user' , 'UserController@index');
Route::get('/admin/user/add' , 'UserController@create');
Route::post('/admin/user/add' , 'UserController@store');
Route::get('/admin/user/edit/{id}' , 'UserController@edit');
Route::post('/admin/user/edit/{id}' , 'UserController@update');
Route::get('/admin/user' , 'UserController@index')->middleware('perm:user_see');
Route::get('/admin/user/add' , 'UserController@create')->middleware('perm:user_add');
Route::post('/admin/user/add' , 'UserController@store')->middleware('perm:user_add');
Route::get('/admin/user/edit/{id}' , 'UserController@edit')->middleware('perm:user_edit');
Route::post('/admin/user/edit/{id}' , 'UserController@update')->middleware('perm:user_edit');
/** Config */
Route::get('/admin/config/job' , 'JobController@index');
Route::get('/admin/config/job/add' , 'JobController@create');
Route::post('/admin/config/job/add' , 'JobController@store');
Route::get('/admin/config/job/edit/{id}' , 'JobController@edit');
Route::get('/admin/config/schedule' , 'ScheduleController@index');
Route::post('/admin/config/schedule/edit' , 'ScheduleController@update');
Route::get('/admin/config/activity' , 'ComplementaryActivityController@index');
Route::get('/admin/config/activity/add' , 'ComplementaryActivityController@create');
Route::post('/admin/config/activity/add' , 'ComplementaryActivityController@store');
Route::get('/admin/config/activity/edit/{id}' , 'ComplementaryActivityController@edit');
Route::post('/admin/config/activity/edit/{id}' , 'ComplementaryActivityController@update');
Route::post('/admin/config/general/edit','ConfigController@update');
Route::get('/admin/config/' , 'ConfigController@index');
Route::get('/admin/config/customisation','ConfigController@customisation');
Route::post('/admin/config/customisation','ConfigController@customisationUpdate');
Route::get('/admin/config/job' , 'JobController@index')->middleware('perm:config_see');
Route::get('/admin/config/job/add' , 'JobController@create')->middleware('perm:config_add');
Route::post('/admin/config/job/add' , 'JobController@store')->middleware('perm:config_add');
Route::get('/admin/config/job/edit/{id}' , 'JobController@edit')->middleware('perm:config_add');
Route::get('/admin/config/schedule' , 'ScheduleController@index')->middleware('perm:config_edit');
Route::post('/admin/config/schedule/edit' , 'ScheduleController@update')->middleware('perm:config_edit');
Route::get('/admin/config/activity' , 'ComplementaryActivityController@index')->middleware('perm:config_edit');
Route::get('/admin/config/activity/add' , 'ComplementaryActivityController@create')->middleware('perm:config_edit');
Route::post('/admin/config/activity/add' , 'ComplementaryActivityController@store')->middleware('perm:config_edit');
Route::get('/admin/config/activity/edit/{id}' , 'ComplementaryActivityController@edit')->middleware('perm:config_edit');
Route::post('/admin/config/activity/edit/{id}' , 'ComplementaryActivityController@update')->middleware('perm:config_edit');
Route::post('/admin/config/general/edit','ConfigController@update')->middleware('perm:config_edit');
Route::get('/admin/config/' , 'ConfigController@index')->middleware('perm:config_edit');
Route::get('/admin/config/customisation','ConfigController@customisation')->middleware('perm:config_edit');
Route::post('/admin/config/customisation','ConfigController@customisationUpdate')->middleware('perm:config_edit');
Route::get('/admin/config/ranks','RankController@index')->middleware('perm:config_edit');
Route::get('/admin/config/ranks/add','RankController@create')->middleware('perm:config_edit');
Route::post('/admin/config/ranks/add','RankController@store')->middleware('perm:config_edit');
Route::get('/admin/config/ranks/{id}','RankController@show')->middleware('perm:config_edit');
Route::post('/admin/config/ranks/{id}','RankController@update')->middleware('perm:config_edit');
Route::get('/admin/config/jobs','JobController@index')->middleware('perm:config_edit');
/** Public page */
Route::get('/admin/public/edit/{config}', 'PublicController@edit');
Route::post('/admin/public/edit/{config}', 'PublicController@update');
Route::get('/admin/public/edit/{config}', 'PublicController@edit')->middleware('perm:config_edit');
Route::post('/admin/public/edit/{config}', 'PublicController@update')->middleware('perm:config_edit');
/** Picture */
Route::get('/admin/picture','PictureController@indexAdmin');
Route::get('/admin/picture/add','PictureController@create');
Route::post('/admin/picture/add','PictureController@store');
Route::get('/admin/picture/edit/{id}','PictureController@edit');
Route::post('/admin/picture/edit/{id}','PictureController@update');
Route::get('/admin/picture','PictureController@indexAdmin')->middleware('perm:picture_see');
Route::get('/admin/picture/add','PictureController@create')->middleware('perm:picture_add');
Route::post('/admin/picture/add','PictureController@store')->middleware('perm:picture_add');
Route::get('/admin/picture/edit/{id}','PictureController@edit')->middleware('perm:picture_edit');
Route::post('/admin/picture/edit/{id}','PictureController@update')->middleware('perm:picture_edit');
/** Inventory */
Route::get('/admin/inventory' , 'InventoryController@index');
Route::get('/admin/inventory/management','InventoryController@management');
Route::get('/admin/inventory' , 'InventoryController@index')->middleware('perm:inventory_see');
Route::get('/admin/inventory/management','InventoryController@management')->middleware('perm:inventory_edit');
/** Item Category */
Route::get('/admin/inventory/management/category','ItemCategoryController@index');
Route::get('/admin/inventory/management/category/add','ItemCategoryController@create');
Route::post('/admin/inventory/management/category/add','ItemCategoryController@store');
Route::get('/admin/inventory/management/category/edit/{id}','ItemCategoryController@edit');
Route::post('/admin/inventory/management/category/edit/{id}','ItemCategoryController@update');
Route::get('/admin/inventory/management/category','ItemCategoryController@index')->middleware('perm:inventory_edit');
Route::get('/admin/inventory/management/category/add','ItemCategoryController@create')->middleware('perm:inventory_add');
Route::post('/admin/inventory/management/category/add','ItemCategoryController@store')->middleware('perm:inventory_add');
Route::get('/admin/inventory/management/category/edit/{id}','ItemCategoryController@edit')->middleware('perm:inventory_edit');
Route::post('/admin/inventory/management/category/edit/{id}','ItemCategoryController@update')->middleware('perm:inventory_edit');
/** News */
Route::get('/admin/news','NewsController@indexAdmin');
Route::get('/admin/news/add','NewsController@create');
Route::post('/admin/news/add','NewsController@store');
Route::get('/admin/news/edit/{id}','NewsController@edit');
Route::post('/admin/news/edit/{id}','NewsController@update');
Route::get('/admin/news','NewsController@indexAdmin')->middleware('perm:news_see');
Route::get('/admin/news/add','NewsController@create')->middleware('perm:news_add');
Route::post('/admin/news/add','NewsController@store')->middleware('perm:news_add');
Route::get('/admin/news/edit/{id}','NewsController@edit')->middleware('perm:news_edit');
Route::post('/admin/news/edit/{id}','NewsController@update')->middleware('perm:news_edit');
/** Articles */
Route::get('/admin/article','ArticleController@index');
Route::get('/admin/article/activity/edit/{id}','ArticleController@editActivity');
Route::post('/admin/article/activity/edit/{id}','ArticleController@updateActivity');
Route::get('/admin/article/activity/picture/{id}','ArticleController@pictureActivity');
Route::get('/admin/article/activity/picture/{id}/add','ArticleController@pictureActivityCreate');
Route::post('/admin/article/activity/picture/{id}/add','ArticleController@pictureActivityStore');
Route::get('/admin/article','ArticleController@index')->middleware('perm:article_see');
Route::get('/admin/article/activity/edit/{id}','ArticleController@editActivity')->middleware('perm:article_edit');
Route::post('/admin/article/activity/edit/{id}','ArticleController@updateActivity')->middleware('perm:article_edit');
Route::get('/admin/article/activity/picture/{id}','ArticleController@pictureActivity')->middleware('perm:article_edit');
Route::get('/admin/article/activity/picture/{id}/add','ArticleController@pictureActivityCreate')->middleware('perm:article_edit');
Route::post('/admin/article/activity/picture/{id}/add','ArticleController@pictureActivityStore')->middleware('perm:article_edit');
/** Booking */
Route::get('/admin/booking','BookingController@index');
Route::get('/admin/booking/{id}','BookingController@show');
Route::get('/admin/booking/{type}/{id}','BookingController@index');
Route::get('/admin/booking/{type}/{id}/add','BookingController@create');
Route::post('/admin/booking/{type}/{id}/add','BookingController@store');
Route::get('/admin/inventory/booking' , 'InventoryController@booking');
Route::post('/admin/booking/edit','BookingController@update');
Route::get('/admin/booking','BookingController@index')->middleware('perm:booking_see');
Route::get('/admin/booking/{id}','BookingController@show')->middleware('perm:booking_see');
Route::get('/admin/booking/{type}/{id}','BookingController@index')->middleware('perm:booking_see');
Route::get('/admin/booking/{type}/{id}/add','BookingController@create')->middleware('perm:booking_add');
Route::post('/admin/booking/{type}/{id}/add','BookingController@store')->middleware('perm:booking_add');
Route::get('/admin/inventory/booking' , 'InventoryController@booking')->middleware('perm:inventory_see');
Route::post('/admin/booking/edit','BookingController@update')->middleware('perm:booking_see')->middleware('perm:booking_edit');
/** Item */
Route::get('/admin/item/add' , 'ItemController@create');
Route::get('/admin/item/edit/{id}' , 'ItemController@edit');
Route::post('/admin/item/add' , 'ItemController@store');
Route::post('/admin/item/edit/{id}' , 'ItemController@update');
/** Local */
Route::get('/admin/config/local' , 'LocalController@index');
Route::get('/admin/item/add' , 'ItemController@create')->middleware('perm:inventory_add');
Route::get('/admin/item/edit/{id}' , 'ItemController@edit')->middleware('perm:inventory_edit');
Route::post('/admin/item/add' , 'ItemController@store')->middleware('perm:inventory_add');
Route::post('/admin/item/edit/{id}' , 'ItemController@update')->middleware('perm:inventory_edit');
/** Notification */
Route::get('/admin/notication/mark','UserController@notificationmarkALL');
@@ -161,31 +159,4 @@ Route::middleware(['auth','admin'])->group(function () {
Route::get('/admin/guide','FilesController@guide');
});
Route::middleware(['auth','staff'])->group(function () {
/** Espace Cadet cadre */
Route::get('/ecc','ECCController@index');
Route::get('/ecc/messages','ECCController@messages');
Route::get('/ecc/messages/{page}','ECCController@messages');
Route::get('/ecc/message/{id}','ECCController@message');
Route::get('/ecc/guide','ECCController@guide');
Route::get('/ecc/update','ECCController@update');
Route::get('/ecc/calendar','ECCController@calendar');
Route::get('/ecc/calendar/{date}','ECCController@calendar_date');
Route::get('/ecc/inventory/{id}/{niveau}/{periode}' , 'ECCController@booking');
Route::post('/ecc/inventory/add/{id}/{periode}/{niveau}' , 'ECCController@booking_add');
Route::post('/ecc/inventory/remove/{id}/{periode}/{niveau}' , 'ECCController@booking_remove');
Route::get('/ecc/list','ECCController@list');
Route::get('/ecc/files','ECCController@files');
Route::get('/ecc/settings','ECCController@settings');
Route::get('/ecc/settings/password' , 'ECCController@UserPassword');
Route::post('/ecc/settings/edit/password' , 'UserController@editUserPassword');
Route::get('/ecc/settings/avatar', 'ECCController@UserAvatar');
Route::get('/ecc/settings/edit/avatar/{id}' , 'UserController@editUserAvatar');
Route::get('/ecc/settings/adress', 'ECCController@UserAdress');
Route::post('/ecc/settings/edit/adress', 'UserController@editUserAdress');
});