From 9654748f1f68ac7c6ede163ba759f5dfc1ed323c Mon Sep 17 00:00:00 2001 From: jitendra Date: Thu, 20 Dec 2018 16:24:30 +0530 Subject: [PATCH] Issue #348 fixed --- .../src/Providers/AdminServiceProvider.php | 47 +++++++++++++++---- packages/Webkul/Core/src/Tree.php | 10 ++++ .../Webkul/Shipping/src/Config/system.php | 20 ++++++++ .../Shop/src/Resources/assets/js/app.js | 10 +++- .../Resources/views/layouts/master.blade.php | 2 + .../Ui/src/Resources/assets/sass/app.scss | 5 ++ .../User/src/Http/Middleware/Bouncer.php | 4 +- 7 files changed, 86 insertions(+), 12 deletions(-) diff --git a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php index fd5286547..8bfd68f32 100644 --- a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php +++ b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php @@ -35,6 +35,8 @@ class AdminServiceProvider extends ServiceProvider $this->composeView(); + $this->registerACL(); + $this->app->register(EventServiceProvider::class); $this->app->bind( @@ -87,17 +89,44 @@ class AdminServiceProvider extends ServiceProvider }); view()->composer(['admin::users.roles.create', 'admin::users.roles.edit'], function ($view) { - $tree = Tree::create(); - - foreach(config('acl') as $item) { - $tree->add($item); - } - - $tree->items = core()->sortItems($tree->items); - - $view->with('acl', $tree); + $view->with('acl', $this->createACL()); }); } + + /** + * Registers acl to entire application + * + * @return void + */ + public function registerACL() + { + $this->app->singleton('acl', function () { + return $this->createACL(); + }); + } + + /** + * Create acl tree + * + * @return mixed + */ + public function createACL() + { + static $tree; + + if($tree) + return $tree; + + $tree = Tree::create(); + + foreach(config('acl') as $item) { + $tree->add($item, 'acl'); + } + + $tree->items = core()->sortItems($tree->items); + + return $tree; + } /** * Register package config. diff --git a/packages/Webkul/Core/src/Tree.php b/packages/Webkul/Core/src/Tree.php index 1f832b2d3..7e3fd8d8a 100644 --- a/packages/Webkul/Core/src/Tree.php +++ b/packages/Webkul/Core/src/Tree.php @@ -19,6 +19,13 @@ class Tree { */ public $items = []; + /** + * Contains acl roles + * + * @var array + */ + public $roles = []; + /** * Contains current item route * @@ -74,11 +81,14 @@ class Tree { if (strpos($this->current, $item['url']) !== false) { $this->currentKey = $item['key']; } + } else if ($type == 'acl') { + $this->roles[$item['route']] = $item['key']; } $children = str_replace('.', '.children.', $item['key']); core()->array_set($this->items, $children, $item); + } /** diff --git a/packages/Webkul/Shipping/src/Config/system.php b/packages/Webkul/Shipping/src/Config/system.php index 8709afee8..9f1553fc9 100644 --- a/packages/Webkul/Shipping/src/Config/system.php +++ b/packages/Webkul/Shipping/src/Config/system.php @@ -61,6 +61,26 @@ return [ 'type' => 'textarea', 'channel_based' => true, 'locale_based' => false + ], [ + 'name' => 'default_rate', + 'title' => 'Rate', + 'type' => 'text', + 'channel_based' => true, + 'locale_based' => false + ], [ + 'name' => 'type', + 'title' => 'Type', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'Per Unit', + 'value' => 'Per Order' + ], [ + 'title' => 'Inactive', + 'value' => 'per_order' + ] + ], + 'validation' => 'required' ], [ 'name' => 'active', 'title' => 'Status', diff --git a/packages/Webkul/Shop/src/Resources/assets/js/app.js b/packages/Webkul/Shop/src/Resources/assets/js/app.js index 97c959c32..644c20cfa 100644 --- a/packages/Webkul/Shop/src/Resources/assets/js/app.js +++ b/packages/Webkul/Shop/src/Resources/assets/js/app.js @@ -17,6 +17,10 @@ $(document).ready(function () { const app = new Vue({ el: "#app", + data: { + modalIds: {} + }, + mounted: function () { this.addServerErrors(); this.addFlashMessages(); @@ -79,7 +83,11 @@ $(document).ready(function () { }, this); }, - responsiveHeader: function () { } + responsiveHeader: function () { }, + + showModal(id) { + this.$set(this.modalIds, id, true); + } } }); }); diff --git a/packages/Webkul/Shop/src/Resources/views/layouts/master.blade.php b/packages/Webkul/Shop/src/Resources/views/layouts/master.blade.php index 24fffa8f4..540c304ac 100644 --- a/packages/Webkul/Shop/src/Resources/views/layouts/master.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/layouts/master.blade.php @@ -101,6 +101,8 @@ {!! view_render_event('bagisto.shop.layout.body.after') !!} + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/sass/app.scss b/packages/Webkul/Ui/src/Resources/assets/sass/app.scss index 7fc08c724..890a735a6 100644 --- a/packages/Webkul/Ui/src/Resources/assets/sass/app.scss +++ b/packages/Webkul/Ui/src/Resources/assets/sass/app.scss @@ -709,6 +709,11 @@ h2 { } } + +modal { + display: none; +} + .modal-open { overflow: hidden; } diff --git a/packages/Webkul/User/src/Http/Middleware/Bouncer.php b/packages/Webkul/User/src/Http/Middleware/Bouncer.php index 4e84ab952..550775730 100644 --- a/packages/Webkul/User/src/Http/Middleware/Bouncer.php +++ b/packages/Webkul/User/src/Http/Middleware/Bouncer.php @@ -29,10 +29,10 @@ class Bouncer public function checkIfAuthorized($request) { - if(!$role = auth()->guard('admin')->user()->role) + if (!$role = auth()->guard('admin')->user()->role) abort(401, 'This action is unauthorized.'); - if($role->permission_type == 'all'){ + if ($role->permission_type == 'all') { return; } else { $acl = app('acl');