File systeme V3

This commit is contained in:
Mathieu Lagacé
2020-10-19 18:45:05 -04:00
parent 1664bb06aa
commit 4f83774200
27 changed files with 2030 additions and 1223 deletions

View File

@@ -4,6 +4,7 @@ namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
/**
* App\Permission
@@ -15,6 +16,150 @@ use Illuminate\Support\Arr;
*/
class Permission extends Model
{
const ACLRULES = [
'files_cadets' => [
'_see' => [
[
'path' => 'Prive/Cadet',
'access' => '1'
],
[
'path' => 'Prive/Cadet/*',
'access' => '1'
]
],
'_edit' => [
[
'path' => 'Prive/Cadet',
'access' => '2'
],
[
'path' => 'Prive/Cadet/*',
'access' => '2'
]
]
],
'files_staff' => [
'_see' => [
[
'path' => 'Prive/Staff',
'access' => '1'
],
[
'path' => 'Prive/Staff/*',
'access' => '1'
]
],
'_edit' => [
[
'path' => 'Prive/Staff',
'access' => '2'
],
[
'path' => 'Prive/Staff/*',
'access' => '2'
]
]
],
'files_etamas' => [
'_see' => [
[
'path' => 'Prive/ETAMAS',
'access' => '1'
],
[
'path' => 'Prive/ETAMAS/*',
'access' => '1'
]
],
'_edit' => [
[
'path' => 'Prive/ETAMAS',
'access' => '2'
],
[
'path' => 'Prive/ETAMAS/*',
'access' => '2'
]
]
],
'files_officier' => [
'_see' => [
[
'path' => 'Prive',
'access' => '1'
],
[
'path' => 'Prive/Officier',
'access' => '1'
],
[
'path' => 'Prive/Officier/*',
'access' => '1'
]
],
'_edit' => [
[
'path' => 'Prive',
'access' => '1'
],
[
'path' => 'Prive/Officier',
'access' => '2'
],
[
'path' => 'Prive/Officier/*',
'access' => '2'
]
]
],
'files_systeme' => [
'_see' => [
[
'path' => 'Systeme',
'access' => '1'
],
[
'path' => 'Systeme/*',
'access' => '1'
]
],
'_edit' => [
// Vide
]
],
'files_instruction' => [
'_see' => [
[
'path' => 'Prive/Staff/Instruction',
'access' => '1'
],
[
'path' => 'Prive/Staff/Instruction/*',
'access' => '1'
]
],
'_edit' => [
// Vide
]
],
'instruction_guide' => [
'_see' => [
[
'path' => 'Prive/Staff/Guide',
'access' => '1'
],
[
'path' => 'Prive/Staff/Guide/*',
'access' => '1'
]
],
'_edit' => [
// Vide
]
],
];
const PERMISSIONS = [
'Nouvelle' => [
'news_see' => [
@@ -149,6 +294,13 @@ class Permission extends Model
'icon' => 'fa-eye',
'valeur' => 0
],
'config_edit_files' => [
'ckey' => 'config_edit_files',
'communName' => 'Modifier les configurations de fichier',
'desc' => 'L\'utilisateur peut-il modifier les configurations de fichier',
'icon' => 'fa-eye',
'valeur' => 0
],
'config_edit_customization' => [
'ckey' => 'config_edit_customization',
'communName' => 'Modifier les configurations de l\'apparence du site',
@@ -253,6 +405,13 @@ class Permission extends Model
'icon' => 'fa-eye',
'valeur' => 0
],
'cadet_list_edit' => [
'ckey' => 'cadet_list_edit',
'communName' => 'Modifier la liste nominative',
'desc' => 'L\'utilisateur peut-il modifier la liste nominative',
'icon' => 'fa-eye',
'valeur' => 0
],
],
'Horaire' => [
'schedule_see' => [
@@ -345,23 +504,150 @@ class Permission extends Model
],
],
'Fichiers' => [
'file_see' => [
'ckey' => 'file_see',
'communName' => 'Voir les fichiers publiques',
'desc' => 'L\'utilisateur peut-il consulter les fichiers publiques',
'files_cadets_see' => [
'ckey' => 'files_cadets_see',
'communName' => 'Consulter les fichiers des cadets',
'desc' => 'L\'utilisateur peut-il consulter les fichiers des cadets',
'icon' => 'fa-eye',
'valeur' => 0
],
'drive_see' => [
'ckey' => 'drive_see',
'communName' => 'Voir l\'explorateur de fichier',
'desc' => 'L\'utilisateur peut-il consulter l\'explorateur de fichier',
'files_cadets_edit' => [
'ckey' => 'files_cadets_edit',
'communName' => 'Modifier les fichiers des cadets',
'desc' => 'L\'utilisateur peut-il modifier les fichiers des cadets',
'icon' => 'fa-eye',
'valeur' => 0
],
'files_staff_see' => [
'ckey' => 'files_staff_see',
'communName' => 'Consulter les fichiers des staffs',
'desc' => 'L\'utilisateur peut-il consulter les fichiers des staffs',
'icon' => 'fa-eye',
'valeur' => 0
],
'files_staff_edit' => [
'ckey' => 'files_staff_edit',
'communName' => 'Modifier les fichiers des staffs',
'desc' => 'L\'utilisateur peut-il modifier les fichiers des staffs',
'icon' => 'fa-eye',
'valeur' => 0
],
'files_etamas_see' => [
'ckey' => 'files_etamas_see',
'communName' => 'Consulter les fichiers de l\'ETAMAS',
'desc' => 'L\'utilisateur peut-il consulter les fichiers de l\'ETAMAS',
'icon' => 'fa-eye',
'valeur' => 0
],
'files_etamas_edit' => [
'ckey' => 'files_etamas_edit',
'communName' => 'Mo
difier les fichiers de l\'ETAMAS',
'desc' => 'L\'utilisateur peut-il modifier les fichiers de l\'ETAMAS',
'icon' => 'fa-eye',
'valeur' => 0
],
'files_officier_see' => [
'ckey' => 'files_officier_see',
'communName' => 'Consulter les fichiers des officiers',
'desc' => 'L\'utilisateur peut-il consulter les fichiers des officiers',
'icon' => 'fa-eye',
'valeur' => 0
],
'files_officier_edit' => [
'ckey' => 'files_officier_edit',
'communName' => 'Modifier les fichiers des officiers',
'desc' => 'L\'utilisateur peut-il modifier les fichiers des officiers',
'icon' => 'fa-eye',
'valeur' => 0
],
'files_systeme_see' => [
'ckey' => 'files_systeme_see',
'communName' => 'Voir les fichiers systemes',
'desc' => 'L\'utilisateur peut-il consulter les fichiers systemes',
'icon' => 'fa-eye',
'valeur' => 0
],
'files_instruction_see' => [
'ckey' => 'files_instruction_see',
'communName' => 'Voir les fichiers de l\'instruction',
'desc' => 'L\'utilisateur peut-il consulter les fichiers de l\'instruction',
'icon' => 'fa-eye',
'valeur' => 0
],
]
];
public static function updateACLRules($o)
{
$user_id = '0';
$rank_id = '0';
$job_id = '0';
switch ($o->table) {
case 'users':
$user_id = $o->id;
break;
case 'ranks':
$rank_id = $o->id;
break;
case 'jobs':
$job_id = $o->id;
break;
}
foreach (self::ACLRULES as $key => $rule)
{
if ($o->p($key.'_see') == 1) {
if ($o->p($key.'_edit') == 1) {
foreach ($rule['_edit'] as $acl) {
self::updateOrInsertACLRules($user_id,$rank_id,$job_id,'storage',$acl['path'],$acl['access']);
}
} else {
foreach ($rule['_see'] as $acl) {
self::updateOrInsertACLRules($user_id,$rank_id,$job_id,'storage',$acl['path'],$acl['access']);
}
}
} else {
foreach ($rule['_see'] as $acl) {
self::removeACLRules($user_id,$rank_id,$job_id,'storage',$acl['path']);
}
}
}
}
public static function removeACLRules($userId,$rankId,$jobId,$disk,$path)
{
$rules = DB::table('acl_rules')->where([
['user_id',$userId],
['rank_id',$rankId],
['job_id',$jobId],
['disk',$disk],
['path',$path]
]);
$rules->delete();
}
public static function updateOrInsertACLRules($userId,$rankId,$jobId,$disk,$path,$access)
{
DB::table('acl_rules')->updateOrInsert(
['user_id' => $userId, 'rank_id' => $rankId, 'job_id' => $jobId, 'disk' => $disk, 'path' => $path],
['access' => $access]
);
}
public static function addACLRules($userId,$rankId,$jobId,$disk,$path,$access)
{
DB::table('acl_rules')->insertOrIgnore([
'user_id' => $userId,
'rank_id' => $rankId,
'job_id' => $jobId,
'disk' => $disk,
'path' => $path,
'access' => $access
]);
}
public static function all($value = null,$columns = null)
{