Laravel permissions : The super-admin bypass on auth provider doesn't work

Viewed 935

I'm using spatie's laravel-permission package and created roles and permissions on my application and wrote a bypass for the super-admin role, as specified on their doc, in the AuthServiceProvider. It worked like a charm, and suddenly it stopped working for no apparent reason, returning a 403 error. I already rebooted the server and cleared routes cache. I can't find the reason why this stopped working...

Here are my AuthServiceProvider and routes

AuthServiceProvider :

public function boot()
{
    $this->registerPolicies();

    // allows super-admin everywhere in the app
    Gate::before(function (User $user) {
        return $user->hasRole('super-admin') ? true : null;
    });
}

Routes:

// admin only management
Route::group(['prefix' => 'admin', 'middleware' => ['role:writer']], function () {

    //admin dashboard
    Route::get('/dashboard', [AdminController::class, 'index'])->name('admin.dashboard');

    // blog management
    Route::get('articles', [AdminArticles::class, 'index'])->name('admin.articles.index');
    Route::get('articles/create', [AdminArticles::class, 'create'])->name('admin.articles.create');
    Route::get('articles/my-articles', [AdminArticles::class, 'myArticles'])->name('admin.articles.myArticles');
    Route::get('articles/{article}/edit', [AdminArticles::class, 'edit'])->name('admin.articles.edit');
    Route::get('articles/{article}/delete', [AdminArticles::class, 'destroy'])->name('admin.articles.destroy');
    Route::put('articles/{article}', [AdminArticles::class, 'update'])->name('admin.articles.update');
    Route::post('articles', [AdminArticles::class, 'store'])->name('admin.articles.store');
});

Route::group(['prefix' => 'admin', 'middleware' => ['role:super-admin']], function() {
    //pages
    Route::get('/homepage', [HomepageController::class, 'create'])->name('admin.home.create');
    Route::get('/homepage/{homepage}/edit', [HomepageController::class, 'edit'])->name('admin.home.edit');
    Route::put('/homepage/{homepage}', [HomepageController::class, 'update'])->name('admin.home.update');
    Route::post('/homepage', [HomepageController::class, 'store'])->name('admin.home.store');

    //users
    Route::get('users', [UsersController::class, 'index'])->name('users.index');
    Route::get('users/json', [UsersController::class, 'usersJson'])->name('users.json');
    Route::get('users/create', [UsersController::class, 'create'])->name('users.create');
    Route::get('users/{user}/delete', [UsersController::class, 'destroy'])->name('users.destroy');
    Route::get('users/{user}/edit', [UsersController::class, 'edit'])->name('users.edit');
    Route::put('users/{user}', [UsersController::class, 'update'])->name('users.update');
    Route::post('users', [UsersController::class, 'store'])->name('users.store');
});
0 Answers
Related