I am trying to set up routing for different roles in my application but I am encountering an error. I want to know if the approach I am using is correct. I would like to specify the routes for each role and I am unsure if my method is the right one to achieve this.
This is my web.php file:
<?php
use IlluminateSupportFacadesAuth;
use IlluminateSupportFacadesRoute;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
//guest pages
Route::get('/', function () {
return redirect()->route('login');
});
Auth::routes();
route::middleware('auth')->group(function () {
Route::get('/home', [AppHttpControllersHomeController::class, 'index'])->name('home');
Route::middleware('hasRole:Super Admin')->prefix('SuperAdmin')->group(function () {
Route::prefix('users')->group(function () {
//users routes
Route::get('', [AppHttpControllersUserController::class, 'index'])->name('users.index');
Route::get('profile/{id}', [AppHttpControllersProfileController::class, 'show'])->name('profile.show');
Route::put('profile/{id}', [AppHttpControllersProfileController::class, 'update'])->name('profile.update');
Route::delete('/delete_user/{id}', [AppHttpControllersUserController::class, 'destroy'])->name('users.destroy');
Route::get('ajouter_utilisateur', [AppHttpControllersUserController::class, 'create'])->name('user.create');
Route::post('ajouter_utilisateur', [AppHttpControllersUserController::class, 'store'])->name('user.store');
});
Route::prefix('fournisseurs')->name('fournisseur.')->group(function () {
//fournisseurs routes
Route::get('', [AppHttpControllersFournisseurController::class, 'index'])->name('index');
Route::delete('{id}', [AppHttpControllersFournisseurController::class, 'destroy'])->name('destroy');
Route::get('edit_fournisseur/{id}', [AppHttpControllersFournisseurController::class, 'edit'])->name('edit');
Route::put('fournisseurs/{id}', [AppHttpControllersFournisseurController::class, 'update'])->name('update');
Route::get('ajouter_fournisseur', [AppHttpControllersFournisseurController::class, 'create'])->name('create');
Route::post('ajouter_fournisseur', [AppHttpControllersFournisseurController::class, 'store'])->name('store');
});
Route::prefix('factures')->name('facture.')->group(function () {
//factures routes
Route::get('', [AppHttpControllersFactureController::class, 'index'])->name('index');
Route::delete('{id}', [AppHttpControllersFactureController::class, 'destroy'])->name('destroy');
Route::get('ajouter_facture', [AppHttpControllersFactureController::class, 'create'])->name('create');
Route::post('ajouter_facture', [AppHttpControllersFactureController::class, 'store'])->name('store');
Route::get('download/{id}', [AppHttpControllersFactureController::class, 'downloadFacture'])->name('downloadFacture');
});
});
Route::middleware('hasRole:Admin')->prefix('Admin')->group(function () {
Route::prefix('users')->group(function () {
//users routes
Route::get('', [AppHttpControllersUserController::class, 'index'])->name('users.index');
Route::get('profile/{id}', [AppHttpControllersProfileController::class, 'show'])->name('profile.show');
Route::put('profile/{id}', [AppHttpControllersProfileController::class, 'update'])->name('profile.update');
Route::delete('/delete_user/{id}', [AppHttpControllersUserController::class, 'destroy'])->name('users.destroy');
Route::get('ajouter_utilisateur', [AppHttpControllersUserController::class, 'create'])->name('user.create');
Route::post('ajouter_utilisateur', [AppHttpControllersUserController::class, 'store'])->name('user.store');
});
Route::prefix('fournisseurs')->name('fournisseur.')->group(function () {
//fournisseurs routes
Route::get('', [AppHttpControllersFournisseurController::class, 'index'])->name('index');
});
Route::prefix('factures')->name('facture.')->group(function () {
//factures routes
Route::get('', [AppHttpControllersFactureController::class, 'index'])->name('index');
Route::get('download/{id}', [AppHttpControllersFactureController::class, 'downloadFacture'])->name('downloadFacture');
});
});
});
And with this solution i get the error message
Optimization failed (See output console for more details)
Can someone help me to find out the solution for this issue or suggest me the right way to do it?