diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 03063887..7a1419ac 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -59,13 +59,11 @@ class Kernel extends HttpKernel 'auth' => \App\Http\Middleware\Authenticate::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, - 'verified' => \App\Http\Middleware\CheckUserVerified::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, - 'admin' => \App\Http\Middleware\CheckAdministrator::class, - 'super-admin' => \App\Http\Middleware\CheckSuperAdmin::class, - 'player' => \App\Http\Middleware\CheckPlayerExist::class, + 'role' => \App\Http\Middleware\CheckRole::class, 'setup' => \App\Http\Middleware\CheckInstallation::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \App\Http\Middleware\CheckUserVerified::class, ]; } diff --git a/app/Http/Middleware/CheckAdministrator.php b/app/Http/Middleware/CheckAdministrator.php deleted file mode 100644 index cb0307b3..00000000 --- a/app/Http/Middleware/CheckAdministrator.php +++ /dev/null @@ -1,13 +0,0 @@ -user()->isAdmin(), 403, trans('auth.check.admin')); - - return $next($request); - } -} diff --git a/app/Http/Middleware/CheckRole.php b/app/Http/Middleware/CheckRole.php new file mode 100644 index 00000000..88e15a60 --- /dev/null +++ b/app/Http/Middleware/CheckRole.php @@ -0,0 +1,24 @@ + -1, + 'normal' => 0, + 'admin' => 1, + 'super-admin' => 2, + ]; + + public function handle(Request $request, Closure $next, $role) + { + $permission = $request->user()->permission; + abort_if($permission < $this->roles[$role], 403); + + return $next($request); + } +} diff --git a/app/Http/Middleware/CheckSuperAdmin.php b/app/Http/Middleware/CheckSuperAdmin.php deleted file mode 100644 index 9760eb7e..00000000 --- a/app/Http/Middleware/CheckSuperAdmin.php +++ /dev/null @@ -1,16 +0,0 @@ -user()->permission != User::SUPER_ADMIN, 403, trans('auth.check.super-admin')); - - return $next($request); - } -} diff --git a/routes/web.php b/routes/web.php index 64864b7a..b2cb3562 100644 --- a/routes/web.php +++ b/routes/web.php @@ -118,7 +118,7 @@ Route::prefix('skinlib')->name('skinlib.')->group(function () { Route::prefix('admin') ->name('admin.') - ->middleware(['authorize', 'admin']) + ->middleware(['authorize', 'role:admin']) ->group(function () { Route::get('', 'AdminController@index'); Route::get('chart', 'AdminController@chartData'); @@ -172,7 +172,7 @@ Route::prefix('admin') }); }); - Route::prefix('update')->middleware('super-admin')->group(function () { + Route::prefix('update')->middleware('role:super-admin')->group(function () { Route::get('', 'UpdateController@showUpdatePage'); Route::post('download', 'UpdateController@download'); }); diff --git a/tests/HttpTest/MiddlewareTest/CheckAdministratorTest.php b/tests/HttpTest/MiddlewareTest/CheckAdministratorTest.php deleted file mode 100644 index 57d4f57e..00000000 --- a/tests/HttpTest/MiddlewareTest/CheckAdministratorTest.php +++ /dev/null @@ -1,29 +0,0 @@ -get('/admin')->assertRedirect('/auth/login'); - - // Normal user - $this->actingAs(factory(User::class)->create()) - ->get('/admin') - ->assertStatus(403); - - // Admin - $this->actingAs(factory(User::class, 'admin')->create()) - ->get('/admin') - ->assertSuccessful(); - - // Super admin - $this->actingAs(factory(User::class, 'superAdmin')->create()) - ->get('/admin') - ->assertSuccessful(); - } -} diff --git a/tests/HttpTest/MiddlewareTest/CheckSuperAdminTest.php b/tests/HttpTest/MiddlewareTest/CheckRoleTest.php similarity index 58% rename from tests/HttpTest/MiddlewareTest/CheckSuperAdminTest.php rename to tests/HttpTest/MiddlewareTest/CheckRoleTest.php index a3bb6b19..bb129cd0 100644 --- a/tests/HttpTest/MiddlewareTest/CheckSuperAdminTest.php +++ b/tests/HttpTest/MiddlewareTest/CheckRoleTest.php @@ -4,16 +4,20 @@ namespace Tests; use App\Models\User; -class CheckSuperAdminTest extends TestCase +class CheckRole extends TestCase { public function testHandle() { - // Admin - $this->actAs(factory(User::class, 'admin')->create()) - ->get('/admin/update') + $this->actAs(factory(User::class)->create()) + ->get('/admin') ->assertForbidden(); - // Super admin + $this->actAs(factory(User::class, 'admin')->create()) + ->get('/admin') + ->assertSuccessful(); + + $this->get('/admin/update')->assertForbidden(); + $this->actAs(factory(User::class, 'superAdmin')->create()) ->get('/admin/update') ->assertSuccessful();