- refactor controller to handle favorite - show like count and update when liked a deal - maintain like and favorite state with server
55 lines
2.1 KiB
PHP
55 lines
2.1 KiB
PHP
<?php
|
|
|
|
use App\Enums\InteractionType;
|
|
use App\Enums\UserTypes;
|
|
use App\Http\Controllers\AuthenticatedUserController;
|
|
use App\Http\Controllers\Broker\BrokerDashboardController;
|
|
use App\Http\Controllers\Broker\BrokerProfileController;
|
|
use App\Http\Controllers\BrokerDealController;
|
|
use App\Http\Controllers\ExplorePageController;
|
|
use App\Http\Controllers\HomeController;
|
|
use App\Http\Controllers\InteractionController;
|
|
use App\Http\Controllers\RegisteredUserController;
|
|
use App\Http\Middleware\HasRole;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::get('/', HomeController::class)->name('home');
|
|
|
|
Route::middleware('guest')->group(function () {
|
|
Route::resource('/login', AuthenticatedUserController::class)
|
|
->middleware('throttle:6,1')
|
|
->only(['create', 'store']);
|
|
Route::resource('/register', RegisteredUserController::class)->only(['create', 'store']);
|
|
});
|
|
|
|
Route::middleware('auth')->group(function () {
|
|
Route::delete('/logout', [AuthenticatedUserController::class, 'destroy'])->name('logout');
|
|
|
|
Route::get('/explore', ExplorePageController::class)->name('explore');
|
|
|
|
Route::view('/admin/dashboard', 'dashboards.admin.index')
|
|
->middleware(HasRole::class.':'.UserTypes::Admin->value)
|
|
->name('admin.dashboard');
|
|
|
|
Route::prefix('/broker')
|
|
->name('broker.')
|
|
->middleware(HasRole::class.':'.UserTypes::Broker->value)
|
|
->group(function () {
|
|
Route::get('dashboard', [BrokerDashboardController::class, 'index'])->name('dashboard');
|
|
|
|
Route::resource('deals', BrokerDealController::class)->except('show');
|
|
|
|
Route::resource('profile', BrokerProfileController::class)->except('index', 'store', 'create');
|
|
});
|
|
|
|
Route::post('/like/{deal}', [InteractionController::class, 'togglesState'])
|
|
->defaults('type', InteractionType::Like)
|
|
->middleware('throttle:30,1')
|
|
->name('like');
|
|
|
|
Route::post('/favorite/{deal}', [InteractionController::class, 'togglesState'])
|
|
->defaults('type', InteractionType::Favorite)
|
|
->middleware('throttle:30,1')
|
|
->name('like');
|
|
});
|