]> _ Git - cubedesigners_userdatabase.git/commitdiff
wip #5944 @3
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 24 May 2023 08:34:53 +0000 (10:34 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 24 May 2023 08:34:53 +0000 (10:34 +0200)
src/app/Models/Company.php
src/app/Models/User.php
src/app/Permissions.php

index fe32602f09eb6744b8fc191428e639d19b7754d8..0e4decdd9bd40b1a72ba81230ccc5a1d1c7568d8 100644 (file)
@@ -69,6 +69,7 @@ class Company extends CubistMagicAbstractModel
             'label' => __('Administrateur'),
             'tab' => __('Permissions'),
             'column' => true,
+            'can' => 'company:admin',
             'default' => $buid,
         ]);
 
@@ -86,6 +87,7 @@ class Company extends CubistMagicAbstractModel
                 'database_default' => 0,
                 'allows_empty' => false,
                 'column' => true,
+                'can' => 'company:admin',
                 'tab' => __('Permissions')]
         );
 
@@ -96,6 +98,7 @@ class Company extends CubistMagicAbstractModel
                 'database_default' => 0,
                 'allows_empty' => false,
                 'column' => true,
+                'can' => 'company:admin',
                 'tab' => __('Permissions')]
         );
 
@@ -135,6 +138,7 @@ class Company extends CubistMagicAbstractModel
             'tab' => __('Chiffres'),
             'column' => true,
             'column_label' => __('CA'),
+            'can' => 'company:admin',
             'read_only' => true]);
 
         $currentYear = date('Y');
@@ -143,6 +147,7 @@ class Company extends CubistMagicAbstractModel
                 'column' => ($i >= $currentYear - 2),
                 //'column' => true,
                 'column_label' => __('CA') . ' ' . $i,
+                'can' => 'company:admin',
                 'read_only' => true]);
         }
 
@@ -153,12 +158,14 @@ class Company extends CubistMagicAbstractModel
             'tab' => __('Chiffres'),
             'column' => true,
             'column_label' => __('Impayés'),
+            'can' => 'company:admin',
             'read_only' => true]);
 
         for ($i = $currentYear; $i >= 2006; $i--) {
             $this->addField('c_unpaid_' . $i, Integer::class, __('Impayés') . ' ' . $i, ['tab' => __('Impayés'),
                 'column' => false,
                 'column_label' => __('Impayés') . ' ' . $i,
+                'can' => 'company:admin',
                 'read_only' => true]);
         }
 
@@ -188,7 +195,9 @@ class Company extends CubistMagicAbstractModel
         if ($bu->hasPermissionTo('company:admin')) {
             return;
         }
-        $builder->whereIn('id', $bu->getManagedCompanies());
+
+        $companies = array_diff($bu->getManagedCompanies(), [$bu->company]);
+        $builder->whereIn('id', $companies);
     }
 
     public function getUsers()
index a782856aeaa2d6ef6a273267fe89793b45acd652..e2f2522f7ef176f5fe25d13957b146d19dc97d91 100644 (file)
@@ -85,19 +85,25 @@ class User extends CubistMagicAuthenticatable implements HasLocalePreference
         $this->addField(['name' => 'slack',
                 'label' => __('Identifiant Slack'),
                 'type' => Text::class,
-                'tab' => __('Equipe Cubedesigners')]
+                'tab' => __('Equipe Cubedesigners'),
+                'can'=>'user:admin',
+            ]
         );
 
         $this->addField(['name' => 'oxygene',
                 'label' => __('Trigramme Oxygene'),
                 'type' => Text::class,
-                'tab' => __('Equipe Cubedesigners')]
+                'tab' => __('Equipe Cubedesigners'),
+                'can'=>'user:admin',
+            ]
         );
 
         $this->addField(['name' => 'planning_color',
                 'label' => __('Couleur plannings'),
                 'type' => Color::class,
-                'tab' => __('Equipe Cubedesigners')]
+                'tab' => __('Equipe Cubedesigners'),
+                 'can'=>'user:admin',
+            ]
         );
 
         $this->addField(['name' => 'locale',
@@ -113,6 +119,7 @@ class User extends CubistMagicAuthenticatable implements HasLocalePreference
                 1 => __('Equipier'),
                 2 => __('Admin'),
                 3 => __('Comptable')],
+            'can'=>'user:admin',
             'tab' => 'Extranet V1']);
 
         $this->addField(['name' => 'c_ca',
@@ -120,7 +127,9 @@ class User extends CubistMagicAuthenticatable implements HasLocalePreference
             'type' => Integer::class,
             'tab' => __('Chiffres'),
             'column' => true,
-            'read_only' => true]);
+            'read_only' => true,
+            'can'=>'user:admin',
+        ]);
 
         $this->addField(['name' => 'toolbox_settings',
             'type' => Hidden::class, 'default' => '{}', 'cast' => 'json']);
index 66274c0f3966e560662dc8a47a48efecf7b2cebc..9b398c8c604cfd5ce6d4c813d63a92ce306a6aa5 100644 (file)
@@ -82,33 +82,31 @@ class Permissions
                 }
             }
 
-            foreach ($data['companyManagedBy'] as $company => $admins) {
-                foreach ($admins as $admin) {
-                    if (!isset($data['managedCompanies'][$admin])) {
-                        $data['managedCompanies'][$admin] = [];
+            foreach ($data['companyManagedBy'] as $company => $administratingCompanies) {
+                foreach ($administratingCompanies as $administratingCompany) {
+                    if (!isset($data['companyUsers'][$administratingCompany])) {
+                        continue;
+                    }
+                    $users = $data['companyUsers'][$administratingCompany];
+                    foreach ($users as $u) {
+                        if (!isset($data['managedCompanies'][$u])) {
+                            $data['managedCompanies'][$u] = [];
+                        }
+                        $data['managedCompanies'][$u][] = $company;
                     }
-                    $data['managedCompanies'][$admin][] = $company;
                 }
             }
 
-            foreach ($data['companyUsers'] as $company => $users) {
-                if (!isset($data['managedCompanies'][$company])) {
-                    continue;
-                }
+            foreach ($data['managedCompanies'] as $user => $companies) {
                 $managedUsers = [];
-                foreach ($data['managedCompanies'][$company] as $managedCompany) {
-                    if (!isset($data['companyUsers'][$managedCompany])) {
+                foreach ($companies as $company) {
+                    if (!isset($data['companyUsers'][$company])) {
                         continue;
                     }
-                    $managedUsers = array_merge($managedUsers, $data['companyUsers'][$managedCompany]);
+                    $managedUsers = array_merge($managedUsers, $data['companyUsers'][$company]);
                 }
 
-                foreach ($users as $user) {
-                    if (!isset($data['managedUsers'][$user])) {
-                        $data['managedUsers'][$user] = [];
-                    }
-                    $data['managedUsers'][$user] = array_merge($data['managedUsers'][$user], $managedUsers);
-                }
+                $data['managedUsers'][$user] = $managedUsers;
             }
 
             return $data;