From 87ff04bc0df5f8d8f510b66d307fba39b9470bef Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 15 Dec 2020 18:24:29 +0100 Subject: [PATCH] wip #3753 @1 --- composer.json | 2 +- ...bedesignersUserDatabaseServiceProvider.php | 66 +++++++++++++++++++ src/app/Fields/Users.php | 11 ++++ src/{ => app/Models}/Company.php | 21 ++++-- src/{ => app/Models}/User.php | 36 +++++++--- src/{ => app}/Operations/LoginasOperation.php | 2 +- src/{ => app}/Permissions.php | 3 + src/{ => app/SubForms}/Address.php | 2 +- 8 files changed, 126 insertions(+), 17 deletions(-) create mode 100644 src/app/CubedesignersUserDatabaseServiceProvider.php create mode 100644 src/app/Fields/Users.php rename src/{ => app/Models}/Company.php (83%) rename src/{ => app/Models}/User.php (80%) rename src/{ => app}/Operations/LoginasOperation.php (93%) rename src/{ => app}/Permissions.php (98%) rename src/{ => app/SubForms}/Address.php (92%) diff --git a/composer.json b/composer.json index 76a219f..2847759 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ ], "autoload": { "psr-4": { - "Cubedesigners\\UserDatabase\\": "src" + "Cubedesigners\\UserDatabase\\": "src/app" } }, "authors": [ diff --git a/src/app/CubedesignersUserDatabaseServiceProvider.php b/src/app/CubedesignersUserDatabaseServiceProvider.php new file mode 100644 index 0000000..f829f54 --- /dev/null +++ b/src/app/CubedesignersUserDatabaseServiceProvider.php @@ -0,0 +1,66 @@ +loadTranslationsFrom(realpath($resourcesDir . '/lang'), self::NAMESPACE); +// foreach (glob($base . '/routes/cubist/backpack/*.php') as $filename) { +// $this->loadRoutesFrom($filename); +// } + //$this->publishes([$resourcesDir . '/config/cubedesigners_userdatabase.php' => config_path('cubedesigners_userdatabase.php')], 'config'); + $this->loadViewsFrom(realpath($resourcesDir . '/views'), self::NAMESPACE); + } + + + /** + * Register any package services. + * + * @return void + */ + public function register() + { + $base = realpath(__DIR__ . "/.."); + $resourcesDir = $base . '/resources'; + + +// $configs = ['app', 'cubist']; +// +// foreach ($configs as $config) { +// $this->mergeConfigFrom($resourcesDir . '/config/' . $config . '.php', $config); +// } + + +// $this->commands([ +// InstallCommand::class, +// UpdateCommand::class, +// GenerateCommand::class, +// MigrateCommand::class, +// SearchIndexCommand::class, +// LocaleCopy::class, +// LocaleSlugReset::class +// ]); + } +} diff --git a/src/app/Fields/Users.php b/src/app/Fields/Users.php new file mode 100644 index 0000000..41857f2 --- /dev/null +++ b/src/app/Fields/Users.php @@ -0,0 +1,11 @@ + 'entreprise', 'plural' => 'entreprises']; - protected $_enableBulk=false; + protected $_enableBulk = false; + protected $_enableDeletion = false; + protected $_enableClone = false; public function setFields() { @@ -63,7 +67,16 @@ class Company extends CubistMagicAbstractModel 'optionsmodel' => User::class, 'attribute' => 'nameWithCompany', 'label' => __('Administrateur'), - 'tab' => __('Informations')]); + 'tab' => __('Informations'), + ]); + + $this->addField([ + 'name' => 'users', + 'type' => Users::class, + 'label' => '', + 'column' => true, + 'tab' => __('Contacts'), + ]); $this->addField(['name' => 'website', 'type' => 'URL', @@ -96,7 +109,7 @@ class Company extends CubistMagicAbstractModel if ($bu->hasPermissionTo('company:admin')) { return; } - $builder->whereIn('id', Permissions::getManagedCompanies($bu->id)); + $builder->whereIn('id', $bu->getManagedCompanies()); } } diff --git a/src/User.php b/src/app/Models/User.php similarity index 80% rename from src/User.php rename to src/app/Models/User.php index 02f27a2..9f271cb 100644 --- a/src/User.php +++ b/src/app/Models/User.php @@ -1,7 +1,9 @@ Company::class, 'tab' => __('Contact'), 'column' => true, + 'can' => 'users:admin', ]); $this->addField(['name' => 'address', @@ -123,7 +133,9 @@ class User extends CubistMagicAuthenticatable $cacheKey = '_get_compagny_names'; start_measure($cacheKey, 'Get compagny names'); self::$_companyNames = cache()->tags(['model_' . Company::class])->remember($cacheKey, 86400, function () { - return Company::withoutGlobalScopes()->pluck('name', 'id')->toArray(); + set_time_limit(0); + $res = Company::withoutGlobalScopes()->get(); + return $res->pluck('name', 'id')->toArray(); }); stop_measure($cacheKey); if (null === $id) { @@ -135,18 +147,22 @@ class User extends CubistMagicAuthenticatable public function getManagedUsers() { - start_measure('_get_managed_users', 'Get managed users'); - $res = Permissions::getManagedUsers($this->id); - stop_measure('_get_managed_users'); - return $res; + if (null === $this->_managedUsers) { + start_measure('_get_managed_users', 'Get managed users'); + $this->_managedUsers = Permissions::getManagedUsers($this->id); + stop_measure('_get_managed_users'); + } + return $this->_managedUsers; } public function getManagedCompanies() { - start_measure('_get_managed_companies', 'Get managed companies'); - $res = Permissions::getManagedCompanies($this->id); - stop_measure('_get_managed_companies'); - return $res; + if (null === $this->_managedCompanies) { + start_measure('_get_managed_companies', 'Get managed companies'); + $this->_managedCompanies = Permissions::getManagedCompanies($this->id); + stop_measure('_get_managed_companies'); + } + return $this->_managedCompanies; } public function isOwner($user) diff --git a/src/Operations/LoginasOperation.php b/src/app/Operations/LoginasOperation.php similarity index 93% rename from src/Operations/LoginasOperation.php rename to src/app/Operations/LoginasOperation.php index 0983cef..a384ac0 100644 --- a/src/Operations/LoginasOperation.php +++ b/src/app/Operations/LoginasOperation.php @@ -2,7 +2,7 @@ namespace Cubedesigners\UserDatabase\Operations; -use Cubedesigners\UserDatabase\User; +use Cubedesigners\UserDatabase\Models\User; use Illuminate\Support\Facades\Route; trait LoginasOperation diff --git a/src/Permissions.php b/src/app/Permissions.php similarity index 98% rename from src/Permissions.php rename to src/app/Permissions.php index 37348cd..90f98c1 100644 --- a/src/Permissions.php +++ b/src/app/Permissions.php @@ -2,6 +2,9 @@ namespace Cubedesigners\UserDatabase; +use Cubedesigners\UserDatabase\Models\Company; +use Cubedesigners\UserDatabase\Models\User; + class Permissions { protected static $_data = false; diff --git a/src/Address.php b/src/app/SubForms/Address.php similarity index 92% rename from src/Address.php rename to src/app/SubForms/Address.php index 7e12142..61601bb 100644 --- a/src/Address.php +++ b/src/app/SubForms/Address.php @@ -1,7 +1,7 @@