From 5217abc590c7a7d5a47dacc0af15a0eeae5790ee Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Wed, 24 May 2023 10:34:53 +0200 Subject: [PATCH] wip #5944 @3 --- src/app/Models/Company.php | 11 ++++++++++- src/app/Models/User.php | 17 +++++++++++++---- src/app/Permissions.php | 34 ++++++++++++++++------------------ 3 files changed, 39 insertions(+), 23 deletions(-) diff --git a/src/app/Models/Company.php b/src/app/Models/Company.php index fe32602..0e4decd 100644 --- a/src/app/Models/Company.php +++ b/src/app/Models/Company.php @@ -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() diff --git a/src/app/Models/User.php b/src/app/Models/User.php index a782856..e2f2522 100644 --- a/src/app/Models/User.php +++ b/src/app/Models/User.php @@ -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']); diff --git a/src/app/Permissions.php b/src/app/Permissions.php index 66274c0..9b398c8 100644 --- a/src/app/Permissions.php +++ b/src/app/Permissions.php @@ -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; -- 2.39.5