mirror of
https://gitlab.com/TheGamecraft/c-cms.git
synced 2026-04-21 02:39:10 -04:00
File Explorer update + Permission update
This commit is contained in:
@@ -33,8 +33,8 @@ MAIL_USERNAME=null
|
|||||||
MAIL_PASSWORD=null
|
MAIL_PASSWORD=null
|
||||||
MAIL_ENCRYPTION=null
|
MAIL_ENCRYPTION=null
|
||||||
|
|
||||||
NEXMO_KEY=4587feffd # Votre Clé Nexmo API
|
NEXMO_KEY= # Votre Clé Nexmo API
|
||||||
NEXMO_SECRET=54dasf4e8fa4s4fd4f5s # Votre Mot de passe Nexmo API
|
NEXMO_SECRET= # Votre Mot de passe Nexmo API
|
||||||
|
|
||||||
PUSHER_APP_ID=
|
PUSHER_APP_ID=
|
||||||
PUSHER_APP_KEY=
|
PUSHER_APP_KEY=
|
||||||
|
|||||||
@@ -3,9 +3,25 @@
|
|||||||
namespace App;
|
namespace App;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
use League\Flysystem\FileNotFoundException;
|
||||||
|
use mysql_xdevapi\Exception;
|
||||||
|
|
||||||
class GoogleDriveFile extends Model
|
class GoogleDriveFile extends Model
|
||||||
{
|
{
|
||||||
|
protected $primaryKey = 'id'; // or null
|
||||||
|
|
||||||
|
public $incrementing = false;
|
||||||
|
|
||||||
|
// In Laravel 6.0+ make sure to also set $keyType
|
||||||
|
protected $keyType = 'string';
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'rank_permission' => 'array',
|
||||||
|
'job_permission' => 'array',
|
||||||
|
'user_permission' => 'array',
|
||||||
|
];
|
||||||
|
|
||||||
public static function icon($extension)
|
public static function icon($extension)
|
||||||
{
|
{
|
||||||
$icon = "fas fa-file";
|
$icon = "fas fa-file";
|
||||||
@@ -37,4 +53,204 @@ class GoogleDriveFile extends Model
|
|||||||
}
|
}
|
||||||
return $icon;
|
return $icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function checkConfig()
|
||||||
|
{
|
||||||
|
$configNull = (\Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_CLIENT_ID')) != "" && \Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_CLIENT_SECRET')) != "" && \Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_REFRESH_TOKEN')) != "" && \Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_FOLDER_ID')) != "");
|
||||||
|
$configOk = true;
|
||||||
|
|
||||||
|
if ($configNull)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
\Storage::cloud()->listContents("/", false);
|
||||||
|
}
|
||||||
|
catch (\Exception $e)
|
||||||
|
{
|
||||||
|
$configOk = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $configNull && $configOk;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function findByName($name)
|
||||||
|
{
|
||||||
|
return GoogleDriveFile::where('name','=',$name)->get()->first();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function findByPath($path)
|
||||||
|
{
|
||||||
|
return GoogleDriveFile::where('path','=',$path)->get()->first();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function findByPathInDrive($path,$current_directory = '/')
|
||||||
|
{
|
||||||
|
if ($path != "")
|
||||||
|
{
|
||||||
|
$exploded_path = explode('/',$path);
|
||||||
|
if ($exploded_path[0] == "")
|
||||||
|
{
|
||||||
|
array_splice($exploded_path,0,1);
|
||||||
|
}
|
||||||
|
$contents = collect(Storage::cloud()->listContents($current_directory, false));
|
||||||
|
|
||||||
|
$dir = $contents->where('type', '=', 'dir')
|
||||||
|
->where('name', '=', $exploded_path[0])
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ( ! $dir)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
array_splice($exploded_path,0,1);
|
||||||
|
$newPath = implode('/',$exploded_path);
|
||||||
|
if ($newPath == "")
|
||||||
|
{
|
||||||
|
return $dir['basename'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return GoogleDriveFile::findByPathInDrive($newPath,$dir['basename']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function createByPathInDrive($path,$current_directory = '/')
|
||||||
|
{
|
||||||
|
if ($path != "")
|
||||||
|
{
|
||||||
|
$exploded_path = explode('/',$path);
|
||||||
|
$size = count($exploded_path);
|
||||||
|
if ($size > 1)
|
||||||
|
{
|
||||||
|
$parent = self::findByName($exploded_path[$size-2]);
|
||||||
|
\Storage::cloud()->createDir($parent->id.'/'.$exploded_path[$size-1]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
\Storage::cloud()->createDir('/'.$exploded_path[$size-1]);
|
||||||
|
}
|
||||||
|
return self::findByPathInDrive($path);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setPermission($subject, $value)
|
||||||
|
{
|
||||||
|
$explodedSubject = explode('.',$subject);
|
||||||
|
$subject = $explodedSubject[0];
|
||||||
|
$id = $explodedSubject[1];
|
||||||
|
|
||||||
|
$permission = null;
|
||||||
|
if ($subject == 'rank')
|
||||||
|
{
|
||||||
|
$permission = $this->rank_permission;
|
||||||
|
}
|
||||||
|
elseif ($subject == 'job')
|
||||||
|
{
|
||||||
|
$permission = $this->job_permission;
|
||||||
|
}
|
||||||
|
elseif ($subject == 'user')
|
||||||
|
{
|
||||||
|
$permission = $this->user_permission;
|
||||||
|
}
|
||||||
|
|
||||||
|
[$id] = $value;
|
||||||
|
|
||||||
|
if ($subject == 'rank')
|
||||||
|
{
|
||||||
|
$this->rank_permission = $permission;
|
||||||
|
}
|
||||||
|
elseif ($subject == 'job')
|
||||||
|
{
|
||||||
|
$this->job_permission = $permission;
|
||||||
|
}
|
||||||
|
elseif ($subject == 'user')
|
||||||
|
{
|
||||||
|
$this->user_permission = $permission;
|
||||||
|
}
|
||||||
|
$this->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAllPermission($subject)
|
||||||
|
{
|
||||||
|
$permission = null;
|
||||||
|
if ($subject == 'rank')
|
||||||
|
{
|
||||||
|
$permission = $this->rank_permission;
|
||||||
|
}
|
||||||
|
elseif ($subject == 'job')
|
||||||
|
{
|
||||||
|
$permission = $this->job_permission;
|
||||||
|
}
|
||||||
|
elseif ($subject == 'user')
|
||||||
|
{
|
||||||
|
$permission = $this->user_permission;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $permission;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPermission($subject)
|
||||||
|
{
|
||||||
|
$explodedSubject = explode('.',$subject);
|
||||||
|
$subject = $explodedSubject[0];
|
||||||
|
$id = $explodedSubject[1];
|
||||||
|
|
||||||
|
if (isset($this->getAllPermission($subject)[$id]))
|
||||||
|
{
|
||||||
|
return $this->getAllPermission($subject)[$id];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function canUser($user, $permission = 'r')
|
||||||
|
{
|
||||||
|
if (strpos($this->getPermission('rank.0'),$permission) !== false)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (strpos($this->getPermission('user.'.$user->id),$permission) === false)
|
||||||
|
{
|
||||||
|
if (strpos($this->getPermission('job.'.$user->job->id),$permission) === false)
|
||||||
|
{
|
||||||
|
if (strpos($this->getPermission('rank.'.$user->rank->id),$permission) === false)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function canAuthUser($perm = 'r')
|
||||||
|
{
|
||||||
|
return $this->canUser(\Auth::user(),$perm);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getPermForUser($folder,$user,$perm = 'r')
|
||||||
|
{
|
||||||
|
$dir = \App\GoogleDriveFile::find($folder);
|
||||||
|
if ($dir == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return $dir->canUser($user,$perm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getPermForAuthUser($folder,$perm = 'r')
|
||||||
|
{
|
||||||
|
return self::getPermForUser($folder,\Auth::user(),$perm);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\GoogleDriveFile;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Psy\Util\Str;
|
use Psy\Util\Str;
|
||||||
@@ -245,9 +246,6 @@ class GoogleDriveController extends Controller
|
|||||||
$contents = collect(Storage::cloud()->listContents($folder, $recursive));
|
$contents = collect(Storage::cloud()->listContents($folder, $recursive));
|
||||||
}
|
}
|
||||||
|
|
||||||
//dd($contents);
|
|
||||||
//$meta = collect(Storage::cloud()->listContents($folder, true));
|
|
||||||
//dd($meta);
|
|
||||||
return view('admin.files.Google Drive.explorer',['directories' => $contents->where('type', '=', 'dir')->sortByDesc('name'), 'files' => $contents->where('type', '=', 'file'), 'currentDir' => $folder]);
|
return view('admin.files.Google Drive.explorer',['directories' => $contents->where('type', '=', 'dir')->sortByDesc('name'), 'files' => $contents->where('type', '=', 'file'), 'currentDir' => $folder]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,7 +254,7 @@ class GoogleDriveController extends Controller
|
|||||||
$error = [];
|
$error = [];
|
||||||
if(\App\Config::getData('is_Google_Drive_enabled') == "true")
|
if(\App\Config::getData('is_Google_Drive_enabled') == "true")
|
||||||
{
|
{
|
||||||
if ($this->checkConfig())
|
if (GoogleDriveFile::checkConfig())
|
||||||
{
|
{
|
||||||
$structure = $this->getFileStructure();
|
$structure = $this->getFileStructure();
|
||||||
$this->checkStructure($structure,'/','/',$error);
|
$this->checkStructure($structure,'/','/',$error);
|
||||||
@@ -273,61 +271,135 @@ class GoogleDriveController extends Controller
|
|||||||
return $error;
|
return $error;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function checkStructure($structure,$parent,$id,&$error)
|
public function checkStructure()
|
||||||
{
|
{
|
||||||
$mydir = $this->listLockDirectory($id);
|
$structure = $this->getFileStructure();
|
||||||
|
|
||||||
foreach ($structure as $key => $value)
|
foreach ($structure as $directory => $value)
|
||||||
{
|
{
|
||||||
$found = false;
|
$basename = GoogleDriveFile::findByPathInDrive($directory);
|
||||||
$newDirID = null;
|
if ($basename == false)
|
||||||
$p = null;
|
|
||||||
foreach ($mydir as $dir)
|
|
||||||
{
|
{
|
||||||
$p = $dir['basename'];
|
$basename = GoogleDriveFile::createByPathInDrive($directory);
|
||||||
if ($dir['extension'] == $key)
|
}
|
||||||
|
|
||||||
|
$googleDriveFile = GoogleDriveFile::findByPath($directory);
|
||||||
|
if ($googleDriveFile == null)
|
||||||
|
{
|
||||||
|
$googleDriveFile = new GoogleDriveFile();
|
||||||
|
$googleDriveFile->id = $basename;
|
||||||
|
$googleDriveFile->type = 'directory';
|
||||||
|
$googleDriveFile->rank_permission = $value['rank'];
|
||||||
|
$googleDriveFile->job_permission = [];
|
||||||
|
$googleDriveFile->user_permission = [];
|
||||||
|
$googleDriveFile->path = $directory;
|
||||||
|
$name = explode('/',$directory);
|
||||||
|
$googleDriveFile->name = $name[count($name)-1];
|
||||||
|
$googleDriveFile->save();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($googleDriveFile->id != $basename)
|
||||||
{
|
{
|
||||||
$found = true;
|
$googleDriveFile->id = $basename;
|
||||||
$newDirID = $dir['basename'];
|
$googleDriveFile->save();
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!$found)
|
|
||||||
{
|
|
||||||
array_push($error,'Dossier 🔒.'.$key.' manquant... Le dossier a été créer');
|
|
||||||
\Storage::cloud()->createDir($parent.'/🔒.'.$key);
|
|
||||||
$tempdir = $this->listLockDirectory($parent);
|
|
||||||
$p = $tempdir->where('extension','=',$key)->first()['basename'];
|
|
||||||
}
|
|
||||||
if ($value != [])
|
|
||||||
{
|
|
||||||
$this->checkStructure($value,$p,$newDirID,$error);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function editPermission($folder)
|
||||||
|
{
|
||||||
|
$f = GoogleDriveFile::find($folder);
|
||||||
|
if ($f == null)
|
||||||
|
{
|
||||||
|
$metadata = \Storage::cloud()->getMetadata($folder);
|
||||||
|
$f = new GoogleDriveFile();
|
||||||
|
$f->id = $folder;
|
||||||
|
$f->type = 'directory';
|
||||||
|
$f->name = $metadata['name'];
|
||||||
|
$f->rank_permission = [1 => 'rwp'];
|
||||||
|
$f->job_permission = [];
|
||||||
|
$f->user_permission = [];
|
||||||
|
$f->path = $this->recreatePath($folder);
|
||||||
|
$f->save();
|
||||||
|
}
|
||||||
|
return view('admin.files.Google Drive.permission',['dir' => $f]);
|
||||||
|
}
|
||||||
|
|
||||||
public function getFileStructure()
|
public function getFileStructure()
|
||||||
{
|
{
|
||||||
return collect([
|
return collect([
|
||||||
'Privé' => [
|
'🔒.Privé' => [
|
||||||
'Cadet' => [],
|
'rank' => [1 => 'rwp'],
|
||||||
'ETAMAS' => [],
|
'job' => [],
|
||||||
'Officier' => [],
|
'user' => []
|
||||||
'Staff' => [
|
|
||||||
'Guide' => []
|
|
||||||
]
|
|
||||||
],
|
],
|
||||||
'Publique' => [
|
'🔒.Privé/🔒.Cadet' => [
|
||||||
'Fichier' => [],
|
'rank' => [1 => 'rwp'],
|
||||||
'Image' => []
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
|
],
|
||||||
|
'🔒.Privé/🔒.ETAMAS' => [
|
||||||
|
'rank' => [1 => 'rwp'],
|
||||||
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
|
],
|
||||||
|
'🔒.Privé/🔒.Officier' => [
|
||||||
|
'rank' => [1 => 'rwp'],
|
||||||
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
|
],
|
||||||
|
'🔒.Privé/🔒.Staff' => [
|
||||||
|
'rank' => [1 => 'rwp'],
|
||||||
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
|
],
|
||||||
|
'🔒.Privé/🔒.Staff/🔒.Guide' => [
|
||||||
|
'rank' => [1 => 'rwp'],
|
||||||
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
|
],
|
||||||
|
'🔒.Publique' => [
|
||||||
|
'rank' => [1 => 'rwp',0 => 'r'],
|
||||||
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
|
],
|
||||||
|
'🔒.Publique/🔒.Fichier' => [
|
||||||
|
'rank' => [1 => 'rwp',0 => 'r'],
|
||||||
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
|
],
|
||||||
|
'🔒.Publique/🔒.Image' => [
|
||||||
|
'rank' => [1 => 'rwp',0 => 'r'],
|
||||||
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
|
],
|
||||||
|
'🔒.Système' => [
|
||||||
|
'rank' => [1 => 'rwp'],
|
||||||
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
|
],
|
||||||
|
'🔒.Système/🔒.Fichier' => [
|
||||||
|
'rank' => [1 => 'rwp'],
|
||||||
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
|
],
|
||||||
|
'🔒.Système/🔒.Image' => [
|
||||||
|
'rank' => [1 => 'rwp'],
|
||||||
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
|
],
|
||||||
|
'🔒.Système/🔒.Image/🔒.Nouvelle' => [
|
||||||
|
'rank' => [1 => 'rwp'],
|
||||||
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
|
],
|
||||||
|
'🔒.Système/🔒.Image/🔒.Profil' => [
|
||||||
|
'rank' => [1 => 'rwp'],
|
||||||
|
'job' => [],
|
||||||
|
'user' => []
|
||||||
],
|
],
|
||||||
'Système' => [
|
|
||||||
'Fichier' => [],
|
|
||||||
'Image' => [
|
|
||||||
'Nouvelle' => [],
|
|
||||||
'Profil' => []
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -340,24 +412,70 @@ class GoogleDriveController extends Controller
|
|||||||
return $dir;
|
return $dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function checkConfig()
|
public function recreatePath($folder)
|
||||||
{
|
{
|
||||||
$configNull = (\Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_CLIENT_ID')) != "" && \Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_CLIENT_SECRET')) != "" && \Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_REFRESH_TOKEN')) != "" && \Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_FOLDER_ID')) != "");
|
$path = [];
|
||||||
$configOk = true;
|
$name = [];
|
||||||
|
$directories = collect(json_decode($this->getPathArray(),true));
|
||||||
if ($configNull)
|
foreach ($directories as $dir)
|
||||||
{
|
{
|
||||||
try {
|
$path[$dir['basename']] = $dir['dirname'];
|
||||||
$contents = collect(Storage::cloud()->listContents("/", false));
|
$name[$dir['basename']] = $dir['name'];
|
||||||
}
|
}
|
||||||
catch (\Exception $e)
|
$realPath = $name[$folder];
|
||||||
|
$foo = $folder;
|
||||||
|
while ($foo != "")
|
||||||
|
{
|
||||||
|
$bar = explode('/',$path[$foo]);
|
||||||
|
$foo = $bar[count($bar)-1];
|
||||||
|
if ($foo != "")
|
||||||
{
|
{
|
||||||
$configOk = false;
|
$realPath = $name[$foo].'/'.$realPath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return $realPath;
|
||||||
|
}
|
||||||
|
|
||||||
return $configNull && $configOk;
|
public function editPermissionModal($folder,$subject,$id)
|
||||||
|
{
|
||||||
|
$dir = GoogleDriveFile::find($folder);
|
||||||
|
$foo = null;
|
||||||
|
$perm = null;
|
||||||
|
if ($subject == 'rank')
|
||||||
|
{
|
||||||
|
if ($id == 0)
|
||||||
|
{
|
||||||
|
$foo = new \App\Rank();
|
||||||
|
$foo->name = "Utilisateur non authentifié";
|
||||||
|
$foo->id = 0;
|
||||||
|
if (isset($dir->rank_permission[$id]))
|
||||||
|
{
|
||||||
|
$perm = $dir->rank_permission[$id];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$perm = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$foo = \App\Rank::find($id);
|
||||||
|
$perm = $dir->rank_permission[$id];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif ($subject == 'job')
|
||||||
|
{
|
||||||
|
$foo = \App\Job::find($id);
|
||||||
|
$perm = $dir->job_permission[$id];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$foo = \App\User::find($id);
|
||||||
|
$perm = $dir->user_permission[$id];
|
||||||
|
}
|
||||||
|
return view('admin.files.Google Drive.permission.edit',['folder' => $dir,'subject' => $foo,'perm' => $perm,'s' => $subject]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,5 +62,6 @@ class Kernel extends HttpKernel
|
|||||||
'staff' => \App\Http\Middleware\AccesStaff::class,
|
'staff' => \App\Http\Middleware\AccesStaff::class,
|
||||||
'admin' => \App\Http\Middleware\AccesAdmin::class,
|
'admin' => \App\Http\Middleware\AccesAdmin::class,
|
||||||
'perm' => \App\Http\Middleware\CheckPerm::class,
|
'perm' => \App\Http\Middleware\CheckPerm::class,
|
||||||
|
'fileperm' => \App\Http\Middleware\CheckFilePerm::class,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
62
app/Http/Middleware/CheckFilePerm.php
Normal file
62
app/Http/Middleware/CheckFilePerm.php
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use \App\GoogleDriveFile;
|
||||||
|
use \App\Config;
|
||||||
|
|
||||||
|
class CheckFilePerm
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Handle an incoming request.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @param \Closure $next
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function handle($request, Closure $next,$type,$permission = 'r')
|
||||||
|
{
|
||||||
|
if (GoogleDriveFile::checkConfig() && Config::getData('is_Google_Drive_enabled') == 'true')
|
||||||
|
{
|
||||||
|
if ($type == 'file')
|
||||||
|
{
|
||||||
|
$dir = GoogleDriveFile::find($request->d);
|
||||||
|
if ($dir != null)
|
||||||
|
{
|
||||||
|
if (\Auth::check())
|
||||||
|
{
|
||||||
|
if ($dir->canUser(\Auth::user(),$permission) == false)
|
||||||
|
{
|
||||||
|
clog('navigate','danger','Vous n\'avez pas la permission d\'accéder a ce fichier',\Auth::user()->id);
|
||||||
|
return redirect('/admin')->with('error','Vous n\'avez pas la permission d\'accéder a ce fichier');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (strpos($dir->getPermission('rank.0'),$permission) === false)
|
||||||
|
{
|
||||||
|
clog('navigate','danger','Un utilisateur non authentifié a tenter de télécharger un fichier privé','0');
|
||||||
|
abort(401,'Vous n\'avez pas la permission d\'accéder a ce fichier');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
if (\Auth::check())
|
||||||
|
{
|
||||||
|
if (\Auth::user()->permission('config_edit'))
|
||||||
|
{
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
abort(401,'Vous n\'avez pas la permission d\'accéder a ce fichier');
|
||||||
|
}
|
||||||
|
abort(500);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
clog('navigate','danger','Google Drive n\'est pas activé ou les identifiants sont incorrect',\Auth::user()->id);
|
||||||
|
return redirect('/admin')->with('error','Google Drive n\'est pas activé ou les identifiants sont incorrect');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -48,6 +48,7 @@ function clog(string $type,string $result,string $event,$user_id = null,$obj_typ
|
|||||||
$log->user_id = \Auth::User()->id;
|
$log->user_id = \Auth::User()->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($obj_type != null)
|
if ($obj_type != null)
|
||||||
{
|
{
|
||||||
$log->logable_type = $obj_type;
|
$log->logable_type = $obj_type;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
"php": "^7.2",
|
"php": "^7.2",
|
||||||
"barryvdh/laravel-dompdf": "^0.8.4",
|
"barryvdh/laravel-dompdf": "^0.8.4",
|
||||||
"barryvdh/laravel-ide-helper": "v2.6.6",
|
"barryvdh/laravel-ide-helper": "v2.6.6",
|
||||||
|
"davejamesmiller/laravel-breadcrumbs": "5.3.1",
|
||||||
"fideloper/proxy": "^4.0",
|
"fideloper/proxy": "^4.0",
|
||||||
"guzzlehttp/guzzle": "^6.3",
|
"guzzlehttp/guzzle": "^6.3",
|
||||||
"laravel/framework": "^6.0",
|
"laravel/framework": "^6.0",
|
||||||
|
|||||||
105
composer.lock
generated
105
composer.lock
generated
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "57f87b1252c823a7d2a41bf3f850e726",
|
"content-hash": "1f2a06232956fd23a3faa4bba05f8f95",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "barryvdh/laravel-dompdf",
|
"name": "barryvdh/laravel-dompdf",
|
||||||
@@ -483,6 +483,65 @@
|
|||||||
],
|
],
|
||||||
"time": "2020-03-01T12:26:26+00:00"
|
"time": "2020-03-01T12:26:26+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "davejamesmiller/laravel-breadcrumbs",
|
||||||
|
"version": "5.3.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/davejamesmiller/laravel-breadcrumbs.git",
|
||||||
|
"reference": "40a73bc9b32fbbee18938dc92228dea161365245"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/davejamesmiller/laravel-breadcrumbs/zipball/40a73bc9b32fbbee18938dc92228dea161365245",
|
||||||
|
"reference": "40a73bc9b32fbbee18938dc92228dea161365245",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"facade/ignition-contracts": "^1.0",
|
||||||
|
"illuminate/support": "^5.6|^6.0",
|
||||||
|
"illuminate/view": "^5.6|^6.0",
|
||||||
|
"php": ">=7.1.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"orchestra/testbench": "^3.6",
|
||||||
|
"php-coveralls/php-coveralls": "^1.0",
|
||||||
|
"phpunit/phpunit": "^7.0|^8.0",
|
||||||
|
"spatie/phpunit-snapshot-assertions": "^2.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"providers": [
|
||||||
|
"DaveJamesMiller\\Breadcrumbs\\BreadcrumbsServiceProvider"
|
||||||
|
],
|
||||||
|
"aliases": {
|
||||||
|
"Breadcrumbs": "DaveJamesMiller\\Breadcrumbs\\Facades\\Breadcrumbs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"DaveJamesMiller\\Breadcrumbs\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Dave James Miller",
|
||||||
|
"email": "dave@davejamesmiller.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A simple Laravel-style way to create breadcrumbs.",
|
||||||
|
"homepage": "https://github.com/davejamesmiller/laravel-breadcrumbs",
|
||||||
|
"keywords": [
|
||||||
|
"laravel"
|
||||||
|
],
|
||||||
|
"time": "2019-10-20T18:25:39+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "dnoegel/php-xdg-base-dir",
|
"name": "dnoegel/php-xdg-base-dir",
|
||||||
"version": "v0.1.1",
|
"version": "v0.1.1",
|
||||||
@@ -1073,6 +1132,50 @@
|
|||||||
],
|
],
|
||||||
"time": "2020-02-13T22:36:52+00:00"
|
"time": "2020-02-13T22:36:52+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "facade/ignition-contracts",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/facade/ignition-contracts.git",
|
||||||
|
"reference": "f445db0fb86f48e205787b2592840dd9c80ded28"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/facade/ignition-contracts/zipball/f445db0fb86f48e205787b2592840dd9c80ded28",
|
||||||
|
"reference": "f445db0fb86f48e205787b2592840dd9c80ded28",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.1"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Facade\\IgnitionContracts\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Freek Van der Herten",
|
||||||
|
"email": "freek@spatie.be",
|
||||||
|
"homepage": "https://flareapp.io",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Solution contracts for Ignition",
|
||||||
|
"homepage": "https://github.com/facade/ignition-contracts",
|
||||||
|
"keywords": [
|
||||||
|
"contracts",
|
||||||
|
"flare",
|
||||||
|
"ignition"
|
||||||
|
],
|
||||||
|
"time": "2019-08-30T14:06:08+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "fideloper/proxy",
|
"name": "fideloper/proxy",
|
||||||
"version": "4.3.0",
|
"version": "4.3.0",
|
||||||
|
|||||||
75
config/breadcrumbs.php
Normal file
75
config/breadcrumbs.php
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| View Name
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Choose a view to display when Breadcrumbs::render() is called.
|
||||||
|
| Built in templates are:
|
||||||
|
|
|
||||||
|
| - 'breadcrumbs::bootstrap4' - Bootstrap 4
|
||||||
|
| - 'breadcrumbs::bootstrap3' - Bootstrap 3
|
||||||
|
| - 'breadcrumbs::bootstrap2' - Bootstrap 2
|
||||||
|
| - 'breadcrumbs::bulma' - Bulma
|
||||||
|
| - 'breadcrumbs::foundation6' - Foundation 6
|
||||||
|
| - 'breadcrumbs::materialize' - Materialize
|
||||||
|
| - 'breadcrumbs::uikit' - UIkit
|
||||||
|
| - 'breadcrumbs::json-ld' - JSON-LD Structured Data
|
||||||
|
|
|
||||||
|
| Or a custom view, e.g. '_partials/breadcrumbs'.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'view' => 'breadcrumbs::bootstrap4',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Breadcrumbs File(s)
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The file(s) where breadcrumbs are defined. e.g.
|
||||||
|
|
|
||||||
|
| - base_path('routes/breadcrumbs.php')
|
||||||
|
| - glob(base_path('breadcrumbs/*.php'))
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'files' => base_path('routes/breadcrumbs.php'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Exceptions
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Determine when to throw an exception.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
// When route-bound breadcrumbs are used but the current route doesn't have a name (UnnamedRouteException)
|
||||||
|
'unnamed-route-exception' => false,
|
||||||
|
|
||||||
|
// When route-bound breadcrumbs are used and the matching breadcrumb doesn't exist (InvalidBreadcrumbException)
|
||||||
|
'missing-route-bound-breadcrumb-exception' => false,
|
||||||
|
|
||||||
|
// When a named breadcrumb is used but doesn't exist (InvalidBreadcrumbException)
|
||||||
|
'invalid-named-breadcrumb-exception' => true,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Classes
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Subclass the default classes for more advanced customisations.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Manager
|
||||||
|
'manager-class' => DaveJamesMiller\Breadcrumbs\BreadcrumbsManager::class,
|
||||||
|
|
||||||
|
// Generator
|
||||||
|
'generator-class' => DaveJamesMiller\Breadcrumbs\BreadcrumbsGenerator::class,
|
||||||
|
|
||||||
|
];
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateGoogleDriveFileTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('google_drive_files', function (Blueprint $table) {
|
||||||
|
$table->string('id');
|
||||||
|
$table->index('id');
|
||||||
|
$table->string('type');
|
||||||
|
$table->string('name');
|
||||||
|
$table->string('path')->default('');
|
||||||
|
$table->string('rank_permission');
|
||||||
|
$table->string('job_permission');
|
||||||
|
$table->string('user_permission');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('google_drive_file');
|
||||||
|
}
|
||||||
|
}
|
||||||
19
public/css/custom.css
vendored
19
public/css/custom.css
vendored
@@ -57,6 +57,10 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.no-cursor {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
.word-wrap {
|
.word-wrap {
|
||||||
white-space: normal;
|
white-space: normal;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
@@ -140,7 +144,7 @@
|
|||||||
top: 36px;
|
top: 36px;
|
||||||
left: 36px;
|
left: 36px;
|
||||||
width: 0;
|
width: 0;
|
||||||
height: 0;
|
height: 0;progress-bar
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
100% {
|
100% {
|
||||||
@@ -1816,3 +1820,16 @@ td{
|
|||||||
h2 {
|
h2 {
|
||||||
text-transform: capitalize !important;
|
text-transform: capitalize !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.breadcrumb {
|
||||||
|
margin: auto;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-wrapper {
|
||||||
|
max-width: 75%;
|
||||||
|
}
|
||||||
|
.progress-bar-top {
|
||||||
|
margin-bottom: -4px;
|
||||||
|
border-radius: 6px 6px 0px 0px;
|
||||||
|
}
|
||||||
BIN
public/images/C-CMS.png
Normal file
BIN
public/images/C-CMS.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
BIN
public/images/C-CMS_G.png
Normal file
BIN
public/images/C-CMS_G.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
77
public/js/plugins/drive-explorer.js
vendored
77
public/js/plugins/drive-explorer.js
vendored
@@ -1,8 +1,9 @@
|
|||||||
var folderHistory = [];
|
var folderHistory = false;
|
||||||
var path = '';
|
var path = '';
|
||||||
var currentFolder = '';
|
var currentFolder = '';
|
||||||
var folderGoBack = [];
|
var folderGoBack = [];
|
||||||
|
var permissionModalHtml = null;
|
||||||
|
var progressBar = 0;
|
||||||
function init(folder)
|
function init(folder)
|
||||||
{
|
{
|
||||||
loadFolder(folder);
|
loadFolder(folder);
|
||||||
@@ -10,18 +11,32 @@ function init(folder)
|
|||||||
}
|
}
|
||||||
|
|
||||||
function loadHistory() {
|
function loadHistory() {
|
||||||
|
updateProgressBar(progressBar+5);
|
||||||
|
let btnBack = $('#backbtn');
|
||||||
|
btnBack.prop('disabled','true');
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
url: '/api/drive/patharray?api_token=' + api_token,
|
url: '/api/drive/patharray?api_token=' + api_token,
|
||||||
success: function (rawpath) {
|
success: function (rawpath) {
|
||||||
|
updateProgressBar(progressBar+30);
|
||||||
var path = JSON.parse(rawpath);
|
var path = JSON.parse(rawpath);
|
||||||
Object.keys(path).forEach(function (item) {
|
Object.keys(path).forEach(function (item) {
|
||||||
var dir = path[item].dirname.split('/');
|
var dir = path[item].dirname.split('/');
|
||||||
folderGoBack[path[item].basename] = dir[dir.length - 1];
|
folderGoBack[path[item].basename] = dir[dir.length - 1];
|
||||||
});
|
});
|
||||||
|
folderHistory = true;
|
||||||
|
updateProgressBar(progressBar+10);
|
||||||
|
if(!currentFolder == '' || !currentFolder == 'root')
|
||||||
|
{
|
||||||
|
btnBack.removeAttr('disabled');
|
||||||
|
}
|
||||||
|
updateProgressBar(progressBar+5);
|
||||||
},
|
},
|
||||||
error: function () {
|
error: function () {
|
||||||
showNotification('error', 'Impossible de charger la hiérachie des dossiers', 'top', 'center')
|
if (folderHistory)
|
||||||
|
{
|
||||||
|
showNotification('error', 'Impossible de charger la hiérachie des dossiers', 'top', 'center')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -30,26 +45,35 @@ function loadFolder(folder) {
|
|||||||
if (folder != undefined)
|
if (folder != undefined)
|
||||||
{
|
{
|
||||||
showLoader();
|
showLoader();
|
||||||
|
updateProgressBar(progressBar+5);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
url: '/api/drive/folders/'+folder+'?api_token=' + api_token,
|
url: '/api/drive/folders/'+folder+'?api_token=' + api_token,
|
||||||
success: function (template) {
|
success: function (template) {
|
||||||
// Load Explorer Content
|
// Load Explorer Content
|
||||||
|
updateProgressBar(progressBar+30);
|
||||||
$(".drive-explorer").html(template);
|
$(".drive-explorer").html(template);
|
||||||
currentFolder = folder;
|
currentFolder = folder;
|
||||||
window.history.pushState("object or string", "Page Title", "/admin/drive/"+folder);
|
window.history.pushState("object or string", "Page Title", "/admin/drive/"+folder);
|
||||||
|
updateProgressBar(progressBar+5);
|
||||||
hideLoader();
|
hideLoader();
|
||||||
|
|
||||||
$('.currentDir').attr('value',folder);
|
$('.currentDir').attr('value',folder);
|
||||||
|
|
||||||
if(currentFolder == '' || currentFolder == 'root')
|
if (folderHistory)
|
||||||
{
|
{
|
||||||
$('#backbtn').prop('disabled','true');
|
if((currentFolder == '' || currentFolder == 'root'))
|
||||||
}
|
{
|
||||||
else
|
$('#backbtn').prop('disabled','true');
|
||||||
{
|
}
|
||||||
$('#backbtn').removeAttr('disabled');
|
else
|
||||||
|
{
|
||||||
|
console.log('wtf');
|
||||||
|
console.log(folderGoBack);
|
||||||
|
$('#backbtn').removeAttr('disabled');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
updateProgressBar(progressBar+10);
|
||||||
},
|
},
|
||||||
error: function () {
|
error: function () {
|
||||||
showNotification('error', 'Impossible de charger le dossier '+folder, 'top', 'center')
|
showNotification('error', 'Impossible de charger le dossier '+folder, 'top', 'center')
|
||||||
@@ -123,3 +147,38 @@ function deleteFolder(folder)
|
|||||||
function refreshFolder() {
|
function refreshFolder() {
|
||||||
loadFolder(currentFolder);
|
loadFolder(currentFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function editPermission(folder,subject,id)
|
||||||
|
{
|
||||||
|
$('#permissionModal').on('hidden.bs.modal', function (e) {
|
||||||
|
$('#permissionModalHtml').html(permissionModalHtml);
|
||||||
|
});
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: '/api/drive/'+folder+'/permission/'+subject+'/'+id+'?api_token=' + api_token,
|
||||||
|
success: function (modal) {
|
||||||
|
permissionModalHtml = $('#permissionModalHtml').html();
|
||||||
|
$('#permissionModalHtml').html(modal);
|
||||||
|
$('#permissionModal').modal('show');
|
||||||
|
},
|
||||||
|
error: function () {
|
||||||
|
showNotification('error', 'Impossible de charger le dossier '+folder, 'top', 'center')
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateProgressBar(value)
|
||||||
|
{
|
||||||
|
progressBar = value;
|
||||||
|
let bar = $('#progress-bar');
|
||||||
|
bar.css('width',value+"%");
|
||||||
|
if (progressBar >= 100)
|
||||||
|
{
|
||||||
|
$('.progress').fadeOut(1500);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$('.progress').fadeIn(650);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
19
resources/custom.css
vendored
19
resources/custom.css
vendored
@@ -57,6 +57,10 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.no-cursor {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
.word-wrap {
|
.word-wrap {
|
||||||
white-space: normal;
|
white-space: normal;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
@@ -140,7 +144,7 @@
|
|||||||
top: 36px;
|
top: 36px;
|
||||||
left: 36px;
|
left: 36px;
|
||||||
width: 0;
|
width: 0;
|
||||||
height: 0;
|
height: 0;progress-bar
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
100% {
|
100% {
|
||||||
@@ -1816,3 +1820,16 @@ td{
|
|||||||
h2 {
|
h2 {
|
||||||
text-transform: capitalize !important;
|
text-transform: capitalize !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.breadcrumb {
|
||||||
|
margin: auto;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-wrapper {
|
||||||
|
max-width: 75%;
|
||||||
|
}
|
||||||
|
.progress-bar-top {
|
||||||
|
margin-bottom: -4px;
|
||||||
|
border-radius: 6px 6px 0px 0px;
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header card-header-primary">
|
<div class="card-header card-header-primary">
|
||||||
<h4>Configuration Générale</h4>
|
<h4>Apparence</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body mt-5">
|
<div class="card-body mt-5">
|
||||||
<form action="/admin/config/customisation" method="POST">
|
<form action="/admin/config/customisation" method="POST">
|
||||||
@@ -27,27 +27,6 @@
|
|||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('breadcrumb')
|
|
||||||
<div class="breadcrumbs">
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<div class="page-header float-left">
|
|
||||||
<div class="page-title">
|
|
||||||
<h1>Configuration Générale</h1>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<div class="page-header float-right">
|
|
||||||
<div class="page-title">
|
|
||||||
<ol class="breadcrumb text-right">
|
|
||||||
<li class="active">Configuration/Générale</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endsection
|
|
||||||
|
|
||||||
@section('custom_scripts')
|
@section('custom_scripts')
|
||||||
<script>
|
<script>
|
||||||
function saveChange(pPerm) {
|
function saveChange(pPerm) {
|
||||||
|
|||||||
@@ -1,32 +1,53 @@
|
|||||||
<table class="table table-hover dt-responsive material-datatables w-100" id="table">
|
<table class="table table-hover table-responsive dt-responsive material-datatables w-100 d-sm-table" id="table">
|
||||||
<thead class="thead-dark">
|
<thead class="thead-dark">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="text-center explorerType"><strong>#</strong></td>
|
<td class="text-center explorerType"><strong>#</strong></td>
|
||||||
<td class="text-left">Nom</td>
|
<td class="text-left">Nom</td>
|
||||||
<td class="text-center">Dernière modification</td>
|
<td class="text-center">Dernière modification</td>
|
||||||
<td></td>
|
<td class="td-actions text-right">
|
||||||
|
@if(\App\GoogleDriveFile::getPermForAuthUser($currentDir,'p'))
|
||||||
|
<div class="dropdown">
|
||||||
|
<div id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
|
<i class="fas fa-ellipsis-v fa-2x ml-3 text-gray" style="margin-right: .8rem !important;cursor: pointer;margin-top: -10px;margin-bottom: -6px"></i>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
|
||||||
|
<a class="dropdown-item" href="/admin/drive/{{$currentDir}}/permission">
|
||||||
|
<i class="fas fa-lock mr-2"></i></i>Permission
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item text-danger" onclick="deleteFolder('{{ $currentDir }}')">
|
||||||
|
<i class="fas fa-trash-alt mr-2"></i>Supprimer
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-lock text-danger mr-2" data-toggle="tooltip" data-placement="left" title="Vous n'avez pas les permissions nécessaires pour modifier ce dossier"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@foreach($directories as $directory)
|
@foreach($directories as $directory)
|
||||||
<tr class="context-menu-one">
|
<tr class="context-menu-one">
|
||||||
<td onclick="loadFolder('{{$directory['basename']}}')" style="cursor: pointer;" ><i class="fas fa-folder fa-2x"></i></td>
|
<td @if(\App\GoogleDriveFile::getPermForAuthUser($directory['basename'],'r')) onclick="loadFolder('{{$directory['basename']}}')" @endif style="cursor: pointer;" ><i class="fas fa-folder fa-2x"></i></td>
|
||||||
<td onclick="loadFolder('{{$directory['basename']}}')" style="cursor: pointer;" >{{$directory['name']}}</td>
|
<td @if(\App\GoogleDriveFile::getPermForAuthUser($directory['basename'],'r')) onclick="loadFolder('{{$directory['basename']}}')" @endif style="cursor: pointer;" >{{$directory['name']}}</td>
|
||||||
<td class="text-center" onclick="loadFolder('{{$directory['basename']}}')" style="cursor: pointer;" ><span data-toggle="tooltip" data-placement="bottom" title="{{date('r',$directory['timestamp'])}}">{{strftime('%e %b %Y',$directory['timestamp'])}}</span></td>
|
<td class="text-center" onclick="loadFolder('{{$directory['basename']}}')" style="cursor: pointer;" ><span data-toggle="tooltip" data-placement="bottom" title="{{date('r',$directory['timestamp'])}}">{{strftime('%e %b %Y',$directory['timestamp'])}}</span></td>
|
||||||
<td class="td-actions text-right">
|
<td class="td-actions text-right">
|
||||||
@if($directory['filename'] != '🔒')
|
@if(\App\GoogleDriveFile::getPermForAuthUser($directory['basename'],'p'))
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
<div id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<div id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<i class="fas fa-ellipsis-v fa-2x ml-3 text-gray" style="margin-right: .8rem !important;cursor: pointer;"></i>
|
<i class="fas fa-ellipsis-v fa-2x ml-3 text-gray" style="margin-right: .8rem !important;cursor: pointer;"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
|
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
|
||||||
|
<a class="dropdown-item" href="/admin/drive/{{$directory['basename']}}/permission">
|
||||||
|
<i class="fas fa-lock mr-2"></i></i>Permission
|
||||||
|
</a>
|
||||||
<a class="dropdown-item text-danger" onclick="deleteFolder('{{ $directory['basename'] }}')">
|
<a class="dropdown-item text-danger" onclick="deleteFolder('{{ $directory['basename'] }}')">
|
||||||
<i class="fas fa-trash-alt mr-2"></i>Supprimer
|
<i class="fas fa-trash-alt mr-2"></i>Supprimer
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@else
|
@else
|
||||||
<i class="fas fa-lock text-danger mr-2"></i>
|
<i class="fas fa-lock text-danger mr-2" data-toggle="tooltip" data-placement="left" title="Vous n'avez pas les permissions nécessaires pour modifier ce dossier"></i>
|
||||||
@endif
|
@endif
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -49,7 +70,10 @@
|
|||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
Taille : {{GetSizeName($file['size'])}}
|
Taille : {{GetSizeName($file['size'])}}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4 offset-md-4 text-right">
|
<div class="col-md-4">
|
||||||
|
Permission : rw
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 text-right">
|
||||||
<a href="/file/get?f={{urlencode($file['name'])}}&d={{$file['dirname']}}" rel="tooltip" class="btn btn-info">
|
<a href="/file/get?f={{urlencode($file['name'])}}&d={{$file['dirname']}}" rel="tooltip" class="btn btn-info">
|
||||||
<i class="material-icons">cloud_download</i>
|
<i class="material-icons">cloud_download</i>
|
||||||
</a>
|
</a>
|
||||||
@@ -61,6 +85,13 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
@if(count($directories) == 0 && count($files) == 0)
|
||||||
|
<tr>
|
||||||
|
<td colspan="4" class="text-center m-2">
|
||||||
|
Le dossier est vide
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endif
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<small class="float-right mr-4">Dernière mise à jour {{date('r')}}</small>
|
<small class="float-right mr-4">Dernière mise à jour {{date('r')}}</small>
|
||||||
|
|||||||
@@ -2,13 +2,16 @@
|
|||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
<div class="progress progress-bar-top">
|
||||||
|
<div id="progress-bar" class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div>
|
||||||
|
</div>
|
||||||
<div class="row ml-3 mr-3 mt-3">
|
<div class="row ml-3 mr-3 mt-3">
|
||||||
<div class="col-1 d-inline-flex">
|
<div class="col-sm-1 d-inline-flex">
|
||||||
<button id="backbtn" type="button" onclick="goBack()" class="btn btn-secondary" style="border-radius: 50% !important; width: 3.5rem;height: 3.5rem;margin-bottom: -10px;margin-top: -2px"><i class="fas fa-arrow-left fa-2x" aria-hidden="true" style="margin-left: -0.6rem;"></i></button>
|
<button id="backbtn" type="button" onclick="goBack()" class="btn btn-secondary" style="border-radius: 50% !important; width: 3.5rem;height: 3.5rem;margin-bottom: -10px;margin-top: -2px" disabled><i class="fas fa-arrow-left fa-2x" aria-hidden="true" style="margin-left: -0.6rem;"></i></button>
|
||||||
<button id="backbtn" type="button" onclick="refreshFolder()" class="border-0 bg-transparent ml-3 hover-spin cursor active-spin no-outline" style="margin-bottom: -10px;margin-top: -2px;font-size: 1.1rem"><i class="fas fa-sync-alt"></i></button>
|
<button id="refreshbtn" type="button" onclick="refreshFolder()" class="border-0 bg-transparent ml-3 hover-spin cursor active-spin no-outline" style="margin-bottom: -10px;margin-top: -2px;font-size: 1.1rem"><i class="fas fa-sync-alt"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-4 d-flex justify-content-end offset-7">
|
<div class="col-md-4 col-sm d-flex justify-content-end offset-md-7 mt-2 mt-sm-0">
|
||||||
<div class="dropdown mr-2">
|
<div class="dropdown mr-md-2">
|
||||||
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<i class="fas fa-plus"></i> Nouveau
|
<i class="fas fa-plus"></i> Nouveau
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
269
resources/views/admin/files/Google Drive/permission.blade.php
Normal file
269
resources/views/admin/files/Google Drive/permission.blade.php
Normal file
@@ -0,0 +1,269 @@
|
|||||||
|
@extends('layouts.admin.main')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h4 class="card-title">Permission du dossier: {{$dir->name}}</h4>
|
||||||
|
<p class="category">/{{$dir->path}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<h5>Permission des grades</h5>
|
||||||
|
<table class="table table-striped w-100">
|
||||||
|
<thead class="table-dark">
|
||||||
|
<tr class="text-center">
|
||||||
|
<td class="text-left" style="width: 25%">Grade</td>
|
||||||
|
<td >Lecture</td>
|
||||||
|
<td>Écriture</td>
|
||||||
|
<td>Gestion</td>
|
||||||
|
<td style="width: 6rem;">
|
||||||
|
<a href="/admin/ocom/edit" class="btn btn-primary btn-fab btn-fab-mini btn-round m-0">
|
||||||
|
<i class="material-icons">add</i>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="text-center">
|
||||||
|
<td class="text-left">
|
||||||
|
Utilisateur non authentifié
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if(isset($dir->rank_permission[0]))
|
||||||
|
@if(strpos($dir->rank_permission[0],'r') !== false)
|
||||||
|
<i class="fas fa-check-circle fa-2x text-success"></i>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if(isset($dir->rank_permission[0]))
|
||||||
|
@if(strpos($dir->rank_permission[0],'w') !== false)
|
||||||
|
<i class="fas fa-check-circle fa-2x text-success"></i>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if(isset($dir->rank_permission[0]))
|
||||||
|
@if(strpos($dir->rank_permission[0],'p') !== false)
|
||||||
|
<i class="fas fa-check-circle fa-2x text-success"></i>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td class="text-right">
|
||||||
|
<button class="btn btn-primary btn-fab btn-fab-mini btn-round" onclick="editPermission('{{$dir->id}}','rank','0')">
|
||||||
|
<i class="material-icons">edit</i>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-danger btn-fab btn-fab-mini btn-round no-cursor" disabled data-toggle="tooltip" data-placement="bottom" title="Vous ne pouvez pas supprimer les permissions des utilisteurs non authentifié">
|
||||||
|
<i class="material-icons">delete</i>
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@foreach($dir->rank_permission as $key => $rank)
|
||||||
|
@if($key != 0)
|
||||||
|
<tr class="text-center">
|
||||||
|
<td class="text-left">
|
||||||
|
{{\App\Rank::find($key)->name}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if(strpos($rank,'r') !== false)
|
||||||
|
<i class="fas fa-check-circle fa-2x text-success"></i>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if(strpos($rank,'w') !== false)
|
||||||
|
<i class="fas fa-check-circle fa-2x text-success"></i>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if(strpos($rank,'p') !== false)
|
||||||
|
<i class="fas fa-check-circle fa-2x text-success"></i>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td class="text-right">
|
||||||
|
<button class="btn btn-primary btn-fab btn-fab-mini btn-round" onclick="editPermission('{{$dir->id}}','rank','{{$key}}')">
|
||||||
|
<i class="material-icons">edit</i>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-danger btn-fab btn-fab-mini btn-round">
|
||||||
|
<i class="material-icons">delete</i>
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<h5 class="mt-5">Permission des postes</h5>
|
||||||
|
<table class="table table-striped w-100">
|
||||||
|
<thead class="table-dark">
|
||||||
|
<tr class="text-center">
|
||||||
|
<td class="text-left" style="width: 25%">Poste</td>
|
||||||
|
<td >Lecture</td>
|
||||||
|
<td>Écriture</td>
|
||||||
|
<td>Gestion</td>
|
||||||
|
<td style="width: 6rem;">
|
||||||
|
<a href="/admin/ocom/edit" class="btn btn-primary btn-fab btn-fab-mini btn-round m-0">
|
||||||
|
<i class="material-icons">add</i>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@if(count($dir->job_permission) < 1)
|
||||||
|
<tr>
|
||||||
|
<td colspan="5" class="text-center">
|
||||||
|
Aucune permission de poste
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endif
|
||||||
|
@foreach($dir->job_permission as $key => $rank)
|
||||||
|
<tr class="text-center">
|
||||||
|
<td class="text-left">
|
||||||
|
{{\App\Job::find($key)->name}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if(strpos($rank,'r') !== false)
|
||||||
|
<i class="fas fa-check-circle fa-2x text-success"></i>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if(strpos($rank,'w') !== false)
|
||||||
|
<i class="fas fa-check-circle fa-2x text-success"></i>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if(strpos($rank,'p') !== false)
|
||||||
|
<i class="fas fa-check-circle fa-2x text-success"></i>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td class="text-right">
|
||||||
|
<button class="btn btn-primary btn-fab btn-fab-mini btn-round" onclick="editPermission('{{$dir->id}}','job','{{$key}}')">
|
||||||
|
<i class="material-icons">edit</i>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-danger btn-fab btn-fab-mini btn-round">
|
||||||
|
<i class="material-icons">delete</i>
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<h5 class="mt-5">Permission des utilisateurs</h5>
|
||||||
|
<table class="table table-striped w-100">
|
||||||
|
<thead class="table-dark">
|
||||||
|
<tr class="text-center">
|
||||||
|
<td class="text-left" style="width: 25%">Utilisateurs</td>
|
||||||
|
<td >Lecture</td>
|
||||||
|
<td>Écriture</td>
|
||||||
|
<td>Gestion</td>
|
||||||
|
<td style="width: 6rem;">
|
||||||
|
<a href="/admin/ocom/edit" class="btn btn-primary btn-fab btn-fab-mini btn-round m-0">
|
||||||
|
<i class="material-icons">add</i>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@if(count($dir->user_permission) < 1)
|
||||||
|
<tr>
|
||||||
|
<td colspan="5" class="text-center">
|
||||||
|
Aucune permission d'utilisateur
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endif
|
||||||
|
@foreach($dir->user_permission as $key => $rank)
|
||||||
|
<tr class="text-center">
|
||||||
|
<td class="text-left">
|
||||||
|
{{\App\User::find($key)->fullname()}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if(strpos($rank,'r') !== false)
|
||||||
|
<i class="fas fa-check-circle fa-2x text-success"></i>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if(strpos($rank,'w') !== false)
|
||||||
|
<i class="fas fa-check-circle fa-2x text-success"></i>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if(strpos($rank,'p') !== false)
|
||||||
|
<i class="fas fa-check-circle fa-2x text-success"></i>
|
||||||
|
@else
|
||||||
|
<i class="fas fa-times-circle fa-2x text-danger"></i>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td class="text-right">
|
||||||
|
<button class="btn btn-primary btn-fab btn-fab-mini btn-round" onclick="editPermission('{{$dir->id}}','user','{{$key}}')">
|
||||||
|
<i class="material-icons">edit</i>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-danger btn-fab btn-fab-mini btn-round">
|
||||||
|
<i class="material-icons">delete</i>
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bd-example-modal-lg">Large modal</button>
|
||||||
|
|
||||||
|
<div id="permissionModal" class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-lg">
|
||||||
|
<div class="modal-content" id="permissionModalHtml">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Chargement ...</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
@loaderDot
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-primary" disabled>Sauvegarder</button>
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('breadcrumb')
|
||||||
|
Fichier / Google Drive
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('custom_scripts')
|
||||||
|
<script src="/js/plugins/jquery.ui.position.min.js"></script>
|
||||||
|
<script src="/js/plugins/jquery.contextMenu.min.js"></script>
|
||||||
|
<script src="/js/plugins/drive-explorer.js"></script>
|
||||||
|
@endsection
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Modification des permissions</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<form action="/admin/drive/{{$folder->id}}/permission/{{$s}}/{{$subject->id}}" method="post">
|
||||||
|
@csrf
|
||||||
|
@method('patch')
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-3">
|
||||||
|
@switch($s)
|
||||||
|
@case('rank')
|
||||||
|
Grade : {{$subject->name}}
|
||||||
|
@break
|
||||||
|
@case('job')
|
||||||
|
Poste : {{$subject->name}}
|
||||||
|
@break
|
||||||
|
@case('user')
|
||||||
|
Utilisateur : {{$subject->fullname()}}
|
||||||
|
@break
|
||||||
|
@endswitch
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="togglebutton row">
|
||||||
|
<div class="col-3">
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" @if(strpos($perm,'r') !== false) checked @endif>
|
||||||
|
<span class="toggle"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<label>Peux consulter les fichiers a l'intérieur du dossier</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="togglebutton row">
|
||||||
|
<div class="col-3">
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" @if(strpos($perm,'w') !== false) checked @endif>
|
||||||
|
<span class="toggle"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<label>Peux modifier les fichiers a l'intérieur du dossier</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="togglebutton row">
|
||||||
|
<div class="col-3">
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" @if(strpos($perm,'p') !== false) checked @endif>
|
||||||
|
<span class="toggle"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<label>Peux gérer le dossier</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="submit" class="btn btn-primary">Sauvegarder</button>
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
<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>
|
||||||
<td>
|
<td>
|
||||||
<a href="/admin/ocom/edit/{{$ocom->id}}" class="btn btn-primary btn-fab btn-fab-mini btn-round">
|
<a href="/admin/ocom/{{$ocom->id}}/edit" class="btn btn-primary btn-fab btn-fab-mini btn-round">
|
||||||
<i class="material-icons">edit</i>
|
<i class="material-icons">edit</i>
|
||||||
</a>
|
</a>
|
||||||
<button class="btn btn-danger btn-fab btn-fab-mini btn-round" onclick="deleteOCOM({{$ocom->id}})">
|
<button class="btn btn-danger btn-fab btn-fab-mini btn-round" onclick="deleteOCOM({{$ocom->id}})">
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
<p>{{$ocom->objectif_rendement}}</p>
|
<p>{{$ocom->objectif_rendement}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8 text-right">
|
<div class="col-md-8 text-right">
|
||||||
<a href="/admin/ocom/edit/{{$ocom->id}}" class="btn btn-warning">Modifier</a>
|
<a href="/admin/ocom/{{$ocom->id}}/edit" class="btn btn-warning">Modifier</a>
|
||||||
<button type="button" class="btn btn-danger" onclick="deleteOCOM('{{$ocom->id}}')">Supprimer</button>
|
<button type="button" class="btn btn-danger" onclick="deleteOCOM('{{$ocom->id}}')">Supprimer</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
|
|||||||
@@ -65,10 +65,10 @@
|
|||||||
<span class="fileinput-filename"></span>
|
<span class="fileinput-filename"></span>
|
||||||
</div>
|
</div>
|
||||||
<span class="input-group-append">
|
<span class="input-group-append">
|
||||||
<span class="input-group-text fileinput-exists" data-dismiss="fileinput">Remove</span>
|
<span class="input-group-text fileinput-exists cursor" data-dismiss="fileinput">Remove</span>
|
||||||
<span class="input-group-text btn-file">
|
<span class="input-group-text btn-file">
|
||||||
<span class="fileinput-new">Select file</span>
|
<span class="fileinput-new cursor">Select file</span>
|
||||||
<span class="fileinput-exists">Change</span>
|
<span class="fileinput-exists cursor">Change</span>
|
||||||
<input type="file" name="file_msg" multiple>
|
<input type="file" name="file_msg" multiple>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -2,6 +2,109 @@
|
|||||||
|
|
||||||
@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.5</h3>
|
||||||
|
<p class="category">2019-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é
|
||||||
|
<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 breadcrumb
|
||||||
|
</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 base de donnée 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 des pages d'erreurs
|
||||||
|
</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'horaire vers la version 3
|
||||||
|
</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 vers Google Drive
|
||||||
|
</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 permission
|
||||||
|
</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 multiples bugs</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
</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">
|
||||||
|
|||||||
@@ -1,90 +1,9 @@
|
|||||||
<html lang="en"><head>
|
@extends('errors.layout')
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
|
|
||||||
<title>Error</title>
|
@section('title', __('Non autorisé'))
|
||||||
|
@section('code')
|
||||||
<!-- Fonts -->
|
<span>4</span><span>0</span><span>1</span>
|
||||||
<link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
|
@endsection
|
||||||
|
@section('message', 'Nous sommes désolé, vous n\'avez pas l\'autorisation d\'être ici.')
|
||||||
<!-- Styles -->
|
@section('error',$exception->getMessage())
|
||||||
<style>
|
@section('url','https://developer.mozilla.org/fr/docs/Web/HTTP/Status/401')
|
||||||
html, body {
|
|
||||||
background-color: #fff;
|
|
||||||
color: #636b6f;
|
|
||||||
font-family: 'Raleway', sans-serif;
|
|
||||||
font-weight: 100;
|
|
||||||
height: 100vh;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.full-height {
|
|
||||||
height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.flex-center {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.position-ref {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-size: 36px;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
.loader{
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.loader-bg{
|
|
||||||
width: 70px;
|
|
||||||
margin-top: 50px;
|
|
||||||
margin-bottom: 50px;
|
|
||||||
}
|
|
||||||
.loader-spinner {
|
|
||||||
position: relative;
|
|
||||||
border: 16px solid #f3f3f3;
|
|
||||||
border-top: 16px solid #272c33;
|
|
||||||
border-radius: 50%;
|
|
||||||
width: 120px;
|
|
||||||
height: 120px;
|
|
||||||
animation: spin 2s linear infinite;
|
|
||||||
left: 0px;
|
|
||||||
right: 0px;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
top: -163px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
|
||||||
0% { transform: rotate(0deg); }
|
|
||||||
100% { transform: rotate(360deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="flex-center position-ref full-height">
|
|
||||||
<div class="content">
|
|
||||||
<div class="title">
|
|
||||||
<h1 class="glitch" data-text="500" style="font-size: 20rem;margin:0px;">401</h1>
|
|
||||||
</div>
|
|
||||||
<div class="loader">
|
|
||||||
<img class="loader-bg" src="/images/leaf_of_canada.png"></img>
|
|
||||||
<div class="loader-spinner"></div>
|
|
||||||
</div>
|
|
||||||
<div class="title">
|
|
||||||
Oups ... Vous n'avez pas l'autorisation de venir ici {{ $exception->getMessage() }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body></html>
|
|
||||||
|
|||||||
9
resources/views/errors/403.blade.php
Normal file
9
resources/views/errors/403.blade.php
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
@extends('errors.layout')
|
||||||
|
|
||||||
|
@section('title', __('Accès refusé'))
|
||||||
|
@section('code')
|
||||||
|
<span>4</span><span>0</span><span>3</span>
|
||||||
|
@endsection
|
||||||
|
@section('message', 'Nous sommes désolé, le serveur a compris la requête, mais refuse de l\'exécuter.')
|
||||||
|
@section('error',$exception->getMessage())
|
||||||
|
@section('url','https://developer.mozilla.org/fr/docs/Web/HTTP/Status/403')
|
||||||
@@ -1,90 +1,9 @@
|
|||||||
<html lang="en"><head>
|
@extends('errors.layout')
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
|
|
||||||
<title>Error</title>
|
@section('title', __('Page introuvable'))
|
||||||
|
@section('code')
|
||||||
<!-- Fonts -->
|
<span>4</span><span>0</span><span>4</span>
|
||||||
<link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
|
@endsection
|
||||||
|
@section('message', 'Nous sommes désolé, la page demandée ne semble pas exister.')
|
||||||
<!-- Styles -->
|
@section('error',$exception->getMessage())
|
||||||
<style>
|
@section('url','https://developer.mozilla.org/fr/docs/Web/HTTP/Status/404')
|
||||||
html, body {
|
|
||||||
background-color: #fff;
|
|
||||||
color: #636b6f;
|
|
||||||
font-family: 'Raleway', sans-serif;
|
|
||||||
font-weight: 100;
|
|
||||||
height: 100vh;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.full-height {
|
|
||||||
height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.flex-center {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.position-ref {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-size: 36px;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
.loader{
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.loader-bg{
|
|
||||||
width: 70px;
|
|
||||||
margin-top: 50px;
|
|
||||||
margin-bottom: 50px;
|
|
||||||
}
|
|
||||||
.loader-spinner {
|
|
||||||
position: relative;
|
|
||||||
border: 16px solid #f3f3f3;
|
|
||||||
border-top: 16px solid #272c33;
|
|
||||||
border-radius: 50%;
|
|
||||||
width: 120px;
|
|
||||||
height: 120px;
|
|
||||||
animation: spin 2s linear infinite;
|
|
||||||
left: 0px;
|
|
||||||
right: 0px;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
top: -163px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
|
||||||
0% { transform: rotate(0deg); }
|
|
||||||
100% { transform: rotate(360deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="flex-center position-ref full-height">
|
|
||||||
<div class="content">
|
|
||||||
<div class="title">
|
|
||||||
<h1 class="glitch" data-text="500" style="font-size: 20rem;margin:0px;">404</h1>
|
|
||||||
</div>
|
|
||||||
<div class="loader">
|
|
||||||
<img class="loader-bg" src="/images/leaf_of_canada.png"></img>
|
|
||||||
<div class="loader-spinner"></div>
|
|
||||||
</div>
|
|
||||||
<div class="title">
|
|
||||||
Oups ... Il n'y a malheureusement rien là {{ $exception->getMessage() }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body></html>
|
|
||||||
|
|||||||
9
resources/views/errors/419.blade.php
Normal file
9
resources/views/errors/419.blade.php
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
@extends('errors.layout')
|
||||||
|
|
||||||
|
@section('title', __('Page expiré'))
|
||||||
|
@section('code')
|
||||||
|
<span>4</span><span>1</span><span>9</span>
|
||||||
|
@endsection
|
||||||
|
@section('message', 'Nous sommes désolé, la page a expiré.')
|
||||||
|
@section('error',$exception->getMessage())
|
||||||
|
@section('url','')
|
||||||
9
resources/views/errors/429.blade.php
Normal file
9
resources/views/errors/429.blade.php
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
@extends('errors.layout')
|
||||||
|
|
||||||
|
@section('title', __('Trop de requêtes'))
|
||||||
|
@section('code')
|
||||||
|
<span>4</span><span>2</span><span>9</span>
|
||||||
|
@endsection
|
||||||
|
@section('message', 'Nous sommes désolé, mais le client a émis trop de requêtes. ')
|
||||||
|
@section('error',$exception->getMessage())
|
||||||
|
@section('url','https://developer.mozilla.org/fr/docs/Web/HTTP/Status/429')
|
||||||
@@ -1,90 +1,10 @@
|
|||||||
<html lang="en"><head>
|
@extends('errors.layout')
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
|
|
||||||
<title>Error</title>
|
@section('title', __('Erreur interne'))
|
||||||
|
@section('code')
|
||||||
|
<span>5</span><span>0</span><span>0</span>
|
||||||
|
@endsection
|
||||||
|
@section('message', 'Nous sommes désolé, le serveur a rencontré une exception.')
|
||||||
|
@section('error',$exception->getMessage())
|
||||||
|
@section('url','https://developer.mozilla.org/fr/docs/Web/HTTP/Status/500')
|
||||||
|
|
||||||
<!-- Fonts -->
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
|
|
||||||
|
|
||||||
<!-- Styles -->
|
|
||||||
<style>
|
|
||||||
html, body {
|
|
||||||
background-color: #fff;
|
|
||||||
color: #636b6f;
|
|
||||||
font-family: 'Raleway', sans-serif;
|
|
||||||
font-weight: 100;
|
|
||||||
height: 100vh;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.full-height {
|
|
||||||
height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.flex-center {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.position-ref {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-size: 36px;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
.loader{
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.loader-bg{
|
|
||||||
width: 70px;
|
|
||||||
margin-top: 50px;
|
|
||||||
margin-bottom: 50px;
|
|
||||||
}
|
|
||||||
.loader-spinner {
|
|
||||||
position: relative;
|
|
||||||
border: 16px solid #f3f3f3;
|
|
||||||
border-top: 16px solid #272c33;
|
|
||||||
border-radius: 50%;
|
|
||||||
width: 120px;
|
|
||||||
height: 120px;
|
|
||||||
animation: spin 2s linear infinite;
|
|
||||||
left: 0px;
|
|
||||||
right: 0px;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
top: -163px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
|
||||||
0% { transform: rotate(0deg); }
|
|
||||||
100% { transform: rotate(360deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="flex-center position-ref full-height">
|
|
||||||
<div class="content">
|
|
||||||
<div class="title">
|
|
||||||
<h1 class="glitch" data-text="500" style="font-size: 20rem;margin:0px;">500</h1>
|
|
||||||
</div>
|
|
||||||
<div class="loader">
|
|
||||||
<img class="loader-bg" src="/images/leaf_of_canada.png"></img>
|
|
||||||
<div class="loader-spinner"></div>
|
|
||||||
</div>
|
|
||||||
<div class="title">
|
|
||||||
Oups ... Le serveur n'aime pas ça, svp laisser lui le temps de soufler {{ $exception->getMessage() }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body></html>
|
|
||||||
9
resources/views/errors/503.blade.php
Normal file
9
resources/views/errors/503.blade.php
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
@extends('errors.layout')
|
||||||
|
|
||||||
|
@section('title', __('Service indisponible'))
|
||||||
|
@section('code')
|
||||||
|
<span>5</span><span>0</span><span>3</span>
|
||||||
|
@endsection
|
||||||
|
@section('message', 'Nous sommes désolé, mais le service est temporairement indisponible ou en maintenance.')
|
||||||
|
@section('error',$exception->getMessage())
|
||||||
|
@section('url','https://developer.mozilla.org/fr/docs/Web/HTTP/Status/503')
|
||||||
194
resources/views/errors/layout.blade.php
Normal file
194
resources/views/errors/layout.blade.php
Normal file
@@ -0,0 +1,194 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
||||||
|
|
||||||
|
<title>@yield('title') - C-CMS</title>
|
||||||
|
|
||||||
|
<!-- Google font -->
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Cabin:400,700" rel="stylesheet">
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Montserrat:900" rel="stylesheet">
|
||||||
|
<script src="/js/plugins/fontawesome/js/all.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Custom stlylesheet -->
|
||||||
|
<link type="text/css" rel="stylesheet" href="css/style.css" />
|
||||||
|
|
||||||
|
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||||
|
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||||
|
<!--[if lt IE 9]>
|
||||||
|
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
||||||
|
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||||
|
<![endif]-->
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#notfound {
|
||||||
|
position: relative;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
#notfound .notfound {
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
-webkit-transform: translate(-50%, -50%);
|
||||||
|
-ms-transform: translate(-50%, -50%);
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.notfound {
|
||||||
|
max-width: 520px;
|
||||||
|
width: 100%;
|
||||||
|
line-height: 1.4;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notfound .notfound-404 {
|
||||||
|
position: relative;
|
||||||
|
height: 240px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notfound .notfound-404 h1 {
|
||||||
|
font-family: 'Montserrat', sans-serif;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
-webkit-transform: translate(-50%, -50%);
|
||||||
|
-ms-transform: translate(-50%, -50%);
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
font-size: 252px;
|
||||||
|
font-weight: 900;
|
||||||
|
margin: 0px;
|
||||||
|
color: #262626;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: -40px;
|
||||||
|
margin-left: -20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notfound .notfound-404 h1>span {
|
||||||
|
text-shadow: -8px 0px 0px #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notfound .notfound-404 h3 {
|
||||||
|
font-family: 'Cabin', sans-serif;
|
||||||
|
position: relative;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #262626;
|
||||||
|
margin: 0px;
|
||||||
|
letter-spacing: 3px;
|
||||||
|
padding-left: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notfound h2{
|
||||||
|
font-family: 'Cabin', sans-serif;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 400;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #000;
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-family: 'Cabin', sans-serif;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: 400;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #262626;
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help {
|
||||||
|
float: right;
|
||||||
|
margin-right: 8%;
|
||||||
|
color: #262626;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate {
|
||||||
|
animation: blinker 1.75s linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
height: 50px;
|
||||||
|
margin: 8px 10px 8px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 767px) {
|
||||||
|
.notfound .notfound-404 {
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.notfound .notfound-404 h1 {
|
||||||
|
font-size: 200px;
|
||||||
|
}
|
||||||
|
.help {
|
||||||
|
margin-right: 15%;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 480px) {
|
||||||
|
.notfound .notfound-404 {
|
||||||
|
height: 162px;
|
||||||
|
}
|
||||||
|
.notfound .notfound-404 h1 {
|
||||||
|
font-size: 162px;
|
||||||
|
height: 150px;
|
||||||
|
line-height: 162px;
|
||||||
|
}
|
||||||
|
.notfound h2 {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blinker {
|
||||||
|
50% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="notfound">
|
||||||
|
<img src="/images/C-CMS_G.png">
|
||||||
|
{{ Breadcrumbs::render() }}
|
||||||
|
<div class="notfound">
|
||||||
|
<div class="notfound-404">
|
||||||
|
<h3>Oops! @yield('title')</h3>
|
||||||
|
<h1>@yield('code')</h1>
|
||||||
|
<a target="_blank" class="animate" href="@yield('url')">
|
||||||
|
<i class="fas fa-question-circle help"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<h2>@yield('message')</h2>
|
||||||
|
<h3>@yield('error')</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body><!-- This templates was made by Colorlib (https://colorlib.com) -->
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -13,7 +13,7 @@ foreach (Auth::user()->unreadNotifications as $notification) {
|
|||||||
<i class="material-icons design_bullet-list-67 visible-on-sidebar-mini">view_list</i>
|
<i class="material-icons design_bullet-list-67 visible-on-sidebar-mini">view_list</i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@yield('breadcrumb')
|
{{ Breadcrumbs::render() }}
|
||||||
</div>
|
</div>
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" aria-controls="navigation-index" aria-expanded="false" aria-label="Toggle navigation">
|
<button class="navbar-toggler" type="button" data-toggle="collapse" aria-controls="navigation-index" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
<span class="sr-only">Toggle navigation</span>
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ Route::middleware('auth:api')->group(function () {
|
|||||||
Route::post('/config/job/delete','JobController@destroy')->middleware('perm:config_edit');
|
Route::post('/config/job/delete','JobController@destroy')->middleware('perm:config_edit');
|
||||||
|
|
||||||
/** File Exlorer Route */
|
/** File Exlorer Route */
|
||||||
|
Route::get('/drive/{folder}/permission/{subject}/{id}','GoogleDriveController@editPermissionModal')->middleware('perm:file_see');
|
||||||
Route::get('/drive/folders/{folder?}','GoogleDriveController@list');
|
Route::get('/drive/folders/{folder?}','GoogleDriveController@list');
|
||||||
Route::get('/drive/path/{folder}','GoogleDriveController@getPath');
|
Route::get('/drive/path/{folder}','GoogleDriveController@getPath');
|
||||||
Route::get('/drive/patharray','GoogleDriveController@getPathArray');
|
Route::get('/drive/patharray','GoogleDriveController@getPathArray');
|
||||||
|
|||||||
311
routes/breadcrumbs.php
Normal file
311
routes/breadcrumbs.php
Normal file
@@ -0,0 +1,311 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// Admin
|
||||||
|
use DaveJamesMiller\Breadcrumbs\Facades\Breadcrumbs;
|
||||||
|
|
||||||
|
// Error 404
|
||||||
|
Breadcrumbs::for('errors.404', function ($trail) {
|
||||||
|
$trail->parent('dashboard');
|
||||||
|
$trail->push('Page introuvable');
|
||||||
|
});
|
||||||
|
|
||||||
|
Breadcrumbs::for('admin.dashboard', function ($trail) {
|
||||||
|
$trail->push('Dashboard', route('admin.dashboard'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Update
|
||||||
|
Breadcrumbs::for('admin.update', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Note de mise à jour', route('admin.update'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Status
|
||||||
|
Breadcrumbs::for('admin.status', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Status de C-CMS', route('admin.status'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Schedule
|
||||||
|
Breadcrumbs::for('admin.schedule', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Horaire', route('admin.schedule'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Schedule > Add
|
||||||
|
Breadcrumbs::for('admin.schedule.add', function ($trail,$date) {
|
||||||
|
$trail->parent('admin.schedule');
|
||||||
|
$trail->push('Ajouter un évenement', route('admin.schedule.add',$date));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Schedule > Edit
|
||||||
|
Breadcrumbs::for('admin.schedule.edit', function ($trail,$id) {
|
||||||
|
$trail->parent('admin.schedule');
|
||||||
|
$trail->push('Modifier un évenement', route('admin.schedule.edit',$id));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Statistiques
|
||||||
|
Breadcrumbs::for('admin.log', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Historique des activitées', route('admin.log'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > User
|
||||||
|
Breadcrumbs::for('admin.user', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Utilisateurs', route('admin.user'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > User > Add
|
||||||
|
Breadcrumbs::for('admin.user.add', function ($trail) {
|
||||||
|
$trail->parent('admin.user');
|
||||||
|
$trail->push('Ajouter un utilisateur', route('admin.user.add'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > User > Edit
|
||||||
|
Breadcrumbs::for('admin.user.edit', function ($trail, $id) {
|
||||||
|
$trail->parent('admin.user');
|
||||||
|
$trail->push('Modifier un utilisateur', route('admin.user.edit', $id));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config
|
||||||
|
Breadcrumbs::for('admin.config', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Configurations', route('admin.config'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config > Calendrier
|
||||||
|
Breadcrumbs::for('admin.config.schedule', function ($trail) {
|
||||||
|
$trail->parent('admin.config');
|
||||||
|
$trail->push('Horaire', route('admin.config.schedule'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config > Activite complementaire
|
||||||
|
Breadcrumbs::for('admin.config.complementary-activity', function ($trail) {
|
||||||
|
$trail->parent('admin.config');
|
||||||
|
$trail->push('Activitée complémentaire', route('admin.config.complementary-activity'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config > Activite complementaire > Add
|
||||||
|
Breadcrumbs::for('admin.config.complementary-activity.add', function ($trail) {
|
||||||
|
$trail->parent('admin.config.complementary-activity');
|
||||||
|
$trail->push('Ajouter', route('admin.config.complementary-activity.add'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config > Activite complementaire > Edit
|
||||||
|
Breadcrumbs::for('admin.config.complementary-activity.edit', function ($trail, $id) {
|
||||||
|
$trail->parent('admin.config.complementary-activity');
|
||||||
|
$trail->push('Modifier', route('admin.config.complementary-activity.edit', $id));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config > Customisation
|
||||||
|
Breadcrumbs::for('admin.config.customisation', function ($trail) {
|
||||||
|
$trail->parent('admin.config');
|
||||||
|
$trail->push('Apparence', route('admin.config.customisation'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config > Rank
|
||||||
|
Breadcrumbs::for('admin.config.rank', function ($trail) {
|
||||||
|
$trail->parent('admin.config');
|
||||||
|
$trail->push('Grade', route('admin.config.rank'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config > Rank > Add
|
||||||
|
Breadcrumbs::for('admin.config.rank.add', function ($trail) {
|
||||||
|
$trail->parent('admin.config.rank');
|
||||||
|
$trail->push('Ajouter', route('admin.config.rank.add'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config > Rank > Edit
|
||||||
|
Breadcrumbs::for('admin.config.rank.edit', function ($trail, $id) {
|
||||||
|
$trail->parent('admin.config.rank');
|
||||||
|
$trail->push('Modifier', route('admin.config.rank.edit',$id));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config > Jobs
|
||||||
|
Breadcrumbs::for('admin.config.jobs', function ($trail) {
|
||||||
|
$trail->parent('admin.config');
|
||||||
|
$trail->push('Postes', route('admin.config.jobs'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config > Jobs > Add
|
||||||
|
Breadcrumbs::for('admin.config.jobs.add', function ($trail) {
|
||||||
|
$trail->parent('admin.config.jobs');
|
||||||
|
$trail->push('Ajouter', route('admin.config.jobs.add'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config > Jobs > Edit
|
||||||
|
Breadcrumbs::for('admin.config.jobs.edit', function ($trail, $id) {
|
||||||
|
$trail->parent('admin.config.jobs');
|
||||||
|
$trail->push('Modifier', route('admin.config.jobs.edit', $id));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Config > Files
|
||||||
|
Breadcrumbs::for('admin.config.files', function ($trail) {
|
||||||
|
$trail->parent('admin.config');
|
||||||
|
$trail->push('Système de fichier', route('admin.config.files'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Picture
|
||||||
|
Breadcrumbs::for('admin.picture', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Photo', route('admin.picture'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Picture > Add
|
||||||
|
Breadcrumbs::for('admin.picture.add', function ($trail) {
|
||||||
|
$trail->parent('admin.picture');
|
||||||
|
$trail->push('Ajouter', route('admin.picture.add'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Picture > Edit
|
||||||
|
Breadcrumbs::for('admin.picture.edit', function ($trail, $id) {
|
||||||
|
$trail->parent('admin.picture');
|
||||||
|
$trail->push('Modifier', route('admin.picture.edit', $id));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Inventaire
|
||||||
|
Breadcrumbs::for('admin.inv', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Inventaire', route('admin.inv'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Inventaire > Management
|
||||||
|
Breadcrumbs::for('admin.inv.management', function ($trail) {
|
||||||
|
$trail->parent('admin.inv');
|
||||||
|
$trail->push('Gestion de l\'inventaire', route('admin.inv.management'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Inventaire > Management > Category
|
||||||
|
Breadcrumbs::for('admin.inv.management.category', function ($trail) {
|
||||||
|
$trail->parent('admin.inv.management');
|
||||||
|
$trail->push('Catégories', route('admin.inv.management.category'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Inventaire > Management > Category > Add
|
||||||
|
Breadcrumbs::for('admin.inv.management.category.add', function ($trail) {
|
||||||
|
$trail->parent('admin.inv.management.category');
|
||||||
|
$trail->push('Ajouter', route('admin.inv.management.category.add'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Inventaire > Management > Category > Edit
|
||||||
|
Breadcrumbs::for('admin.inv.management.category.edit', function ($trail, $id) {
|
||||||
|
$trail->parent('admin.inv.management.category');
|
||||||
|
$trail->push('Modifier', route('admin.inv.management.category.edit', $id));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > News
|
||||||
|
Breadcrumbs::for('admin.news', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Nouvelles', route('admin.news'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > News > Add
|
||||||
|
Breadcrumbs::for('admin.news.add', function ($trail) {
|
||||||
|
$trail->parent('admin.news');
|
||||||
|
$trail->push('Ajouter', route('admin.news.add'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > News > Edit
|
||||||
|
Breadcrumbs::for('admin.news.edit', function ($trail, $id) {
|
||||||
|
$trail->parent('admin.news');
|
||||||
|
$trail->push('Modifier', route('admin.news.edit', $id));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Article
|
||||||
|
Breadcrumbs::for('admin.article', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Articles', route('admin.article'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Article > Edit
|
||||||
|
Breadcrumbs::for('admin.article.edit', function ($trail, $id) {
|
||||||
|
$trail->parent('admin.article');
|
||||||
|
$trail->push('Modifier', route('admin.article.edit', $id));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Profil
|
||||||
|
Breadcrumbs::for('admin.profil', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Profil d\'utilisateur', route('admin.profil'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Profil > Avatar
|
||||||
|
Breadcrumbs::for('admin.profil.avatar', function ($trail) {
|
||||||
|
$trail->parent('admin.profil');
|
||||||
|
$trail->push('Avatar', route('admin.profil.avatar'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Profil > Adress
|
||||||
|
Breadcrumbs::for('admin.profil.adress', function ($trail) {
|
||||||
|
$trail->parent('admin.profil');
|
||||||
|
$trail->push('Adresse', route('admin.profil.adress'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Profil > Password
|
||||||
|
Breadcrumbs::for('admin.profil.psw', function ($trail) {
|
||||||
|
$trail->parent('admin.profil');
|
||||||
|
$trail->push('Password', route('admin.profil.psw'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Drive
|
||||||
|
Breadcrumbs::for('admin.drive', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Explorateur de fichier', route('admin.drive'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Drive > Permission
|
||||||
|
Breadcrumbs::for('admin.drive.permission', function ($trail,$folder) {
|
||||||
|
$trail->parent('admin.drive.folder',$folder);
|
||||||
|
$trail->push('Permission', route('admin.drive.permission',$folder));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Drive > [$folder]
|
||||||
|
Breadcrumbs::for('admin.drive.folder', function ($trail,$folder) {
|
||||||
|
$trail->parent('admin.drive');
|
||||||
|
$trail->push(\Storage::cloud()->getMetadata($folder)['name'], route('admin.drive',$folder));
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Admin > Guide
|
||||||
|
Breadcrumbs::for('admin.guide', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Guide pédagogique', route('admin.guide'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > Files
|
||||||
|
Breadcrumbs::for('admin.files', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Fichier', route('admin.files'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > OCOM
|
||||||
|
Breadcrumbs::for('admin.ocom', function ($trail) {
|
||||||
|
$trail->parent('admin.dashboard');
|
||||||
|
$trail->push('Base de données des cours', route('admin.ocom'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > OCOM > Generate
|
||||||
|
Breadcrumbs::for('admin.ocom.generate', function ($trail) {
|
||||||
|
$trail->parent('admin.ocom');
|
||||||
|
$trail->push('Génération de masse', route('admin.ocom.generate'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > OCOM > Add
|
||||||
|
Breadcrumbs::for('admin.ocom.add', function ($trail) {
|
||||||
|
$trail->parent('admin.ocom');
|
||||||
|
$trail->push('Ajouter', route('admin.ocom.add'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > OCOM > [ocom]
|
||||||
|
Breadcrumbs::for('admin.ocom.show', function ($trail, $id) {
|
||||||
|
$ocom = \App\OCOM::findOrFail($id);
|
||||||
|
$trail->parent('admin.ocom');
|
||||||
|
$trail->push($ocom->ocom, route('admin.ocom.show', $ocom));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin > OCOM > [ocom] > Edit
|
||||||
|
Breadcrumbs::for('admin.ocom.edit', function ($trail, $id) {
|
||||||
|
$ocom = \App\OCOM::findOrFail($id);
|
||||||
|
$trail->parent('admin.ocom.show',$id);
|
||||||
|
$trail->push('Modifier', route('admin.ocom.edit', $ocom));
|
||||||
|
});
|
||||||
118
routes/web.php
118
routes/web.php
@@ -28,65 +28,67 @@ Route::get('/activity/{id}', 'ComplementaryActivityController@show');
|
|||||||
Route::get('/picture/{id}', 'PictureController@show');
|
Route::get('/picture/{id}', 'PictureController@show');
|
||||||
Route::get('/pictures', 'PictureController@index');
|
Route::get('/pictures', 'PictureController@index');
|
||||||
|
|
||||||
|
Route::get('/file/get','GoogleDriveController@getFile')->middleware('fileperm:file,r');
|
||||||
|
|
||||||
Route::middleware(['auth'])->group(function () {
|
|
||||||
|
Route::middleware(['auth'])->name('admin.')->group(function () {
|
||||||
|
|
||||||
/* Espace Administration Route */
|
/* Espace Administration Route */
|
||||||
|
|
||||||
/** Dashboard & General */
|
/** Dashboard & General */
|
||||||
Route::get('/admin', 'AdminController@index')->name('admin');
|
Route::get('/admin', 'AdminController@index')->name('dashboard');
|
||||||
Route::get('/admin/update', 'AdminController@update');
|
Route::get('/admin/update', 'AdminController@update')->name('update');
|
||||||
Route::get('/admin/status','AdminController@status');
|
Route::get('/admin/status','AdminController@status')->name('status');
|
||||||
|
|
||||||
/** Schedule */
|
/** Schedule */
|
||||||
Route::get('/admin/schedule', 'CalendarController@index')->middleware('perm:schedule_see');
|
Route::get('/admin/schedule', 'CalendarController@index')->middleware('perm:schedule_see')->name('schedule');
|
||||||
Route::get('/admin/schedule/pdf/event/{id}','ScheduleController@printtopdf')->middleware('perm:schedule_see');
|
Route::get('/admin/schedule/pdf/event/{id}','ScheduleController@printtopdf')->middleware('perm:schedule_see')->name('schedule.pdf');
|
||||||
Route::get('/admin/schedule/add/{date}','ScheduleController@create')->middleware('perm:schedule_add');
|
Route::get('/admin/schedule/add/{date}','ScheduleController@create')->middleware('perm:schedule_add')->name('schedule.add');
|
||||||
Route::get('/admin/schedule/edit/{id}','EventController@edit')->middleware('perm:schedule_edit');
|
Route::get('/admin/schedule/edit/{id}','EventController@edit')->middleware('perm:schedule_edit')->name('schedule.edit');
|
||||||
Route::post('/admin/schedule/event/add','EventController@Store')->middleware('perm:schedule_add');
|
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');
|
Route::post('/admin/schedule/event/edit/{id}','EventController@update')->middleware('perm:schedule_edit');
|
||||||
|
|
||||||
/** Statistique */
|
/** Statistique */
|
||||||
Route::get('/admin/stats/log' , 'LogController@index')->middleware('perm:stats_see');
|
Route::get('/admin/stats/log' , 'LogController@index')->middleware('perm:stats_see')->name('log');
|
||||||
|
|
||||||
/** Message */
|
/** Message */
|
||||||
Route::get('/admin/message' , 'MessageController@index')->middleware('perm:msg_see');
|
Route::get('/admin/message' , 'MessageController@index')->middleware('perm:msg_see')->name('message');
|
||||||
Route::get('/admin/message/add' , 'MessageController@create')->middleware('perm:msg_add');
|
Route::get('/admin/message/add' , 'MessageController@create')->middleware('perm:msg_add')->name('message.add');
|
||||||
Route::post('/admin/message/add' , 'MessageController@store')->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');
|
Route::get('/admin/message/{id}', ['uses' =>'MessageController@show'])->middleware('perm:msg_see')->name('message.show');
|
||||||
|
|
||||||
/** User */
|
/** User */
|
||||||
Route::get('/admin/user' , 'UserController@index')->middleware('perm:user_see');
|
Route::get('/admin/user' , 'UserController@index')->middleware('perm:user_see')->name('user');
|
||||||
Route::get('/admin/user/add' , 'UserController@create')->middleware('perm:user_add');
|
Route::get('/admin/user/add' , 'UserController@create')->middleware('perm:user_add')->name('user.add');
|
||||||
Route::post('/admin/user/add' , 'UserController@store')->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::get('/admin/user/edit/{id}' , 'UserController@edit')->middleware('perm:user_edit')->name('user.edit');
|
||||||
Route::post('/admin/user/edit/{id}' , 'UserController@update')->middleware('perm:user_edit');
|
Route::post('/admin/user/edit/{id}' , 'UserController@update')->middleware('perm:user_edit');
|
||||||
|
|
||||||
/** Config */
|
/** Config */
|
||||||
Route::get('/admin/config/schedule' , 'ScheduleController@index')->middleware('perm:config_edit');
|
Route::get('/admin/config/schedule' , 'ScheduleController@index')->middleware('perm:config_edit')->name('config.schedule');
|
||||||
Route::post('/admin/config/schedule/edit' , 'ScheduleController@update')->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' , 'ComplementaryActivityController@index')->middleware('perm:config_edit')->name('config.complementary-activity');
|
||||||
Route::get('/admin/config/activity/add' , 'ComplementaryActivityController@create')->middleware('perm:config_edit');
|
Route::get('/admin/config/activity/add' , 'ComplementaryActivityController@create')->middleware('perm:config_edit')->name('config.complementary-activity.add');
|
||||||
Route::post('/admin/config/activity/add' , 'ComplementaryActivityController@store')->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::get('/admin/config/activity/edit/{id}' , 'ComplementaryActivityController@edit')->middleware('perm:config_edit')->name('config.complementary-activity.edit');
|
||||||
Route::post('/admin/config/activity/edit/{id}' , 'ComplementaryActivityController@update')->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::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/' , 'ConfigController@index')->middleware('perm:config_edit')->name('config');
|
||||||
Route::get('/admin/config/customisation','ConfigController@customisation')->middleware('perm:config_edit');
|
Route::get('/admin/config/customisation','ConfigController@customisation')->middleware('perm:config_edit')->name('config.customisation');
|
||||||
Route::post('/admin/config/customisation','ConfigController@customisationUpdate')->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','RankController@index')->middleware('perm:config_edit')->name('config.rank');
|
||||||
Route::get('/admin/config/ranks/add','RankController@create')->middleware('perm:config_edit');
|
Route::get('/admin/config/ranks/add','RankController@create')->middleware('perm:config_edit')->name('config.rank.add');
|
||||||
Route::post('/admin/config/ranks/add','RankController@store')->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::get('/admin/config/ranks/{id}','RankController@show')->middleware('perm:config_edit')->name('config.rank.edit');
|
||||||
Route::post('/admin/config/ranks/{id}','RankController@update')->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');
|
Route::get('/admin/config/jobs','JobController@index')->middleware('perm:config_edit')->name('config.jobs');
|
||||||
Route::get('/admin/config/jobs/add','JobController@create')->middleware('perm:config_edit');
|
Route::get('/admin/config/jobs/add','JobController@create')->middleware('perm:config_edit')->name('config.jobs.add');
|
||||||
Route::post('/admin/config/jobs/add','JobController@store')->middleware('perm:config_edit');
|
Route::post('/admin/config/jobs/add','JobController@store')->middleware('perm:config_edit');
|
||||||
Route::get('/admin/config/jobs/{id}','JobController@edit')->middleware('perm:config_edit');
|
Route::get('/admin/config/jobs/{id}','JobController@edit')->middleware('perm:config_edit')->name('config.jobs.edit');
|
||||||
Route::post('/admin/config/jobs/{id}','JobController@update')->middleware('perm:config_edit');
|
Route::post('/admin/config/jobs/{id}','JobController@update')->middleware('perm:config_edit');
|
||||||
|
|
||||||
Route::get('/admin/config/files' , 'ConfigController@showfilesConfig')->middleware('perm:config_edit');
|
Route::get('/admin/config/files' , 'ConfigController@showfilesConfig')->middleware('perm:config_edit')->name('config.files');
|
||||||
Route::post('/admin/config/files' , 'ConfigController@editfilesConfig')->middleware('perm:config_edit');
|
Route::post('/admin/config/files' , 'ConfigController@editfilesConfig')->middleware('perm:config_edit');
|
||||||
|
|
||||||
/** Public page */
|
/** Public page */
|
||||||
@@ -94,33 +96,33 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
Route::post('/admin/public/edit/{config}', 'PublicController@update')->middleware('perm:config_edit');
|
Route::post('/admin/public/edit/{config}', 'PublicController@update')->middleware('perm:config_edit');
|
||||||
|
|
||||||
/** Picture */
|
/** Picture */
|
||||||
Route::get('/admin/picture','PictureController@indexAdmin')->middleware('perm:picture_see');
|
Route::get('/admin/picture','PictureController@indexAdmin')->middleware('perm:picture_see')->name('picture');
|
||||||
Route::get('/admin/picture/add','PictureController@create')->middleware('perm:picture_add');
|
Route::get('/admin/picture/add','PictureController@create')->middleware('perm:picture_add')->name('picture.add');
|
||||||
Route::post('/admin/picture/add','PictureController@store')->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::get('/admin/picture/edit/{id}','PictureController@edit')->middleware('perm:picture_edit')->name('picture.edit');
|
||||||
Route::post('/admin/picture/edit/{id}','PictureController@update')->middleware('perm:picture_edit');
|
Route::post('/admin/picture/edit/{id}','PictureController@update')->middleware('perm:picture_edit');
|
||||||
|
|
||||||
/** Inventory */
|
/** Inventory */
|
||||||
Route::get('/admin/inventory' , 'InventoryController@index')->middleware('perm:inventory_see');
|
Route::get('/admin/inventory' , 'InventoryController@index')->middleware('perm:inventory_see')->name('inv');
|
||||||
Route::get('/admin/inventory/management','InventoryController@management')->middleware('perm:inventory_edit');
|
Route::get('/admin/inventory/management','InventoryController@management')->middleware('perm:inventory_edit')->name('inv.management');
|
||||||
|
|
||||||
/** Item Category */
|
/** Item Category */
|
||||||
Route::get('/admin/inventory/management/category','ItemCategoryController@index')->middleware('perm:inventory_edit');
|
Route::get('/admin/inventory/management/category','ItemCategoryController@index')->middleware('perm:inventory_edit')->name('inv.management.category');
|
||||||
Route::get('/admin/inventory/management/category/add','ItemCategoryController@create')->middleware('perm:inventory_add');
|
Route::get('/admin/inventory/management/category/add','ItemCategoryController@create')->middleware('perm:inventory_add')->name('inv.management.category.add');
|
||||||
Route::post('/admin/inventory/management/category/add','ItemCategoryController@store')->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::get('/admin/inventory/management/category/edit/{id}','ItemCategoryController@edit')->middleware('perm:inventory_edit')->name('inv.management.category.edit');
|
||||||
Route::post('/admin/inventory/management/category/edit/{id}','ItemCategoryController@update')->middleware('perm:inventory_edit');
|
Route::post('/admin/inventory/management/category/edit/{id}','ItemCategoryController@update')->middleware('perm:inventory_edit');
|
||||||
|
|
||||||
/** News */
|
/** News */
|
||||||
Route::get('/admin/news','NewsController@indexAdmin')->middleware('perm:news_see');
|
Route::get('/admin/news','NewsController@indexAdmin')->middleware('perm:news_see')->name('news');
|
||||||
Route::get('/admin/news/add','NewsController@create')->middleware('perm:news_add');
|
Route::get('/admin/news/add','NewsController@create')->middleware('perm:news_add')->name('news.add');
|
||||||
Route::post('/admin/news/add','NewsController@store')->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::get('/admin/news/edit/{id}','NewsController@edit')->middleware('perm:news_edit')->name('news.edit');
|
||||||
Route::post('/admin/news/edit/{id}','NewsController@update')->middleware('perm:news_edit');
|
Route::post('/admin/news/edit/{id}','NewsController@update')->middleware('perm:news_edit');
|
||||||
|
|
||||||
/** Articles */
|
/** Articles */
|
||||||
Route::get('/admin/article','ArticleController@index')->middleware('perm:article_see');
|
Route::get('/admin/article','ArticleController@index')->middleware('perm:article_see')->name('article');
|
||||||
Route::get('/admin/article/activity/edit/{id}','ArticleController@editActivity')->middleware('perm:article_edit');
|
Route::get('/admin/article/activity/edit/{id}','ArticleController@editActivity')->middleware('perm:article_edit')->name('article.edit');
|
||||||
Route::post('/admin/article/activity/edit/{id}','ArticleController@updateActivity')->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}','ArticleController@pictureActivity')->middleware('perm:article_edit');
|
||||||
Route::get('/admin/article/activity/picture/{id}/add','ArticleController@pictureActivityCreate')->middleware('perm:article_edit');
|
Route::get('/admin/article/activity/picture/{id}/add','ArticleController@pictureActivityCreate')->middleware('perm:article_edit');
|
||||||
@@ -144,38 +146,38 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
/** Notification */
|
/** Notification */
|
||||||
Route::get('/admin/notication/mark','UserController@notificationmarkALL');
|
Route::get('/admin/notication/mark','UserController@notificationmarkALL');
|
||||||
Route::post('/admin/notication/mark/{id}','UserController@notificationmark');
|
Route::post('/admin/notication/mark/{id}','UserController@notificationmark');
|
||||||
Route::get('/ecc/notication/mark','UserController@notificationmarkALL');
|
|
||||||
Route::post('/ecc/notication/mark/{id}','UserController@notificationmarkECC');
|
|
||||||
|
|
||||||
/** Profil */
|
/** Profil */
|
||||||
Route::get('/admin/profil/avatar' , 'UserController@UserAvatar');
|
Route::get('/admin/profil/avatar' , 'UserController@UserAvatar')->name('profil.avatar');
|
||||||
Route::get('/admin/profil/password' , 'UserController@UserPassword');
|
Route::get('/admin/profil/password' , 'UserController@UserPassword')->name('profil.psw');
|
||||||
Route::get('/admin/profil/adress' , 'UserController@UserAdress');
|
Route::get('/admin/profil/adress' , 'UserController@UserAdress')->name('profil.adress');
|
||||||
Route::post('/admin/profil/edit/adress' , 'UserController@editUserAdress');
|
Route::post('/admin/profil/edit/adress' , 'UserController@editUserAdress');
|
||||||
Route::post('/admin/profil/edit/password' , 'UserController@editUserPassword');
|
Route::post('/admin/profil/edit/password' , 'UserController@editUserPassword');
|
||||||
Route::get('/admin/profil/edit/avatar/{id}' , 'UserController@editUserAvatar');
|
Route::get('/admin/profil/edit/avatar/{id}' , 'UserController@editUserAvatar');
|
||||||
Route::get('/admin/profil/{id?}' , 'UserController@showUserProfil');
|
Route::get('/admin/profil/{id?}' , 'UserController@showUserProfil')->name('profil');
|
||||||
|
|
||||||
/** Files */
|
/** Files */
|
||||||
Route::get('/file/get','GoogleDriveController@getFile')->middleware('perm:file_see');
|
|
||||||
Route::post('/file/create','GoogleDriveController@createFile');
|
Route::post('/file/create','GoogleDriveController@createFile');
|
||||||
Route::post('/file/upload','GoogleDriveController@uploadFile');
|
Route::post('/file/upload','GoogleDriveController@uploadFile');
|
||||||
Route::post('/folder/create','GoogleDriveController@createFolder');
|
Route::post('/folder/create','GoogleDriveController@createFolder');
|
||||||
Route::get('/file/delete','GoogleDriveController@deleteFile')->middleware('perm:file_delete');
|
Route::get('/file/delete','GoogleDriveController@deleteFile')->middleware('perm:file_delete');
|
||||||
Route::get('/folder/delete','GoogleDriveController@deleteDir')->middleware('perm:file_delete');
|
Route::get('/folder/delete','GoogleDriveController@deleteDir')->middleware('perm:file_delete');
|
||||||
Route::get('/admin/files','FilesController@index')->middleware('perm:file_see');
|
Route::get('/admin/files','FilesController@index')->middleware('perm:file_see')->name('files');
|
||||||
Route::get('/admin/guide','FilesController@guide')->middleware('perm:file_see');
|
Route::get('/admin/guide','FilesController@guide')->middleware('perm:file_see')->name('guide');
|
||||||
Route::get('/admin/drive/{folder?}','GoogleDriveController@index')->middleware('perm:file_see');
|
Route::get('/admin/drive/{folder?}','GoogleDriveController@index')->middleware('perm:file_see')->name('drive');
|
||||||
|
Route::get('/admin/drive/{folder}/permission','GoogleDriveController@editPermission')->middleware('perm:file_see')->name('drive.permission');
|
||||||
|
Route::patch('/admin/drive/{folder}/permission/{subject}/{id}','GoogleDriveController@editPermission')->middleware('perm:file_see');
|
||||||
|
|
||||||
/** OCOM */
|
|
||||||
Route::get('/admin/ocom','OCOMController@index');
|
/** OCOM */
|
||||||
Route::get('/admin/ocom/generate','OCOMController@showgenerate');
|
Route::get('/admin/ocom','OCOMController@index')->name('ocom');
|
||||||
|
Route::get('/admin/ocom/generate','OCOMController@showgenerate')->name('ocom.generate');
|
||||||
Route::put('/admin/ocom/generate','OCOMController@generate');
|
Route::put('/admin/ocom/generate','OCOMController@generate');
|
||||||
Route::get('/admin/ocom/add','OCOMController@create');
|
Route::get('/admin/ocom/add','OCOMController@create')->name('ocom.add');
|
||||||
Route::put('/admin/ocom/add','OCOMController@store');
|
Route::put('/admin/ocom/add','OCOMController@store');
|
||||||
Route::get('/admin/ocom/edit/{id}','OCOMController@edit');
|
Route::get('/admin/ocom/{id}/edit','OCOMController@edit')->name('ocom.edit');
|
||||||
Route::patch('/admin/ocom/edit/{id}','OCOMController@update');
|
Route::patch('/admin/ocom/{id}/edit','OCOMController@update');
|
||||||
Route::get('/admin/ocom/{id}','OCOMController@show');
|
Route::get('/admin/ocom/{id}','OCOMController@show')->name('ocom.show');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user