From 6a639c6f91b33ed8c06d57a8475ccb3e66539fd1 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Tue, 7 Jan 2020 00:21:33 +0300 Subject: [PATCH] create permissions for reports and widgets --- .../module/Commands/InstallCommand.php | 66 ++++++++++++++---- public/files/import/chart-of-accounts.xlsx | Bin 0 -> 9138 bytes 2 files changed, 52 insertions(+), 14 deletions(-) create mode 100644 public/files/import/chart-of-accounts.xlsx diff --git a/overrides/akaunting/module/Commands/InstallCommand.php b/overrides/akaunting/module/Commands/InstallCommand.php index 3a12bdac5..703b56be0 100644 --- a/overrides/akaunting/module/Commands/InstallCommand.php +++ b/overrides/akaunting/module/Commands/InstallCommand.php @@ -6,6 +6,8 @@ use App\Models\Auth\Permission; use App\Models\Auth\Role; use App\Models\Module\Module; use App\Models\Module\ModuleHistory; +use App\Utilities\Reports; +use App\Utilities\Widgets; use Illuminate\Console\Command; use Illuminate\Support\Str; use Symfony\Component\Console\Input\InputArgument; @@ -56,10 +58,6 @@ class InstallCommand extends Command 'description' => trans('modules.installed', ['module' => $alias]), ]); - if (!empty($module->get('settings'))) { - $this->updatePermissions($module); - } - $this->call('cache:clear'); // Update database @@ -67,6 +65,10 @@ class InstallCommand extends Command event(new \App\Events\Module\Installed($alias, $company_id)); + if (!empty($module->get('reports')) || !empty($module->get('widgets')) || !empty($module->get('settings'))) { + $this->updatePermissions($module); + } + session()->forget('company_id'); if (!empty($old_company_id)) { @@ -93,17 +95,53 @@ class InstallCommand extends Command { $permissions = []; - $permissions[] = Permission::firstOrCreate([ - 'name' => 'read-' . $module->getAlias() . '-settings', - 'display_name' => 'Read ' . $module->getName() . ' Settings', - 'description' => 'Read ' . $module->getName() . ' Settings', - ]); + if (!empty($module->get('reports'))) { + foreach ($module->get('reports') as $class) { + if (!class_exists($class)) { + continue; + } - $permissions[] = Permission::firstOrCreate([ - 'name' => 'update-' . $module->getAlias() . '-settings', - 'display_name' => 'Update ' . $module->getName() . ' Settings', - 'description' => 'Update ' . $module->getName() . ' Settings', - ]); + $name = Reports::getPermission($class); + $display_name = (new $class())->getDefaultName(); + + $permissions[] = Permission::firstOrCreate([ + 'name' => $name, + 'display_name' => 'Read ' . $module->getName() . ' Reports ' . $display_name, + 'description' => 'Read ' . $module->getName() . ' Reports ' . $display_name, + ]); + } + } + + if (!empty($module->get('widgets'))) { + foreach ($module->get('widgets') as $class) { + if (!class_exists($class)) { + continue; + } + + $name = Widgets::getPermission($class); + $display_name = (new $class())->getDefaultName(); + + $permissions[] = Permission::firstOrCreate([ + 'name' => $name, + 'display_name' => 'Read ' . $module->getName() . ' Widgets ' . $display_name, + 'description' => 'Read ' . $module->getName() . ' Widgets ' . $display_name, + ]); + } + } + + if (!empty($module->get('settings'))) { + $permissions[] = Permission::firstOrCreate([ + 'name' => 'read-' . $module->getAlias() . '-settings', + 'display_name' => 'Read ' . $module->getName() . ' Settings', + 'description' => 'Read ' . $module->getName() . ' Settings', + ]); + + $permissions[] = Permission::firstOrCreate([ + 'name' => 'update-' . $module->getAlias() . '-settings', + 'display_name' => 'Update ' . $module->getName() . ' Settings', + 'description' => 'Update ' . $module->getName() . ' Settings', + ]); + } // Attach permission to roles $roles = Role::all()->filter(function ($r) { diff --git a/public/files/import/chart-of-accounts.xlsx b/public/files/import/chart-of-accounts.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b8107b7c454ae4709727f405c96bebea48ae9412 GIT binary patch literal 9138 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 literal 0 HcmV?d00001