User landingPages connect per role permission.
This commit is contained in:
parent
49920f0c46
commit
95bb91dcf5
@ -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..',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
21
resources/assets/js/views/auth/users.js
vendored
21
resources/assets/js/views/auth/users.js
vendored
@ -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 => {
|
||||
});
|
||||
},
|
||||
}
|
||||
});
|
||||
|
@ -44,7 +44,7 @@
|
||||
@endcan
|
||||
|
||||
@role('admin|manager')
|
||||
<x-form.group.select name="roles" label="{{ trans_choice('general.roles', 1) }}" :options="$roles" />
|
||||
<x-form.group.select name="roles" label="{{ trans_choice('general.roles', 1) }}" :options="$roles" change="onChangeRole" />
|
||||
@endrole
|
||||
</x-slot>
|
||||
</x-form.section>
|
||||
@ -56,7 +56,7 @@
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="body">
|
||||
<x-form.group.select name="landing_page" label="{!! trans('auth.landing_page') !!}" :options="$landing_pages" selected="dashboard" />
|
||||
<x-form.group.select name="landing_page" label="{!! trans('auth.landing_page') !!}" :options="$landing_pages" dynamicOptions="landing_pages" selected="dashboard" />
|
||||
|
||||
<x-form.group.locale />
|
||||
</x-slot>
|
||||
|
@ -50,7 +50,7 @@
|
||||
@endcan
|
||||
|
||||
@role('admin|manager')
|
||||
<x-form.group.select name="roles" label="{{ trans_choice('general.roles', 1) }}" :options="$roles" selected-key="roles.id" />
|
||||
<x-form.group.select name="roles" label="{{ trans_choice('general.roles', 1) }}" :options="$roles" change="onChangeRole" selected-key="roles.id" />
|
||||
@endrole
|
||||
</x-slot>
|
||||
</x-form.section>
|
||||
@ -62,7 +62,7 @@
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="body">
|
||||
<x-form.group.select name="landing_page" label="{{ trans('auth.landing_page') }}" :options="$landing_pages" />
|
||||
<x-form.group.select name="landing_page" label="{{ trans('auth.landing_page') }}" :options="$landing_pages" dynamicOptions="landing_pages" />
|
||||
|
||||
<x-form.group.locale />
|
||||
</x-slot>
|
||||
|
@ -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');
|
||||
|
Loading…
x
Reference in New Issue
Block a user