diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 109467ca..ab84a479 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -46,6 +46,7 @@ class Kernel extends HttpKernel */ protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, + 'onlyAdmin' => \App\Http\Middleware\RequireAdminRole::class, // 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, diff --git a/app/Http/Middleware/RequireAdminRole.php b/app/Http/Middleware/RequireAdminRole.php new file mode 100644 index 00000000..f0ea40b1 --- /dev/null +++ b/app/Http/Middleware/RequireAdminRole.php @@ -0,0 +1,28 @@ +role != User::ROLE_ADMIN) { + return redirect() + ->back() + ->with('error', trans('auth.accessDenied')); + } + + return $next($request); + } +} diff --git a/app/Http/routes.php b/app/Http/routes.php index e0582b89..763d8c64 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -28,22 +28,55 @@ Route::group([ 'prefix' => 'admin' ], function () { + // these routes are available only for user with role admin + Route::group(['middleware' => 'onlyAdmin'], function () { + // display form for creating new user + Route::get('users/new', 'CreateNewUser@getNewUser') + ->name('users.new'); + + // POST methods + // display form for creating new user + Route::post('users/new', 'CreateNewUser@postRegistration') + ->name('users.newPost'); + + // display form for edit of existing user + Route::get('users/edit/{id}', 'EditUser@getEditExistingUser') + ->name('users.edit'); + + // form for adding new custom field + Route::get('customfields/new', 'CreateNewCustomField@getNew') + ->name('customfields.new'); + + // form for editing custom field + Route::get('customfields/edit/{id}', 'EditCustomField@getEditCustomField') + ->name('customfields.edit'); + + // form for adding new custom field + Route::post('customfields/new', 'CreateNewCustomField@postNew') + ->name('customfields.newPost'); + + // form for editing custom field + Route::post('customfields/edit/{id}', 'EditCustomField@postEditCustomField') + ->name('customfields.editPost'); + + Route::get('customfields/delete/{id}', 'EditCustomField@deleteCustomField') + ->name('customfields.delete'); + }); + + // these routes are available for all logged (authenticated) users + // display dashboard with some usefull information Route::get('/', 'Dashboard@getIndex') ->name('admin.dashboard'); - // display form for creating new user - Route::get('users/new', 'CreateNewUser@getNewUser') - ->name('users.new'); - - // display form for edit of existing user - Route::get('users/edit/{id}', 'EditUser@getEditExistingUser') - ->name('users.edit'); - // display user detail in admin Route::get('users/detail/{id?}', 'UserDetail@getDetail') ->name('users.detail'); + // method for saving edited data of user + Route::post('users/edit/{id}', 'EditUser@postEdit') + ->name('users.editPost'); + // display list of all users registered into our system Route::get('users/overview/{state?}/{perPage?}', 'UsersOverview@getOverview') ->name('users.overview'); @@ -55,25 +88,6 @@ Route::group([ Route::get('customfields/overview', 'CustomFieldsOverview@getOverview') ->name('customfields.overview'); - // form for adding new custom field - Route::get('customfields/new', 'CreateNewCustomField@getNew') - ->name('customfields.new'); - - // form for editing custom field - Route::get('customfields/edit/{id}', 'EditCustomField@getEditCustomField') - ->name('customfields.edit'); - - // form for adding new custom field - Route::post('customfields/new', 'CreateNewCustomField@postNew') - ->name('customfields.newPost'); - - // form for editing custom field - Route::post('customfields/edit/{id}', 'EditCustomField@postEditCustomField') - ->name('customfields.editPost'); - - Route::get('customfields/delete/{id}', 'EditCustomField@deleteCustomField') - ->name('customfields.delete'); - // logout method Route::get('logout', function () { @@ -84,14 +98,6 @@ Route::group([ return redirect() ->route('login') ->with('success', trans('admin/common.logoutSuccessfull')); - })->name('logout'); - - // POST methods - // display form for creating new user - Route::post('users/new', 'CreateNewUser@postRegistration') - ->name('users.newPost'); - - // method for saving edited data of user - Route::post('users/edit/{id}', 'EditUser@postEdit') - ->name('users.editPost'); + }) + ->name('logout'); }); diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php index e5506df2..48caf09f 100644 --- a/resources/lang/en/auth.php +++ b/resources/lang/en/auth.php @@ -15,5 +15,6 @@ return [ 'failed' => 'These credentials do not match our records.', 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'accessDenied' => 'You cannot access this resource' ];