middleware('guest')->name('home'); Route::middleware(['throttle:credentials'])->group(function () { // * guest:web middleware specified in AuthController Auth::routes([ 'login' => true, 'logout' => true, 'register' => false, // For resetting passwords. 'reset' => true, // For additional password confirmations. 'confirm' => true, // For email verification. 'verify' => false ]); }); // * Session Ping Route::get('/ping', function () { if (request()->isJson()) { abort(404); } return auth()->check() ? response()->json() : response()->json([], 401); })->withoutMiddleware('auth'); Route::middleware('auth:web')->group(function () { // * Macro planning Route::get('/macroplanning', [ScheduleMacroController::class, 'show'])->name('macroplanning.show'); Route::post('/activity', [ScheduleMacroController::class, 'postActivity'])->name('macroplanning.activity'); // * Logged user actions Route::get('/users/change-password', [UserController::class, 'passwordReset'])->name('users.passwordReset'); Route::post('/users/change-password', [UserController::class, 'passwordResetSubmit']) ->name('users.passwordResetSubmit'); Route::get('/users/stats', [UserController::class, 'stats'])->name('users.stats'); // * Resources Route::resource('ticket', TicketController::class)->except(['destroy']); Route::resource('users', UserController::class); Route::resource('packages', PackageController::class)->except('show'); Route::resource('companies', CompanyController::class)->except('show'); Route::resource('invoices', InvoiceController::class); Route::resource('labels', LabelController::class)->except('show'); Route::resource('brands', BrandController::class); Route::resource('sites', SiteController::class) ->withoutMiddleware('xss') ->middleware('xss:description,todo'); Route::resource('projects', ProjectController::class) ->withoutMiddleware('xss') ->middleware('xss:description,todo'); Route::resource('projects.macro_markers', MarkerController::class) ->parameters([ 'macro_markers' => 'marker' ]); // * Brands and Accounts Route::resource('credit_accounts', AccountController::class)->only(['index']) ->parameters([ 'credit_accounts' => 'account' ]); Route::resource('credit_accounts.credit_logs', CreditLogController::class)->only(['index']) ->parameters([ 'credit_accounts' => 'account', 'credit_logs' => 'credit_log' ]); Route::resource('brands.credit_accounts', AccountController::class) ->parameters([ 'credit_accounts' => 'account' ]); Route::get('/brand/{brand}/credit_accounts/{account}/credit', [AccountController::class, 'credit']) ->name('brands.credit_accounts.credit'); Route::put('/brand/{brand}/credit_accounts/{account}/credit', [AccountController::class, 'creditSubmit']) ->name('brands.credit_accounts.creditSubmit'); Route::resource('brands.credit_accounts.credit_logs', CreditLogController::class) ->only(['index']) ->parameters([ 'credit_accounts' => 'account', 'credit_logs' => 'credit_log' ]); // * LOGS and Files Route::resource('logs', LogController::class)->only('index'); Route::resource('files', FileController::class)->only('index'); Route::resource('projects.logs', LogController::class); Route::resource('projects.files', FileController::class); Route::resource('sites.logs', LogController::class); Route::resource('sites.files', FileController::class); // * INVOICES Route::get('/invoices/{invoice}/download', [InvoiceController::class, 'download']) ->name('invoices.download'); Route::post('/invoices/{invoice}/sign/service', [InvoiceController::class, 'setSignedDate']) ->name('invoices.sign.setSignedDate'); Route::post('/invoices/{invoice}/sign/client', [InvoiceController::class, 'setClientSentDate']) ->name('invoices.sign.setClientSentDate'); Route::post('/invoices/{invoice}/sign/compta', [InvoiceController::class, 'setComptaSentDate']) ->name('invoices.sign.setComptaSentDate'); // * Ticket Route::prefix('/ticket')->name('ticket.')->group(function () { // * Estimation Route::name('estimation.')->group(function () { Route::get('/{ticket}/estimate', [EstimationController::class, 'estimate']) ->middleware('can:estimate,ticket') ->name('estimate'); Route::post('/{ticket}/estimate', [EstimationController::class, 'estimateSubmit']) ->middleware('can:estimate,ticket') ->name('estimateSubmit'); Route::post('/{ticket}/estimate/answer', [EstimationController::class, 'estimatePendingSubmit']) ->middleware('can:validateEstimate,ticket') ->name('estimatePendingSubmit'); }); Route::post('/{ticket}/assignTo', [TicketController::class, 'assignTo']) ->middleware('can:assignTo,ticket') ->name('assignTo'); Route::post('/{ticket}/reopen', [TicketController::class, 'reopen']) ->middleware('can:reopen,ticket') ->name('reopen'); Route::post('/{ticket}/status', [TicketController::class, 'changeStatus']) ->middleware('can:changeStatus,ticket') ->name('changeStatus'); Route::post('/{ticket}/subscribe', [TicketController::class, 'subscribe']) ->middleware('can:suscribeToTicket,ticket') ->name('subscribe'); Route::put('/{ticket}/archive', [TicketController::class, 'setToArchive']) ->middleware('can:changeStatus,ticket') ->name('archive'); Route::put('/{ticket}/message/create', [TicketController::class, 'createMessage']) ->middleware('can:createMessage,ticket') ->name('message.create'); Route::put('/{ticket}/message/{message}/update', [TicketController::class, 'updateMessage']) ->middleware('can:updateMessage,ticket,message') ->name('message.update'); }); Route::prefix('/schedule')->name('schedule.')->group(function () { Route::get('/', [ScheduleController::class, 'index'])->name('index'); Route::post('/setCellContent', [ScheduleController::class, 'setCellContent']) ->name('setCellContent'); Route::post('/eraseCellContent', [ScheduleController::class, 'eraseCellContent']) ->name('eraseCellContent'); }); });