mirror of
https://gitlab.com/TheGamecraft/c-cms.git
synced 2026-04-21 10:49:10 -04:00
File systeme V3
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
|
||||
Reference in New Issue
Block a user