From f8ad1602c682a5705ef1fac594579ebd83df2824 Mon Sep 17 00:00:00 2001 From: Emre Erden Date: Thu, 2 Feb 2023 14:25:37 +0100 Subject: [PATCH 1/2] web routes are cleaned up --- routes/web.php | 57 +++++++++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/routes/web.php b/routes/web.php index 568ca45..0a34ca5 100644 --- a/routes/web.php +++ b/routes/web.php @@ -14,36 +14,45 @@ */ Route::get('/', \App\Http\Controllers\HomeController::class)->name('home'); -Route::get('book/create', [\App\Http\Controllers\BookController::class, 'create'])->middleware('auth')->name('books.create'); -Route::post('book/store', [\App\Http\Controllers\BookController::class, 'store'])->middleware('auth')->name('books.store'); -Route::get('book/{book:slug}/report/create', [\App\Http\Controllers\BookReportController::class, 'create'])->middleware('auth')->name('books.report.create'); -Route::post('book/{book}/report', [\App\Http\Controllers\BookReportController::class, 'store'])->middleware('auth')->name('books.report.store'); + Route::get('book/{book:slug}', [\App\Http\Controllers\BookController::class, 'show'])->name('books.show'); -Route::get('user/books', [\App\Http\Controllers\BookController::class, 'index'])->middleware('auth')->name('user.books.list'); -Route::get('user/books/{book:slug}/edit', [\App\Http\Controllers\BookController::class, 'edit'])->middleware('auth')->name('user.books.edit'); -Route::put('user/books/{book:slug}', [\App\Http\Controllers\BookController::class, 'update'])->middleware('auth')->name('user.books.update'); -Route::delete('user/books/{book}', [\App\Http\Controllers\BookController::class, 'destroy'])->middleware('auth')->name('user.books.destroy'); +Route::middleware(['auth'])->group(function (){ + Route::resource('books', \App\Http\Controllers\BookController::class) + ->only(['create', 'store']) + ->scoped(['book' => 'slug']); + + Route::resource('books.report', \App\Http\Controllers\BookReportController::class) + ->only(['create', 'store']) + ->scoped(['book' => 'slug']);; + + Route::prefix('user')->name('user.')->group(function (){ + Route::resource('books', \App\Http\Controllers\BookController::class) + ->except(['create', 'store', 'show']) + ->names(['index' => 'books.list']) + ->scoped(['book' => 'slug']); + + Route::resource('orders', \App\Http\Controllers\OrderController::class)->only('index'); -Route::get('user/orders', [\App\Http\Controllers\OrderController::class, 'index'])->middleware('auth')->name('user.orders.index'); + Route::prefix('settings')->group(function (){ + Route::post('password/change/{user}', [\App\Http\Controllers\UserChangePassword::class, 'update'])->name('password.update'); + Route::post('{user}', [\App\Http\Controllers\UserSettingsController::class, 'update'])->name('settings.update'); + }); -Route::get('user/settings', [\App\Http\Controllers\UserSettingsController::class, 'index'])->middleware('auth')->name('user.settings'); -Route::post('user/settings/{user}', [\App\Http\Controllers\UserSettingsController::class, 'update'])->middleware('auth')->name('user.settings.update'); -Route::post('user/settings/password/change/{user}', [\App\Http\Controllers\UserChangePassword::class, 'update'])->middleware('auth')->name('user.password.update'); + Route::resource('settings', \App\Http\Controllers\UserSettingsController::class) + ->names(['index' => 'settings']) + ->only('index'); + }); +}); -Route::get('admin', \App\Http\Controllers\Admin\AdminDashboardController::class)->middleware('isAdmin')->name('admin.index'); -Route::get('admin/books', [\App\Http\Controllers\Admin\AdminBookController::class, 'index'])->middleware('isAdmin')->name('admin.books.index'); -Route::get('admin/books/create', [\App\Http\Controllers\Admin\AdminBookController::class, 'create'])->middleware('isAdmin')->name('admin.books.create'); -Route::post('admin/books', [\App\Http\Controllers\Admin\AdminBookController::class, 'store'])->middleware('isAdmin')->name('admin.books.store'); -Route::get('admin/books/{book}/edit', [\App\Http\Controllers\Admin\AdminBookController::class, 'edit'])->middleware('isAdmin')->name('admin.books.edit'); -Route::put('admin/books/{book}', [\App\Http\Controllers\Admin\AdminBookController::class, 'update'])->middleware('isAdmin')->name('admin.books.update'); -Route::delete('admin/books/{book}', [\App\Http\Controllers\Admin\AdminBookController::class, 'destroy'])->middleware('isAdmin')->name('admin.books.destroy'); -Route::put('admin/book/approve/{book}', [\App\Http\Controllers\Admin\AdminBookController::class, 'approveBook'])->middleware('isAdmin')->name('admin.books.approve'); +Route::middleware(['isAdmin'])->prefix('admin')->name('admin.')->group(function (){ + Route::get('/', \App\Http\Controllers\Admin\AdminDashboardController::class)->name('index'); -Route::get('admin/users', [\App\Http\Controllers\Admin\AdminUsersController::class, 'index'])->middleware('isAdmin')->name('admin.users.index'); -Route::get('admin/users/{user}/edit', [\App\Http\Controllers\Admin\AdminUsersController::class, 'edit'])->middleware('isAdmin')->name('admin.users.edit'); -Route::put('admin/users/{user}', [\App\Http\Controllers\Admin\AdminUsersController::class, 'update'])->middleware('isAdmin')->name('admin.users.update'); -Route::delete('admin/users/{user}', [\App\Http\Controllers\Admin\AdminUsersController::class, 'destroy'])->middleware('isAdmin')->name('admin.users.destroy'); + Route::resource('books', \App\Http\Controllers\Admin\AdminBookController::class); + Route::put('book/approve/{book}', [\App\Http\Controllers\Admin\AdminBookController::class, 'approveBook'])->name('books.approve'); + Route::resource('users', \App\Http\Controllers\Admin\AdminUsersController::class) + ->only(['index', 'edit', 'update','destroy']); +}); require __DIR__ . '/auth.php'; From 98333c11cf07a89c553095e29df2b7c61d2c39af Mon Sep 17 00:00:00 2001 From: Emre Erden Date: Thu, 2 Feb 2023 16:05:59 +0100 Subject: [PATCH 2/2] minor improvements after watching Challenge Result video on youtube => admin routes have been to own route file --- app/Providers/RouteServiceProvider.php | 6 ++++ routes/admin.php | 14 ++++++++ routes/web.php | 48 ++++++++++++++------------ 3 files changed, 46 insertions(+), 22 deletions(-) create mode 100644 routes/admin.php diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index ad262db..cddafd5 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -46,6 +46,12 @@ public function boot() Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web.php')); + + Route::middleware(['web', 'isAdmin']) + ->name('admin.') + ->prefix('admin') + ->namespace($this->namespace) + ->group(base_path('routes/admin.php')); }); } diff --git a/routes/admin.php b/routes/admin.php new file mode 100644 index 0000000..e5d9777 --- /dev/null +++ b/routes/admin.php @@ -0,0 +1,14 @@ +name('index'); + +Route::resource('books', AdminBookController::class)->except('show'); +Route::put('book/approve/{book}', [AdminBookController::class, 'approveBook'])->name('books.approve'); + +Route::resource('users', AdminUsersController::class) + ->only(['index', 'edit', 'update', 'destroy']); \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 0a34ca5..0e5091c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,5 +1,15 @@ name('home'); +Route::get('/', HomeController::class)->name('home'); -Route::get('book/{book:slug}', [\App\Http\Controllers\BookController::class, 'show'])->name('books.show'); +Route::get('book/{book:slug}', [BookController::class, 'show'])->name('books.show'); -Route::middleware(['auth'])->group(function (){ - Route::resource('books', \App\Http\Controllers\BookController::class) +Route::middleware(['auth'])->group(function () { + Route::resource('books', BookController::class) ->only(['create', 'store']) ->scoped(['book' => 'slug']); - Route::resource('books.report', \App\Http\Controllers\BookReportController::class) + Route::resource('books.report', BookReportController::class) ->only(['create', 'store']) ->scoped(['book' => 'slug']);; - Route::prefix('user')->name('user.')->group(function (){ - Route::resource('books', \App\Http\Controllers\BookController::class) + Route::prefix('user')->name('user.')->group(function () { + Route::resource('books', BookController::class) ->except(['create', 'store', 'show']) ->names(['index' => 'books.list']) ->scoped(['book' => 'slug']); - Route::resource('orders', \App\Http\Controllers\OrderController::class)->only('index'); + Route::resource('orders', OrderController::class)->only('index'); - Route::prefix('settings')->group(function (){ - Route::post('password/change/{user}', [\App\Http\Controllers\UserChangePassword::class, 'update'])->name('password.update'); - Route::post('{user}', [\App\Http\Controllers\UserSettingsController::class, 'update'])->name('settings.update'); + Route::prefix('settings')->group(function () { + Route::post('password/change/{user}', [UserChangePassword::class, 'update'])->name('password.update'); + Route::post('{user}', [UserSettingsController::class, 'update'])->name('settings.update'); }); - Route::resource('settings', \App\Http\Controllers\UserSettingsController::class) + Route::resource('settings', UserSettingsController::class) ->names(['index' => 'settings']) ->only('index'); }); }); - -Route::middleware(['isAdmin'])->prefix('admin')->name('admin.')->group(function (){ - Route::get('/', \App\Http\Controllers\Admin\AdminDashboardController::class)->name('index'); - - Route::resource('books', \App\Http\Controllers\Admin\AdminBookController::class); - Route::put('book/approve/{book}', [\App\Http\Controllers\Admin\AdminBookController::class, 'approveBook'])->name('books.approve'); - - Route::resource('users', \App\Http\Controllers\Admin\AdminUsersController::class) - ->only(['index', 'edit', 'update','destroy']); -}); +// or define that in app/Providers/RouteServiceProvider +/*Route::middleware(['isAdmin'])->prefix('admin')->name('admin.')->group(function () { + require __DIR__ . '/admin.php'; +});*/ require __DIR__ . '/auth.php';