diff --git a/app/Http/Controllers/Auth/Users.php b/app/Http/Controllers/Auth/Users.php index 65ede27f9..d810e1202 100644 --- a/app/Http/Controllers/Auth/Users.php +++ b/app/Http/Controllers/Auth/Users.php @@ -119,6 +119,7 @@ class Users extends Controller } $u = new \stdClass(); + $u->role = $user->roles()->first(); $u->landing_pages = []; event(new LandingPageShowing($u)); @@ -354,4 +355,35 @@ class Users extends Controller return response()->json($response); } + + /** + * Process request for reinviting the specified resource. + * + * @param Role $role + * + * @return Response + */ + public function landingPages(BaseRequest $request) + { + $role = false; + + if ($request->has('role_id')) { + $role = Role::find($request->get('role_id')); + } + + $u = new \stdClass(); + $u->role = $role; + $u->landing_pages = []; + + event(new LandingPageShowing($u)); + + $landing_pages = $u->landing_pages; + + return response()->json([ + 'success' => true, + 'error' => false, + 'data' => $landing_pages, + 'message' => 'Get role by landing pages..', + ]); + } } diff --git a/app/Listeners/Auth/AddLandingPages.php b/app/Listeners/Auth/AddLandingPages.php index 2ae15319b..f83d0013b 100644 --- a/app/Listeners/Auth/AddLandingPages.php +++ b/app/Listeners/Auth/AddLandingPages.php @@ -15,6 +15,8 @@ class AddLandingPages public function handle(Event $event) { $user = user(); + $role = ! empty($event->user->role) ? $event->user->role : false; + $routes = [ 'dashboard' => [ 'permission' => 'read-common-dashboards', @@ -79,7 +81,9 @@ class AddLandingPages ]; foreach($routes as $key => $route) { - if (!$user->can($route['permission'])) { + if ($role && ! $role->hasPermission($route['permission'])) { + continue; + } else if (! $user->can($route['permission'])) { continue; } diff --git a/resources/assets/js/views/auth/users.js b/resources/assets/js/views/auth/users.js index d399b339f..8f91e2c1a 100644 --- a/resources/assets/js/views/auth/users.js +++ b/resources/assets/js/views/auth/users.js @@ -30,6 +30,7 @@ const app = new Vue({ form: new Form('user'), bulk_action: new BulkAction('users'), show_password: false, + landing_pages: null, } }, @@ -51,5 +52,25 @@ const app = new Vue({ this.show_password = false; } }, + + onChangeRole(role_id) { + if (! role_id) { + return; + } + + let role_promise = Promise.resolve(window.axios.get(url + '/auth/users/landingpages', { + params: { + role_id: role_id + } + })); + + role_promise.then(response => { + if (response.data.success) { + this.landing_pages = response.data.data; + } + }) + .catch(error => { + }); + }, } }); diff --git a/resources/views/auth/users/create.blade.php b/resources/views/auth/users/create.blade.php index e2ccd6546..c9e19074a 100644 --- a/resources/views/auth/users/create.blade.php +++ b/resources/views/auth/users/create.blade.php @@ -44,7 +44,7 @@ @endcan @role('admin|manager') - + @endrole @@ -56,7 +56,7 @@ - + diff --git a/resources/views/auth/users/edit.blade.php b/resources/views/auth/users/edit.blade.php index ee735c425..d92bf4b1c 100644 --- a/resources/views/auth/users/edit.blade.php +++ b/resources/views/auth/users/edit.blade.php @@ -50,7 +50,7 @@ @endcan @role('admin|manager') - + @endrole @@ -62,7 +62,7 @@ - + diff --git a/routes/admin.php b/routes/admin.php index e89f4ed5e..be8a23405 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -54,6 +54,7 @@ Route::group(['prefix' => 'auth'], function () { Route::get('logout', 'Auth\Login@destroy')->name('logout'); Route::get('users/autocomplete', 'Auth\Users@autocomplete')->name('users.autocomplete'); + Route::get('users/landingpages', 'Auth\Users@landingPages')->name('users.landingpages'); Route::get('users/{user}/read-bills', 'Auth\Users@readUpcomingBills')->name('users.read.bills'); Route::get('users/{user}/read-invoices', 'Auth\Users@readOverdueInvoices')->name('users.read.invoices'); Route::get('users/{user}/enable', 'Auth\Users@enable')->name('users.enable');