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');