mirror of
https://gitlab.com/TheGamecraft/c-cms.git
synced 2026-04-21 10:49:10 -04:00
File systeme V3
This commit is contained in:
@@ -78,9 +78,4 @@ class AdminController extends Controller
|
|||||||
return view('admin.status.index',['alerts' => $alerts]);
|
return view('admin.status.index',['alerts' => $alerts]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function instruction()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,43 +140,9 @@ class ConfigController extends Controller
|
|||||||
|
|
||||||
public function editfilesConfig()
|
public function editfilesConfig()
|
||||||
{
|
{
|
||||||
$configList = [
|
if (\request()->file('nominativeList') != null)
|
||||||
'cadet_list',
|
|
||||||
];
|
|
||||||
|
|
||||||
$configListEncrypt = [
|
|
||||||
'GOOGLE_DRIVE_CLIENT_ID',
|
|
||||||
'GOOGLE_DRIVE_CLIENT_SECRET',
|
|
||||||
'GOOGLE_DRIVE_REFRESH_TOKEN',
|
|
||||||
'GOOGLE_DRIVE_FOLDER_ID'
|
|
||||||
];
|
|
||||||
|
|
||||||
if (\request('is_active') == 'on')
|
|
||||||
{
|
{
|
||||||
$config = \App\Config::find('is_Google_Drive_enabled');
|
\Storage::putFileAs('Systeme/Fichier',\request()->file('nominativeList'),'ListeNominative.pdf');
|
||||||
$config->data = ['true'];
|
|
||||||
$config->save();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$config = \App\Config::find('is_Google_Drive_enabled');
|
|
||||||
$config->data = ['false'];
|
|
||||||
$config->save();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
foreach ($configList as $configName)
|
|
||||||
{
|
|
||||||
$config = \App\Config::find($configName);
|
|
||||||
$config->data = [\request($configName)];
|
|
||||||
$config->save();
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($configListEncrypt as $configName)
|
|
||||||
{
|
|
||||||
$config = \App\Config::find($configName);
|
|
||||||
$config->data = [\Crypt::encryptString(\request($configName))];
|
|
||||||
$config->save();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clog('edit','success','a modifié la configuration des fichiers');
|
clog('edit','success','a modifié la configuration des fichiers');
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class CourseController extends Controller
|
|||||||
{
|
{
|
||||||
$name = $user->fullname();
|
$name = $user->fullname();
|
||||||
}
|
}
|
||||||
return view('admin.course.show',['course' => $course,'username' => $name,'lessonPlanDir' => \App\GoogleDriveFile::findByPath('.Systeme/.Fichier/.PlanDeCours')->id]);
|
return view('admin.course.show',['course' => $course,'username' => $name]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -136,31 +136,21 @@ class CourseController extends Controller
|
|||||||
public function updateLessonPlan(Request $request, $id)
|
public function updateLessonPlan(Request $request, $id)
|
||||||
{
|
{
|
||||||
$course = Course::findOrFail($id);
|
$course = Course::findOrFail($id);
|
||||||
$name = $course->ocom.'_'.$course->instructor().'_'.$course->event->date_begin.'_'.'v'.date('c').'.'.\request()->file('file')->getClientOriginalExtension();
|
$name = $course->ocom.'_'.$course->instructor().'_'.date('c',strtotime($course->event->date_begin)).'.'.\request()->file('file')->getClientOriginalExtension();
|
||||||
$name = urlencode($name);
|
$dirID = 'Systeme/Fichier/PlanDeCours';
|
||||||
$dirID = \App\GoogleDriveFile::findByPath('.Systeme/.Fichier/.PlanDeCours')->id;
|
|
||||||
|
|
||||||
if ($course->lessonPlan != null)
|
if ($course->lessonPlan != null)
|
||||||
{
|
{
|
||||||
$lessonPlan = $course->lessonPlan;
|
$lessonPlan = $course->lessonPlan;
|
||||||
$contents = collect(\Storage::cloud()->listContents($dirID, false));
|
|
||||||
|
|
||||||
$file = $contents
|
|
||||||
->where('type', '=', 'file')
|
|
||||||
->where('filename', '=', pathinfo($course->lessonPlan->file, PATHINFO_FILENAME))
|
|
||||||
->where('extension', '=', pathinfo($course->lessonPlan->file, PATHINFO_EXTENSION))
|
|
||||||
->first(); // there can be duplicate file names!
|
|
||||||
\Storage::cloud()->delete($file['path']);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$lessonPlan = new \App\LessonPlan();
|
$lessonPlan = new \App\LessonPlan();
|
||||||
}
|
}
|
||||||
\Storage::cloud()->putFileAs($dirID,\request()->file('file'),$name);
|
\Storage::putFileAs($dirID,\request()->file('file'),$name);
|
||||||
$metadata = \Storage::cloud()->getMetadata($dirID.'/'.$name);
|
|
||||||
|
|
||||||
$lessonPlan->user_id = \Auth::user()->id;
|
$lessonPlan->user_id = \Auth::user()->id;
|
||||||
$lessonPlan->file = $metadata['name'];
|
$lessonPlan->file = $name;
|
||||||
$lessonPlan->course_id = $course->id;
|
$lessonPlan->course_id = $course->id;
|
||||||
$lessonPlan->desc = "";
|
$lessonPlan->desc = "";
|
||||||
$lessonPlan->comment = "";
|
$lessonPlan->comment = "";
|
||||||
@@ -169,6 +159,18 @@ class CourseController extends Controller
|
|||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function downloadLessonPlan($name)
|
||||||
|
{
|
||||||
|
if (\Storage::exists('Systeme/Fichier/PlanDeCours/'.$name))
|
||||||
|
{
|
||||||
|
return \Storage::download('Systeme/Fichier/PlanDeCours/'.$name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
abort(404);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the specified resource from storage.
|
* Remove the specified resource from storage.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
|
|||||||
|
|
||||||
use App\GoogleDriveFile;
|
use App\GoogleDriveFile;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use function Symfony\Component\VarDumper\Dumper\esc;
|
||||||
|
|
||||||
class FilesController extends Controller
|
class FilesController extends Controller
|
||||||
{
|
{
|
||||||
@@ -41,21 +42,83 @@ class FilesController extends Controller
|
|||||||
/**
|
/**
|
||||||
* Display the specified resource.
|
* Display the specified resource.
|
||||||
*
|
*
|
||||||
* @param string $id
|
* @param $path
|
||||||
* @return void
|
* @return \Symfony\Component\HttpFoundation\StreamedResponse
|
||||||
*/
|
*/
|
||||||
public function show($path)
|
public function show(String $path)
|
||||||
{
|
{
|
||||||
$file_rules = \DB::table('acl_rules')->where('path','=',$path)->get()->all();
|
$all_rules = collect(\DB::table('acl_rules')->get()->all());
|
||||||
if ($file_rules != []) {
|
|
||||||
dd($file_rules);
|
|
||||||
}
|
|
||||||
dd(dirname($path));
|
|
||||||
$path_rules = \DB::table('acl_rules')->where('path','=',dirname($path))->get()->all();
|
|
||||||
if ($path_rules != []) {
|
|
||||||
|
|
||||||
|
foreach ($all_rules as $rule)
|
||||||
|
{
|
||||||
|
if ($rule->path == "*")
|
||||||
|
{
|
||||||
|
if (\Auth::check())
|
||||||
|
{
|
||||||
|
if (\Auth::user()->checkACLRules($rule) > 0)
|
||||||
|
{
|
||||||
|
if (\Storage::exists($path))
|
||||||
|
{
|
||||||
|
return \Storage::download($path);
|
||||||
}
|
}
|
||||||
return abort(404);
|
else
|
||||||
|
{
|
||||||
|
abort(404);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$path_array = explode('/',$path);
|
||||||
|
$checkedPath = $path_array[0];
|
||||||
|
unset($path_array[0]);
|
||||||
|
$path_array = array_values($path_array);
|
||||||
|
|
||||||
|
while ($checkedPath != $path)
|
||||||
|
{
|
||||||
|
$rules = $all_rules->where('path','=',$checkedPath.'/*');
|
||||||
|
if ($rules->isNotEmpty())
|
||||||
|
{
|
||||||
|
$access_level = 0;
|
||||||
|
foreach ($rules as $r)
|
||||||
|
{
|
||||||
|
if (\Auth::check())
|
||||||
|
{
|
||||||
|
$temp_access_level = \Auth::user()->checkACLRules($r);
|
||||||
|
if ($temp_access_level > $access_level)
|
||||||
|
{
|
||||||
|
$access_level = $temp_access_level;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($r->user_id == '*')
|
||||||
|
{
|
||||||
|
if ($r->access > $access_level)
|
||||||
|
{
|
||||||
|
$access_level = $r->access;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($access_level > 0)
|
||||||
|
{
|
||||||
|
if (\Storage::exists($path))
|
||||||
|
{
|
||||||
|
return \Storage::download($path);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
abort(404);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$checkedPath = $checkedPath.'/'.$path_array[0];
|
||||||
|
unset($path_array[0]);
|
||||||
|
$path_array = array_values($path_array);
|
||||||
|
}
|
||||||
|
abort(403);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -94,67 +157,63 @@ class FilesController extends Controller
|
|||||||
|
|
||||||
public function guide()
|
public function guide()
|
||||||
{
|
{
|
||||||
if (\App\GoogleDriveFile::checkConfig())
|
return redirect('/admin/files?leftPath=Prive/Staff/Guide');
|
||||||
{
|
|
||||||
$dirID = \App\GoogleDriveFile::findByPath('.Privé/.Staff/.Guide');
|
|
||||||
$dir = collect(\Storage::cloud()->listContents($dirID->id,false))->sortBy('name');
|
|
||||||
return view('admin.files.guide',['dir' => $dir]);
|
|
||||||
}
|
|
||||||
return redirect('/admin')->with('error','Google Drive n\'est pas configuré');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function instruction()
|
public function instruction()
|
||||||
{
|
{
|
||||||
if (\App\GoogleDriveFile::checkConfig())
|
return redirect('/admin/files?leftPath=Prive/Staff/Instruction');
|
||||||
{
|
|
||||||
return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.Staff/.Instruction')->first()->id, 'mode' => 'folder']);
|
|
||||||
}
|
|
||||||
return redirect('/admin')->with('error','Google Drive n\'est pas configuré');
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function cadet()
|
public function cadet()
|
||||||
{
|
{
|
||||||
if (!\App\GoogleDriveFile::checkConfig())
|
return redirect('/admin/files?leftPath=Prive/Cadet');
|
||||||
{
|
|
||||||
return redirect('/admin')->with('error','Google Drive n\'est pas configuré');
|
|
||||||
}
|
|
||||||
return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.Cadet')->first()->id, 'mode' => 'folder']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function staff()
|
public function staff()
|
||||||
{
|
{
|
||||||
if (!\App\GoogleDriveFile::checkConfig())
|
return redirect('/admin/files?leftPath=Prive/Staff');
|
||||||
{
|
|
||||||
return redirect('/admin')->with('error','Google Drive n\'est pas configuré');
|
|
||||||
}
|
|
||||||
return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.Staff')->first()->id, 'mode' => 'folder']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function etamas()
|
public function etamas()
|
||||||
{
|
{
|
||||||
if (!\App\GoogleDriveFile::checkConfig())
|
return redirect('/admin/files?leftPath=Prive/ETAMAS');
|
||||||
{
|
|
||||||
return redirect('/admin')->with('error','Google Drive n\'est pas configuré');
|
|
||||||
}
|
|
||||||
return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.ETAMAS')->first()->id, 'mode' => 'folder']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function officier()
|
public function officier()
|
||||||
{
|
{
|
||||||
if (!\App\GoogleDriveFile::checkConfig())
|
return redirect('/admin/files?leftPath=Prive/Officier');
|
||||||
{
|
|
||||||
return redirect('/admin')->with('error','Google Drive n\'est pas configuré');
|
|
||||||
}
|
|
||||||
return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.Officier')->first()->id, 'mode' => 'folder']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function publique()
|
public function publique()
|
||||||
{
|
{
|
||||||
if (!\App\GoogleDriveFile::checkConfig())
|
return redirect('/admin/files?leftPath=Publique');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function show_nominativeList()
|
||||||
{
|
{
|
||||||
return redirect('/admin')->with('error','Google Drive n\'est pas configuré');
|
return view('admin.files.list.index');
|
||||||
}
|
}
|
||||||
return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Publique')->first()->id, 'mode' => 'folder']);
|
|
||||||
|
public function download_nominativeList()
|
||||||
|
{
|
||||||
|
if (\Storage::exists('/Systeme/Fichier/ListeNominative.pdf'))
|
||||||
|
{
|
||||||
|
return \Storage::download('/Systeme/Fichier/ListeNominative.pdf');
|
||||||
|
}
|
||||||
|
return view('admin.files.list.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function edit_nominativeList()
|
||||||
|
{
|
||||||
|
return view('admin.files.list.edit');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update_nominativeList()
|
||||||
|
{
|
||||||
|
\Storage::putFileAs('Systeme/Fichier',\request()->file('nominativeList'),'ListeNominative.pdf');
|
||||||
|
|
||||||
|
clog('edit','success','a modifié la liste nominative');
|
||||||
|
return redirect('/admin/nominativelist')->with('success','Modification sauvegarder avec succès !');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,8 @@ class JobController extends Controller
|
|||||||
$job->permissions = json_encode($tpermission);
|
$job->permissions = json_encode($tpermission);
|
||||||
$job->save();
|
$job->save();
|
||||||
|
|
||||||
|
$job->updateACLRules();
|
||||||
|
|
||||||
clog('add','success','Poste ajouté avec succès');
|
clog('add','success','Poste ajouté avec succès');
|
||||||
return redirect('/admin/config/jobs')->with('success','Poste ajouté avec succès');
|
return redirect('/admin/config/jobs')->with('success','Poste ajouté avec succès');
|
||||||
}
|
}
|
||||||
@@ -112,6 +114,8 @@ class JobController extends Controller
|
|||||||
$job->permissions = json_encode($tpermission);
|
$job->permissions = json_encode($tpermission);
|
||||||
$job->save();
|
$job->save();
|
||||||
|
|
||||||
|
$job->updateACLRules();
|
||||||
|
|
||||||
clog('add','success','Poste modifié avec succès');
|
clog('add','success','Poste modifié avec succès');
|
||||||
return redirect('/admin/config/jobs')->with('success','Poste modifié avec succès');
|
return redirect('/admin/config/jobs')->with('success','Poste modifié avec succès');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,8 @@ class RankController extends Controller
|
|||||||
$r->permissions = json_encode($tpermission);
|
$r->permissions = json_encode($tpermission);
|
||||||
$r->save();
|
$r->save();
|
||||||
|
|
||||||
|
$r->updateACLRules();
|
||||||
|
|
||||||
clog('add','success','Grade ajouté avec succès');
|
clog('add','success','Grade ajouté avec succès');
|
||||||
return redirect('/admin/config/ranks')->with('success','Grade ajouté avec succès');
|
return redirect('/admin/config/ranks')->with('success','Grade ajouté avec succès');
|
||||||
}
|
}
|
||||||
@@ -99,10 +101,11 @@ class RankController extends Controller
|
|||||||
$tkey = $perm->ckey;
|
$tkey = $perm->ckey;
|
||||||
$tpermission[$tkey] = $request->$tkey;
|
$tpermission[$tkey] = $request->$tkey;
|
||||||
}
|
}
|
||||||
|
|
||||||
$r->permissions = json_encode($tpermission);
|
$r->permissions = json_encode($tpermission);
|
||||||
$r->save();
|
$r->save();
|
||||||
|
|
||||||
|
$r->updateACLRules();
|
||||||
|
|
||||||
clog('edit','success','Grade modifié avec succès');
|
clog('edit','success','Grade modifié avec succès');
|
||||||
return redirect('/admin/config/ranks')->with('success','Grade modifié avec succès');
|
return redirect('/admin/config/ranks')->with('success','Grade modifié avec succès');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,4 +48,9 @@ class Job extends Model
|
|||||||
{
|
{
|
||||||
return $this->permission($perm);
|
return $this->permission($perm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateACLRules()
|
||||||
|
{
|
||||||
|
\App\Permission::updateACLRules($this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,4 +116,11 @@ class OCOM extends Model
|
|||||||
{
|
{
|
||||||
return $this->nbPeriode * 30;
|
return $this->nbPeriode * 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function niveau()
|
||||||
|
{
|
||||||
|
$niveau = -1;
|
||||||
|
preg_match('/[^0\D]/',$this->oren,$niveau);
|
||||||
|
return $niveau[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ namespace App;
|
|||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Arr;
|
use Illuminate\Support\Arr;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* App\Permission
|
* App\Permission
|
||||||
@@ -15,6 +16,150 @@ use Illuminate\Support\Arr;
|
|||||||
*/
|
*/
|
||||||
class Permission extends Model
|
class Permission extends Model
|
||||||
{
|
{
|
||||||
|
const ACLRULES = [
|
||||||
|
'files_cadets' => [
|
||||||
|
'_see' => [
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Cadet',
|
||||||
|
'access' => '1'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Cadet/*',
|
||||||
|
'access' => '1'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'_edit' => [
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Cadet',
|
||||||
|
'access' => '2'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Cadet/*',
|
||||||
|
'access' => '2'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'files_staff' => [
|
||||||
|
'_see' => [
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Staff',
|
||||||
|
'access' => '1'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Staff/*',
|
||||||
|
'access' => '1'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'_edit' => [
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Staff',
|
||||||
|
'access' => '2'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Staff/*',
|
||||||
|
'access' => '2'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'files_etamas' => [
|
||||||
|
'_see' => [
|
||||||
|
[
|
||||||
|
'path' => 'Prive/ETAMAS',
|
||||||
|
'access' => '1'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Prive/ETAMAS/*',
|
||||||
|
'access' => '1'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'_edit' => [
|
||||||
|
[
|
||||||
|
'path' => 'Prive/ETAMAS',
|
||||||
|
'access' => '2'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Prive/ETAMAS/*',
|
||||||
|
'access' => '2'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'files_officier' => [
|
||||||
|
'_see' => [
|
||||||
|
[
|
||||||
|
'path' => 'Prive',
|
||||||
|
'access' => '1'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Officier',
|
||||||
|
'access' => '1'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Officier/*',
|
||||||
|
'access' => '1'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'_edit' => [
|
||||||
|
[
|
||||||
|
'path' => 'Prive',
|
||||||
|
'access' => '1'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Officier',
|
||||||
|
'access' => '2'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Officier/*',
|
||||||
|
'access' => '2'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'files_systeme' => [
|
||||||
|
'_see' => [
|
||||||
|
[
|
||||||
|
'path' => 'Systeme',
|
||||||
|
'access' => '1'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Systeme/*',
|
||||||
|
'access' => '1'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'_edit' => [
|
||||||
|
// Vide
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'files_instruction' => [
|
||||||
|
'_see' => [
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Staff/Instruction',
|
||||||
|
'access' => '1'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Staff/Instruction/*',
|
||||||
|
'access' => '1'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'_edit' => [
|
||||||
|
// Vide
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'instruction_guide' => [
|
||||||
|
'_see' => [
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Staff/Guide',
|
||||||
|
'access' => '1'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'path' => 'Prive/Staff/Guide/*',
|
||||||
|
'access' => '1'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'_edit' => [
|
||||||
|
// Vide
|
||||||
|
]
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
const PERMISSIONS = [
|
const PERMISSIONS = [
|
||||||
'Nouvelle' => [
|
'Nouvelle' => [
|
||||||
'news_see' => [
|
'news_see' => [
|
||||||
@@ -149,6 +294,13 @@ class Permission extends Model
|
|||||||
'icon' => 'fa-eye',
|
'icon' => 'fa-eye',
|
||||||
'valeur' => 0
|
'valeur' => 0
|
||||||
],
|
],
|
||||||
|
'config_edit_files' => [
|
||||||
|
'ckey' => 'config_edit_files',
|
||||||
|
'communName' => 'Modifier les configurations de fichier',
|
||||||
|
'desc' => 'L\'utilisateur peut-il modifier les configurations de fichier',
|
||||||
|
'icon' => 'fa-eye',
|
||||||
|
'valeur' => 0
|
||||||
|
],
|
||||||
'config_edit_customization' => [
|
'config_edit_customization' => [
|
||||||
'ckey' => 'config_edit_customization',
|
'ckey' => 'config_edit_customization',
|
||||||
'communName' => 'Modifier les configurations de l\'apparence du site',
|
'communName' => 'Modifier les configurations de l\'apparence du site',
|
||||||
@@ -253,6 +405,13 @@ class Permission extends Model
|
|||||||
'icon' => 'fa-eye',
|
'icon' => 'fa-eye',
|
||||||
'valeur' => 0
|
'valeur' => 0
|
||||||
],
|
],
|
||||||
|
'cadet_list_edit' => [
|
||||||
|
'ckey' => 'cadet_list_edit',
|
||||||
|
'communName' => 'Modifier la liste nominative',
|
||||||
|
'desc' => 'L\'utilisateur peut-il modifier la liste nominative',
|
||||||
|
'icon' => 'fa-eye',
|
||||||
|
'valeur' => 0
|
||||||
|
],
|
||||||
],
|
],
|
||||||
'Horaire' => [
|
'Horaire' => [
|
||||||
'schedule_see' => [
|
'schedule_see' => [
|
||||||
@@ -345,23 +504,150 @@ class Permission extends Model
|
|||||||
],
|
],
|
||||||
],
|
],
|
||||||
'Fichiers' => [
|
'Fichiers' => [
|
||||||
'file_see' => [
|
'files_cadets_see' => [
|
||||||
'ckey' => 'file_see',
|
'ckey' => 'files_cadets_see',
|
||||||
'communName' => 'Voir les fichiers publiques',
|
'communName' => 'Consulter les fichiers des cadets',
|
||||||
'desc' => 'L\'utilisateur peut-il consulter les fichiers publiques',
|
'desc' => 'L\'utilisateur peut-il consulter les fichiers des cadets',
|
||||||
'icon' => 'fa-eye',
|
'icon' => 'fa-eye',
|
||||||
'valeur' => 0
|
'valeur' => 0
|
||||||
],
|
],
|
||||||
'drive_see' => [
|
'files_cadets_edit' => [
|
||||||
'ckey' => 'drive_see',
|
'ckey' => 'files_cadets_edit',
|
||||||
'communName' => 'Voir l\'explorateur de fichier',
|
'communName' => 'Modifier les fichiers des cadets',
|
||||||
'desc' => 'L\'utilisateur peut-il consulter l\'explorateur de fichier',
|
'desc' => 'L\'utilisateur peut-il modifier les fichiers des cadets',
|
||||||
|
'icon' => 'fa-eye',
|
||||||
|
'valeur' => 0
|
||||||
|
],
|
||||||
|
'files_staff_see' => [
|
||||||
|
'ckey' => 'files_staff_see',
|
||||||
|
'communName' => 'Consulter les fichiers des staffs',
|
||||||
|
'desc' => 'L\'utilisateur peut-il consulter les fichiers des staffs',
|
||||||
|
'icon' => 'fa-eye',
|
||||||
|
'valeur' => 0
|
||||||
|
],
|
||||||
|
'files_staff_edit' => [
|
||||||
|
'ckey' => 'files_staff_edit',
|
||||||
|
'communName' => 'Modifier les fichiers des staffs',
|
||||||
|
'desc' => 'L\'utilisateur peut-il modifier les fichiers des staffs',
|
||||||
|
'icon' => 'fa-eye',
|
||||||
|
'valeur' => 0
|
||||||
|
],
|
||||||
|
'files_etamas_see' => [
|
||||||
|
'ckey' => 'files_etamas_see',
|
||||||
|
'communName' => 'Consulter les fichiers de l\'ETAMAS',
|
||||||
|
'desc' => 'L\'utilisateur peut-il consulter les fichiers de l\'ETAMAS',
|
||||||
|
'icon' => 'fa-eye',
|
||||||
|
'valeur' => 0
|
||||||
|
],
|
||||||
|
'files_etamas_edit' => [
|
||||||
|
'ckey' => 'files_etamas_edit',
|
||||||
|
'communName' => 'Mo
|
||||||
|
difier les fichiers de l\'ETAMAS',
|
||||||
|
'desc' => 'L\'utilisateur peut-il modifier les fichiers de l\'ETAMAS',
|
||||||
|
'icon' => 'fa-eye',
|
||||||
|
'valeur' => 0
|
||||||
|
],
|
||||||
|
'files_officier_see' => [
|
||||||
|
'ckey' => 'files_officier_see',
|
||||||
|
'communName' => 'Consulter les fichiers des officiers',
|
||||||
|
'desc' => 'L\'utilisateur peut-il consulter les fichiers des officiers',
|
||||||
|
'icon' => 'fa-eye',
|
||||||
|
'valeur' => 0
|
||||||
|
],
|
||||||
|
'files_officier_edit' => [
|
||||||
|
'ckey' => 'files_officier_edit',
|
||||||
|
'communName' => 'Modifier les fichiers des officiers',
|
||||||
|
'desc' => 'L\'utilisateur peut-il modifier les fichiers des officiers',
|
||||||
|
'icon' => 'fa-eye',
|
||||||
|
'valeur' => 0
|
||||||
|
],
|
||||||
|
'files_systeme_see' => [
|
||||||
|
'ckey' => 'files_systeme_see',
|
||||||
|
'communName' => 'Voir les fichiers systemes',
|
||||||
|
'desc' => 'L\'utilisateur peut-il consulter les fichiers systemes',
|
||||||
|
'icon' => 'fa-eye',
|
||||||
|
'valeur' => 0
|
||||||
|
],
|
||||||
|
'files_instruction_see' => [
|
||||||
|
'ckey' => 'files_instruction_see',
|
||||||
|
'communName' => 'Voir les fichiers de l\'instruction',
|
||||||
|
'desc' => 'L\'utilisateur peut-il consulter les fichiers de l\'instruction',
|
||||||
'icon' => 'fa-eye',
|
'icon' => 'fa-eye',
|
||||||
'valeur' => 0
|
'valeur' => 0
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public static function updateACLRules($o)
|
||||||
|
{
|
||||||
|
$user_id = '0';
|
||||||
|
$rank_id = '0';
|
||||||
|
$job_id = '0';
|
||||||
|
|
||||||
|
switch ($o->table) {
|
||||||
|
case 'users':
|
||||||
|
$user_id = $o->id;
|
||||||
|
break;
|
||||||
|
case 'ranks':
|
||||||
|
$rank_id = $o->id;
|
||||||
|
break;
|
||||||
|
case 'jobs':
|
||||||
|
$job_id = $o->id;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (self::ACLRULES as $key => $rule)
|
||||||
|
{
|
||||||
|
if ($o->p($key.'_see') == 1) {
|
||||||
|
if ($o->p($key.'_edit') == 1) {
|
||||||
|
foreach ($rule['_edit'] as $acl) {
|
||||||
|
self::updateOrInsertACLRules($user_id,$rank_id,$job_id,'storage',$acl['path'],$acl['access']);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
foreach ($rule['_see'] as $acl) {
|
||||||
|
self::updateOrInsertACLRules($user_id,$rank_id,$job_id,'storage',$acl['path'],$acl['access']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
foreach ($rule['_see'] as $acl) {
|
||||||
|
self::removeACLRules($user_id,$rank_id,$job_id,'storage',$acl['path']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function removeACLRules($userId,$rankId,$jobId,$disk,$path)
|
||||||
|
{
|
||||||
|
$rules = DB::table('acl_rules')->where([
|
||||||
|
['user_id',$userId],
|
||||||
|
['rank_id',$rankId],
|
||||||
|
['job_id',$jobId],
|
||||||
|
['disk',$disk],
|
||||||
|
['path',$path]
|
||||||
|
]);
|
||||||
|
$rules->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function updateOrInsertACLRules($userId,$rankId,$jobId,$disk,$path,$access)
|
||||||
|
{
|
||||||
|
DB::table('acl_rules')->updateOrInsert(
|
||||||
|
['user_id' => $userId, 'rank_id' => $rankId, 'job_id' => $jobId, 'disk' => $disk, 'path' => $path],
|
||||||
|
['access' => $access]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function addACLRules($userId,$rankId,$jobId,$disk,$path,$access)
|
||||||
|
{
|
||||||
|
DB::table('acl_rules')->insertOrIgnore([
|
||||||
|
'user_id' => $userId,
|
||||||
|
'rank_id' => $rankId,
|
||||||
|
'job_id' => $jobId,
|
||||||
|
'disk' => $disk,
|
||||||
|
'path' => $path,
|
||||||
|
'access' => $access
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
public static function all($value = null,$columns = null)
|
public static function all($value = null,$columns = null)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -50,4 +50,9 @@ class Rank extends Model
|
|||||||
{
|
{
|
||||||
return $this->permission($perm);
|
return $this->permission($perm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateACLRules()
|
||||||
|
{
|
||||||
|
\App\Permission::updateACLRules($this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
26
app/User.php
26
app/User.php
@@ -387,4 +387,30 @@ class User extends Authenticatable
|
|||||||
return Carbon::parse($val->created_at)->format('Y-m-d');
|
return Carbon::parse($val->created_at)->format('Y-m-d');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function checkACLRules($rule)
|
||||||
|
{
|
||||||
|
if ($rule->user_id == $this->id || $rule->user_id == '*')
|
||||||
|
{
|
||||||
|
return $rule->access;
|
||||||
|
}
|
||||||
|
if ($rule->job_id == $this->job_id || $rule->job_id == '*')
|
||||||
|
{
|
||||||
|
return $rule->access;
|
||||||
|
}
|
||||||
|
if ($rule->rank_id == $this->rank_id || $rule->rank_id == '*')
|
||||||
|
{
|
||||||
|
return $rule->access;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function checkACLRulesVisitor($rule)
|
||||||
|
{
|
||||||
|
if ($rule->user_id == '*')
|
||||||
|
{
|
||||||
|
return $rule->access;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
1978
composer.lock
generated
1978
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -1,20 +1,20 @@
|
|||||||
mode: absorb
|
mode: increment
|
||||||
blade-directive: version
|
blade-directive: version
|
||||||
current:
|
current:
|
||||||
label: ''
|
label: ''
|
||||||
major: 3
|
major: 3
|
||||||
minor: 2
|
minor: 2
|
||||||
patch: 5
|
patch: 6
|
||||||
prerelease: 23-gae00c9e7
|
prerelease: ''
|
||||||
buildmetadata: ''
|
buildmetadata: ''
|
||||||
commit: 41845
|
commit: '41847'
|
||||||
timestamp:
|
timestamp:
|
||||||
year: 2020
|
year: 2020
|
||||||
month: 6
|
month: 10
|
||||||
day: 21
|
day: 13
|
||||||
hour: 18
|
hour: 14
|
||||||
minute: 44
|
minute: 50
|
||||||
second: 55
|
second: 31
|
||||||
timezone: America/New_York
|
timezone: America/New_York
|
||||||
commit:
|
commit:
|
||||||
mode: git-local
|
mode: git-local
|
||||||
@@ -44,10 +44,10 @@ format:
|
|||||||
prerelease: '{$prerelease}'
|
prerelease: '{$prerelease}'
|
||||||
buildmetadata: '{$buildmetadata}'
|
buildmetadata: '{$buildmetadata}'
|
||||||
commit: '{$commit}'
|
commit: '{$commit}'
|
||||||
version: 'v {$major}.{$minor}.{$patch} (commit {$commit})'
|
version: 'v {$major}.{$minor}.{$patch}'
|
||||||
version-only: 'version {$major}.{$minor}.{$patch}'
|
version-only: 'version {$major}.{$minor}.{$patch}'
|
||||||
full: '{$version-only}[.?={$prerelease}][+?={$buildmetadata}] (commit {$commit})'
|
full: '{$version-only}[.?={$prerelease}][+?={$buildmetadata}] (commit {$commit})'
|
||||||
compact: 'v{$major}.{$minor}.{$patch}-{$commit}'
|
compact: 'v{$major}.{$minor}.{$patch}'
|
||||||
timestamp-year: '{$timestamp.year}'
|
timestamp-year: '{$timestamp.year}'
|
||||||
timestamp-month: '{$timestamp.month}'
|
timestamp-month: '{$timestamp.month}'
|
||||||
timestamp-day: '{$timestamp.day}'
|
timestamp-day: '{$timestamp.day}'
|
||||||
|
|||||||
@@ -232,26 +232,6 @@ class ConfigsTableSeeder extends Seeder
|
|||||||
'state' => 0,
|
'state' => 0,
|
||||||
'data' => '["#"]'
|
'data' => '["#"]'
|
||||||
],
|
],
|
||||||
[
|
|
||||||
'name' => 'GOOGLE_DRIVE_CLIENT_ID',
|
|
||||||
'state' => 0,
|
|
||||||
'data' => '["'.\Crypt::encryptString('').'"]'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'GOOGLE_DRIVE_CLIENT_SECRET',
|
|
||||||
'state' => 0,
|
|
||||||
'data' => '["'.\Crypt::encryptString('').'"]'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'GOOGLE_DRIVE_REFRESH_TOKEN',
|
|
||||||
'state' => 0,
|
|
||||||
'data' => '["'.\Crypt::encryptString('').'"]'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'GOOGLE_DRIVE_FOLDER_ID',
|
|
||||||
'state' => 0,
|
|
||||||
'data' => '["'.\Crypt::encryptString('null').'"]'
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
'name' => 'is_Google_Drive_enabled',
|
'name' => 'is_Google_Drive_enabled',
|
||||||
'state' => 0,
|
'state' => 0,
|
||||||
|
|||||||
@@ -7,84 +7,10 @@
|
|||||||
<h4>Configuration du système de fichier</h4>
|
<h4>Configuration du système de fichier</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body mt-5">
|
<div class="card-body mt-5">
|
||||||
<form action="/admin/config/files" method="POST">
|
<form action="/admin/config/files" method="post" enctype="multipart/form-data">
|
||||||
@csrf
|
@csrf
|
||||||
<div class="row ml-2">
|
<div class="row ml-2">
|
||||||
<h3 class="col-12">Google Drive</h3>
|
<p class="col-12">Il n'y a rien ici pour le moment</h3>
|
||||||
<div class="col-md-6">
|
|
||||||
<div class="alert alert-info" role="alert">
|
|
||||||
Vous pouvez suivre un <a class="alert-link" target="_blank" href="https://github.com/ivanvermeyen/laravel-google-drive-demo/blob/master/README/1-getting-your-dlient-id-and-secret.md">tutoriel (Anglais) <i class="fas fa-external-link-square-alt text-white"></i></a> pour trouver c'est information.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6">
|
|
||||||
<div id="google-drive-status" class="alert alert-primary" role="alert">
|
|
||||||
<div class="row pb-1">
|
|
||||||
<div class="col-10" id="google-drive-status-text">
|
|
||||||
Google Drive est initialisé correctement
|
|
||||||
</div>
|
|
||||||
<div class="col-2">
|
|
||||||
<div id="loaderDot" class="float-right d-none" style="margin-top: -30px;height: 41px">
|
|
||||||
@loaderDot
|
|
||||||
</div>
|
|
||||||
<div class="float-right" id="btn-sync">
|
|
||||||
<button type="button" class="btn btn-round btn-fab" style="margin-top: -0.55rem" onclick="checkFileSystem()">
|
|
||||||
<i class="fas fa-sync"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-8 p-2">
|
|
||||||
<div class="togglebutton">
|
|
||||||
<label>
|
|
||||||
<input id="is_active" type="checkbox" data-toggle="switch" name="is_active">
|
|
||||||
<span class="toggle"></span>
|
|
||||||
Activer Google Drive
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4">
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 p-2">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="exampleInputEmail1">GOOGLE_DRIVE_CLIENT_ID</label>
|
|
||||||
<input type="text" class="form-control" id="GOOGLE_DRIVE_CLIENT_ID" name="GOOGLE_DRIVE_CLIENT_ID" aria-describedby="emailHelp" value="{{Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_CLIENT_ID')) }}">
|
|
||||||
<small id="emailHelp" class="form-text text-muted">ID de client Google Drive</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 p-2">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="exampleInputEmail1">GOOGLE_DRIVE_CLIENT_SECRET</label>
|
|
||||||
<input type="text" class="form-control" id="GOOGLE_DRIVE_CLIENT_SECRET" name="GOOGLE_DRIVE_CLIENT_SECRET" aria-describedby="emailHelp" value="{{Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_CLIENT_SECRET'))}}">
|
|
||||||
<small id="emailHelp" class="form-text text-muted">ID secret du disque Google Drive</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 p-2">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="exampleInputEmail1">GOOGLE_DRIVE_REFRESH_TOKEN</label>
|
|
||||||
<input type="text" class="form-control" id="GOOGLE_DRIVE_REFRESH_TOKEN" name="GOOGLE_DRIVE_REFRESH_TOKEN" aria-describedby="emailHelp" value="{{Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_REFRESH_TOKEN'))}}">
|
|
||||||
<small id="emailHelp" class="form-text text-muted">Token de rafraichissement du disque Google Drive</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 p-2">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="exampleInputEmail1">GOOGLE_DRIVE_FOLDER_ID</label>
|
|
||||||
<input type="text" class="form-control" id="GOOGLE_DRIVE_FOLDER_ID" name="GOOGLE_DRIVE_FOLDER_ID" aria-describedby="emailHelp" value="{{Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_FOLDER_ID'))}}">
|
|
||||||
<small id="emailHelp" class="form-text text-muted">ID du dossier Google Drive, "null" pour la racine</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3 class="col-12">Configuration de la liste nominale</h3>
|
|
||||||
<div class="col-md-6 p-2">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="exampleInputEmail1">Liste nominative des cadets</label>
|
|
||||||
<input type="text" class="form-control" id="cadet_list" name="cadet_list" aria-describedby="emailHelp" value="{{\App\Config::getData('cadet_list')}}">
|
|
||||||
<small id="emailHelp" class="form-text text-muted">Url vers la liste nominative des cadets</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-12 p-2">
|
|
||||||
<button type="submit" class="btn btn-primary">Sauvegarder</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -54,8 +54,16 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
@foreach($courses as $course)
|
@foreach($courses as $course)
|
||||||
<tr class="cursor">
|
<tr class="cursor">
|
||||||
<td>{{$course->ocom}}</td>
|
<td>
|
||||||
<td>{{$course->name}}</td>
|
{{ $course->ocom }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if($course->name != "")
|
||||||
|
{{$course->name}}
|
||||||
|
@else
|
||||||
|
{{$course->desc }}
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
<td>{{$course->instructor()}}</td>
|
<td>{{$course->instructor()}}</td>
|
||||||
<td>{{$course->event->date_begin}}</td>
|
<td>{{$course->event->date_begin}}</td>
|
||||||
<td class="text-center">{{$course->level}}</td>
|
<td class="text-center">{{$course->level}}</td>
|
||||||
|
|||||||
@@ -12,7 +12,11 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<label>Nom</label>
|
<label>Nom</label>
|
||||||
|
@if($course->name != "")
|
||||||
<p>{{$course->name}}</p>
|
<p>{{$course->name}}</p>
|
||||||
|
@else
|
||||||
|
<p>{{$course->desc}}</p>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label>Instructeur</label>
|
<label>Instructeur</label>
|
||||||
@@ -111,7 +115,7 @@
|
|||||||
<div class="col-md-1 text-center">
|
<div class="col-md-1 text-center">
|
||||||
<label>Télécharger</label>
|
<label>Télécharger</label>
|
||||||
<p>
|
<p>
|
||||||
<a target="_blank" href="/file/get?d={{urlencode($lessonPlanDir)}}&f={{urlencode($course->lessonPlan->file)}}" class="btn btn-primary btn-fab btn-fab-mini btn-round m-0">
|
<a target="_blank" href="/admin/lessonPlan/{{$course->lessonPlan->file}}" class="btn btn-primary btn-fab btn-fab-mini btn-round m-0">
|
||||||
<i class="material-icons">cloud_download</i>
|
<i class="material-icons">cloud_download</i>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
37
resources/views/admin/files/list/edit.blade.php
Normal file
37
resources/views/admin/files/list/edit.blade.php
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
@extends('layouts.admin.main')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header card-header-primary">
|
||||||
|
<h4>Mettre à jour la liste nominative</h4>
|
||||||
|
</div>
|
||||||
|
<div class="card-body mt-5">
|
||||||
|
<form method="post" enctype="multipart/form-data">
|
||||||
|
@csrf
|
||||||
|
<div class="row ml-2">
|
||||||
|
<div class="col-md-6 p-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputEmail1">Liste nominative des cadets</label>
|
||||||
|
<div class="fileinput fileinput-new input-group" data-provides="fileinput" style="display: flex !important;">
|
||||||
|
<div class="form-control" data-trigger="fileinput">
|
||||||
|
<span class="fileinput-filename"></span>
|
||||||
|
</div>
|
||||||
|
<span class="input-group-append"><span class="input-group-text fileinput-exists cursor" data-dismiss="fileinput">Remove</span><span class="input-group-text btn-file"><span class="fileinput-new cursor">Select file</span><span class="fileinput-exists cursor">Change</span><input type="file" required name="nominativeList" accept="application/pdf"></span></span>
|
||||||
|
</div>
|
||||||
|
<small id="emailHelp" class="form-text text-muted">Veuillez choisir un pdf</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12 p-2">
|
||||||
|
<button type="submit" class="btn btn-primary">Sauvegarder</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('custom_scripts')
|
||||||
|
|
||||||
|
@endsection
|
||||||
20
resources/views/admin/files/list/index.blade.php
Normal file
20
resources/views/admin/files/list/index.blade.php
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
@extends('layouts.admin.main')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h4 class="card-title">Liste nominative</h4>
|
||||||
|
<p class="category">Télécharger ici la liste nominative</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<a href="/admin/nominativelist/download" target="_blank" class="btn btn-info">Télécharger</a>
|
||||||
|
@if(\Auth::user()->p('cadet_list_edit') == 1)
|
||||||
|
<a href="/admin/nominativelist/edit" class="btn btn-warning">Modifier</a>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('custom_scripts')
|
||||||
|
|
||||||
|
@endsection
|
||||||
@@ -32,6 +32,7 @@
|
|||||||
<th style="width: 4.5rem">Status</th>
|
<th style="width: 4.5rem">Status</th>
|
||||||
<th style="width: 4.5rem">OREN</th>
|
<th style="width: 4.5rem">OREN</th>
|
||||||
<th style="width: 4.5rem">OCOM</th>
|
<th style="width: 4.5rem">OCOM</th>
|
||||||
|
<th style="width: 4.5rem">Niveau</th>
|
||||||
<th style="width: 7rem">Nb Periode</th>
|
<th style="width: 7rem">Nb Periode</th>
|
||||||
<th>Objectif de rendement</th>
|
<th>Objectif de rendement</th>
|
||||||
<th>Objectif de compétence</th>
|
<th>Objectif de compétence</th>
|
||||||
@@ -56,6 +57,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td onclick="navigate({{$ocom->id}})">{{$ocom->oren}}</td>
|
<td onclick="navigate({{$ocom->id}})">{{$ocom->oren}}</td>
|
||||||
<td onclick="navigate({{$ocom->id}})">{{$ocom->ocom}}</td>
|
<td onclick="navigate({{$ocom->id}})">{{$ocom->ocom}}</td>
|
||||||
|
<td onclick="navigate({{$ocom->id}})">{{$ocom->niveau()}}</td>
|
||||||
<td onclick="navigate({{$ocom->id}})">{{$ocom->nbPeriode}}</td>
|
<td onclick="navigate({{$ocom->id}})">{{$ocom->nbPeriode}}</td>
|
||||||
<td onclick="navigate({{$ocom->id}})">{{$ocom->objectif_rendement}}</td>
|
<td onclick="navigate({{$ocom->id}})">{{$ocom->objectif_rendement}}</td>
|
||||||
<td onclick="navigate({{$ocom->id}})">{{$ocom->objectif_competence}}</td>
|
<td onclick="navigate({{$ocom->id}})">{{$ocom->objectif_competence}}</td>
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
<td>{{$course->level}}</td>
|
<td>{{$course->level}}</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
@if($course->lessonPlan)
|
@if($course->lessonPlan)
|
||||||
<a href="/file/get?d={{urlencode(\App\GoogleDriveFile::findByPath('.Systeme/.Fichier/.PlanDeCours')->id)}}&f={{urlencode($course->lessonPlan->file)}}">
|
<a href="/admin/lessonPlan/{{$course->lessonPlan->file}}">
|
||||||
@if($course->lessonPlan->approved == 1)
|
@if($course->lessonPlan->approved == 1)
|
||||||
<i class="fas fa-check-circle text-success fa-2x" data-toggle="tooltip"
|
<i class="fas fa-check-circle text-success fa-2x" data-toggle="tooltip"
|
||||||
data-placement="top" title="Plan de cours remis et vérifié"></i>
|
data-placement="top" title="Plan de cours remis et vérifié"></i>
|
||||||
|
|||||||
@@ -2,13 +2,136 @@
|
|||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="row">
|
<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.6</h3>
|
||||||
|
<p class="category">2020-10-19</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é
|
||||||
|
</p>
|
||||||
|
<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-plus"></i>
|
||||||
|
</div>
|
||||||
|
<div class="col m-auto text-left">
|
||||||
|
Ajout d'un affichage en table pour 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 d'une colonne niveau dans la BD des cours
|
||||||
|
</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">
|
||||||
|
Mise à jour du système de fichier
|
||||||
|
</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">
|
||||||
|
De la gestion de plan de cours
|
||||||
|
</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">
|
||||||
|
Mise à jour de la gestion de la liste nominative
|
||||||
|
</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">
|
||||||
|
Mise à jour de l'affichage des permissions pour les postes et 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">
|
||||||
|
Mise à jour du profil d'utilisateur
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<p>
|
||||||
|
Bug
|
||||||
|
</p>
|
||||||
|
<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 multiples bugs
|
||||||
|
</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-bug"></i>
|
||||||
|
</div>
|
||||||
|
<div class="col m-auto text-left">
|
||||||
|
Correction d'un bug d'affichage des cours
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<h3 class="card-title">3.2.5</h3>
|
<h3 class="card-title">3.2.5</h3>
|
||||||
<p class="category">2019-10-19</p>
|
<p class="category">2020-10-01</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 text-right">
|
<div class="col-sm-6 text-right">
|
||||||
<span class="badge badge-pill badge-success">STABLE</span>
|
<span class="badge badge-pill badge-success">STABLE</span>
|
||||||
|
|||||||
@@ -38,7 +38,13 @@
|
|||||||
@foreach($courses as $course)
|
@foreach($courses as $course)
|
||||||
<tr class="cursor">
|
<tr class="cursor">
|
||||||
<td>{{$course->ocom}}</td>
|
<td>{{$course->ocom}}</td>
|
||||||
<td>{{$course->name}}</td>
|
<td>
|
||||||
|
@if($course->name != "")
|
||||||
|
{{$course->name}}
|
||||||
|
@else
|
||||||
|
{{$course->desc }}
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
<td>{{$course->instructor()}}</td>
|
<td>{{$course->instructor()}}</td>
|
||||||
<td>{{$course->event->date_begin}}</td>
|
<td>{{$course->event->date_begin}}</td>
|
||||||
<td class="text-center">{{$course->level}}</td>
|
<td class="text-center">{{$course->level}}</td>
|
||||||
|
|||||||
@@ -72,12 +72,12 @@ $sidebar = [
|
|||||||
'perm' => 'user_see',
|
'perm' => 'user_see',
|
||||||
'child' => null
|
'child' => null
|
||||||
],
|
],
|
||||||
//'Liste nominative' => [
|
'Liste nominative' => [
|
||||||
// 'route' => 'admin.users',
|
'route' => 'admin.admin.list',
|
||||||
// 'icon' => 'fas fa-address-book',
|
'icon' => 'fas fa-address-book',
|
||||||
// 'perm' => 'cadet_list_see',
|
'perm' => 'cadet_list_see',
|
||||||
// 'child' => null
|
'child' => null
|
||||||
//],
|
],
|
||||||
'Logs' => [
|
'Logs' => [
|
||||||
'route' => 'admin.stats.log',
|
'route' => 'admin.stats.log',
|
||||||
'icon' => 'fas fa-stream',
|
'icon' => 'fas fa-stream',
|
||||||
@@ -86,12 +86,49 @@ $sidebar = [
|
|||||||
],
|
],
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
//'Fichiers' => [
|
'Fichiers' => [
|
||||||
// 'route' => null,
|
'route' => null,
|
||||||
// 'icon' => 'folder',
|
'icon' => 'folder',
|
||||||
// 'perm' => 'file_see',
|
'perm' => null,
|
||||||
// 'child' => \App\GoogleDriveFile::getSidebarFile(),
|
'child' => [
|
||||||
//],
|
'Publique' => [
|
||||||
|
'route' => 'admin.files.publique',
|
||||||
|
'icon' => 'fas fa-folder-open',
|
||||||
|
'perm' => null,
|
||||||
|
'child' => null
|
||||||
|
],
|
||||||
|
'Cadets' => [
|
||||||
|
'route' => 'admin.files.cadet',
|
||||||
|
'icon' => 'fas fa-folder-open',
|
||||||
|
'perm' => 'files_cadets_see',
|
||||||
|
'child' => null
|
||||||
|
],
|
||||||
|
'Staff' => [
|
||||||
|
'route' => 'admin.files.staff',
|
||||||
|
'icon' => 'fas fa-folder-open',
|
||||||
|
'perm' => 'files_staff_see',
|
||||||
|
'child' => null
|
||||||
|
],
|
||||||
|
'Instruction' => [
|
||||||
|
'route' => 'admin.instruction.files',
|
||||||
|
'icon' => 'fas fa-folder-open',
|
||||||
|
'perm' => 'files_instruction_see',
|
||||||
|
'child' => null
|
||||||
|
],
|
||||||
|
'ETAMAS' => [
|
||||||
|
'route' => 'admin.files.etamas',
|
||||||
|
'icon' => 'fas fa-folder-open',
|
||||||
|
'perm' => 'files_etamas_see',
|
||||||
|
'child' => null
|
||||||
|
],
|
||||||
|
'Officiers' => [
|
||||||
|
'route' => 'admin.files.officier',
|
||||||
|
'icon' => 'fas fa-folder-open',
|
||||||
|
'perm' => 'files_officier_see',
|
||||||
|
'child' => null
|
||||||
|
]
|
||||||
|
],
|
||||||
|
],
|
||||||
'Configuration' => [
|
'Configuration' => [
|
||||||
'route' => null,
|
'route' => null,
|
||||||
'icon' => 'menu_book',
|
'icon' => 'menu_book',
|
||||||
@@ -127,12 +164,12 @@ $sidebar = [
|
|||||||
'perm' => 'config_edit_job',
|
'perm' => 'config_edit_job',
|
||||||
'child' => null
|
'child' => null
|
||||||
],
|
],
|
||||||
//'Fichier' => [
|
'Fichier' => [
|
||||||
// 'route' => 'admin.config.files',
|
'route' => 'admin.config.files',
|
||||||
// 'icon' => 'fas fa-folder',
|
'icon' => 'fas fa-folder',
|
||||||
// 'perm' => 'config_edit_files',
|
'perm' => 'config_edit_files',
|
||||||
// 'child' => null
|
'child' => null
|
||||||
//],
|
],
|
||||||
'Apparence' => [
|
'Apparence' => [
|
||||||
'route' => 'admin.config.customisation',
|
'route' => 'admin.config.customisation',
|
||||||
'icon' => 'fas fa-palette',
|
'icon' => 'fas fa-palette',
|
||||||
|
|||||||
@@ -76,12 +76,6 @@ Route::middleware('auth:api')->group(function () {
|
|||||||
Route::post('/course/{id}/plan/validate','CourseController@validatePlan')->middleware('courseperm:validate_plan');;
|
Route::post('/course/{id}/plan/validate','CourseController@validatePlan')->middleware('courseperm:validate_plan');;
|
||||||
|
|
||||||
/** File Exlorer Route */
|
/** File Exlorer Route */
|
||||||
Route::get('/drive/{folder}/permission/{subject}/{id}','GoogleDriveController@editPermissionModal')->middleware('perm:file_see');
|
|
||||||
Route::get('/drive/{folder}/addpermission/{subject}','GoogleDriveController@addPermissionModal')->middleware('perm:file_see');
|
|
||||||
Route::get('/drive/folders/{folder?}','GoogleDriveController@list')->middleware('fileperm:folder,r');
|
|
||||||
Route::get('/drive/path/{folder}','GoogleDriveController@getPath')->middleware('fileperm:folder,r');
|
|
||||||
Route::get('/drive/patharray','GoogleDriveController@getPathArray')->middleware('perm:file_see');
|
|
||||||
Route::get('/drive/files/{dir}/{file}','GoogleDriveController@showMetadata')->middleware('fileperm:folder,r');
|
|
||||||
Route::get('/drive/checkfilestructure','GoogleDriveController@checkFileSystem')->middleware('perm:config_edit');;
|
Route::get('/drive/checkfilestructure','GoogleDriveController@checkFileSystem')->middleware('perm:config_edit');;
|
||||||
|
|
||||||
Route::get('/user/perm/{id}', function($id) {
|
Route::get('/user/perm/{id}', function($id) {
|
||||||
|
|||||||
@@ -341,10 +341,22 @@ Breadcrumbs::for('admin.stats.instruction', function ($trail) {
|
|||||||
$trail->push('Statistique de l\'instruction', route('admin.stats.instruction'));
|
$trail->push('Statistique de l\'instruction', route('admin.stats.instruction'));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Admin > List
|
||||||
|
Breadcrumbs::for('admin.admin.list', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Liste Nominative', route('admin.admin.list'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > List
|
||||||
|
Breadcrumbs::for('admin.admin.list.update', function ($trail) {
|
||||||
|
$trail->parent('admin.admin.list');
|
||||||
|
$trail->push('Mettre à jour la liste Nominative', route('admin.admin.list.update'));
|
||||||
|
});
|
||||||
|
|
||||||
// Admin > Files
|
// Admin > Files
|
||||||
Breadcrumbs::for('admin.files', function ($trail) {
|
Breadcrumbs::for('admin.files', function ($trail) {
|
||||||
$trail->parent('admin.dashboard');
|
$trail->parent('admin.dashboard');
|
||||||
$trail->push('Mes fichier', route('admin.files'));
|
$trail->push('Fichiers', route('admin.files'));
|
||||||
});
|
});
|
||||||
|
|
||||||
// Admin > Files > Cadet
|
// Admin > Files > Cadet
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ Route::middleware(['auth', 'firstlogin'])->name('admin.')->group(function () {
|
|||||||
/** Instruction */
|
/** Instruction */
|
||||||
Route::get('/admin/instruction', 'AdminController@instruction')->name('instruction');
|
Route::get('/admin/instruction', 'AdminController@instruction')->name('instruction');
|
||||||
Route::get('/admin/instruction/guide', 'FilesController@guide')->middleware('perm:instruction_guide_see')->name('instruction.guide');
|
Route::get('/admin/instruction/guide', 'FilesController@guide')->middleware('perm:instruction_guide_see')->name('instruction.guide');
|
||||||
Route::get('/admin/instruction/files', 'FilesController@instruction')->middleware('perm:file_see')->name('instruction.files');
|
Route::get('/admin/instruction/files', 'FilesController@instruction')->middleware('perm:files_instruction_see')->name('instruction.files');
|
||||||
|
|
||||||
/** Courses */
|
/** Courses */
|
||||||
Route::get('/admin/course', 'CourseController@index')->name('course');
|
Route::get('/admin/course', 'CourseController@index')->name('course');
|
||||||
@@ -188,15 +188,21 @@ Route::middleware(['auth', 'firstlogin'])->name('admin.')->group(function () {
|
|||||||
Route::patch('/admin/course/{id}/plan/commentOfficer', 'CourseController@updateCommentOfficerPlan')->middleware('courseperm:comment_plan_officer');
|
Route::patch('/admin/course/{id}/plan/commentOfficer', 'CourseController@updateCommentOfficerPlan')->middleware('courseperm:comment_plan_officer');
|
||||||
Route::patch('/admin/course/{id}/plan/comment', 'CourseController@updateCommentPlan')->middleware('courseperm:edit');
|
Route::patch('/admin/course/{id}/plan/comment', 'CourseController@updateCommentPlan')->middleware('courseperm:edit');
|
||||||
Route::post('/admin/course/{id}/lessonPlan', 'CourseController@updateLessonPlan')->middleware('courseperm:edit');
|
Route::post('/admin/course/{id}/lessonPlan', 'CourseController@updateLessonPlan')->middleware('courseperm:edit');
|
||||||
|
Route::get('/admin/lessonPlan/{name}','CourseController@downloadLessonPlan')->where('name','.*');
|
||||||
|
|
||||||
/** Files */
|
/** Files */
|
||||||
Route::get('/admin/files', 'FilesController@index')->name('files');
|
Route::get('/admin/files', 'FilesController@index')->name('files');
|
||||||
Route::get('/admin/files/cadet', 'FilesController@cadet')->middleware('perm:file_see')->name('files.cadet')->middleware('fileperm:folder,r');
|
Route::get('/admin/files/cadet', 'FilesController@cadet')->middleware('perm:files_cadets_see')->name('files.cadet');
|
||||||
Route::get('/admin/files/staff', 'FilesController@staff')->middleware('perm:file_see')->name('files.staff')->middleware('fileperm:folder,r');
|
Route::get('/admin/files/staff', 'FilesController@staff')->middleware('perm:files_staff_see')->name('files.staff');
|
||||||
Route::get('/admin/files/etamas', 'FilesController@etamas')->middleware('perm:file_see')->name('files.etamas')->middleware('fileperm:folder,r');
|
Route::get('/admin/files/etamas', 'FilesController@etamas')->middleware('perm:files_etamas_see')->name('files.etamas');
|
||||||
Route::get('/admin/files/officier', 'FilesController@officier')->middleware('perm:file_see')->name('files.officier')->middleware('fileperm:folder,r');
|
Route::get('/admin/files/officier', 'FilesController@officier')->middleware('perm:files_officier_see')->name('files.officier');
|
||||||
Route::get('/admin/files/publique', 'FilesController@publique')->middleware('perm:file_see')->name('files.publique')->middleware('fileperm:folder,r');
|
Route::get('/admin/files/publique', 'FilesController@publique')->name('files.publique');
|
||||||
|
|
||||||
|
/** List Cadet */
|
||||||
|
Route::get('/admin/nominativelist','FilesController@show_nominativeList')->middleware('perm:cadet_list_see')->name('admin.list');
|
||||||
|
Route::get('/admin/nominativelist/edit','FilesController@edit_nominativeList')->middleware('perm:cadet_list_edit')->name('admin.list.update');
|
||||||
|
Route::post('/admin/nominativelist/edit','FilesController@update_nominativeList')->middleware('perm:cadet_list_edit');
|
||||||
|
Route::get('/admin/nominativelist/download','FilesController@download_nominativeList')->middleware('perm:cadet_list_see');
|
||||||
|
|
||||||
/** OCOM */
|
/** OCOM */
|
||||||
Route::get('/admin/ocom', 'OCOMController@index')->name('ocom')->middleware('perm:instruction_db_ocom_see');
|
Route::get('/admin/ocom', 'OCOMController@index')->name('ocom')->middleware('perm:instruction_db_ocom_see');
|
||||||
|
|||||||
Reference in New Issue
Block a user