use Illuminate\Support\Facades\Route; use App\Http\Controllers\Web\AuthController; use App\Http\Controllers\Web\DashboardController; use App\Http\Controllers\Web\OrderController; use App\Http\Controllers\Web\WalletController; use App\Http\Controllers\Web\TicketController; use App\Http\Controllers\Web\ReferralController; use App\Http\Controllers\Web\ApiKeyController; use App\Http\Controllers\Web\InvoiceController; // Guest Routes Route::middleware('guest')->group(function () { // Authentication Route::get('/login', [AuthController::class, 'showLoginForm'])->name('login'); Route::post('/login', [AuthController::class, 'login']); Route::get('/register', [AuthController::class, 'showRegistrationForm'])->name('register'); Route::post('/register', [AuthController::class, 'register']); // Password Reset Route::get('/forgot-password', [AuthController::class, 'showForgotForm'])->name('password.request'); Route::post('/forgot-password', [AuthController::class, 'forgotPassword'])->name('password.email'); Route::get('/reset-password/{token}', [AuthController::class, 'showResetForm'])->name('password.reset'); Route::post('/reset-password', [AuthController::class, 'resetPassword'])->name('password.update'); // 2FA Challenge Route::get('/2fa-challenge', [AuthController::class, 'showTwoFactorChallenge'])->name('2fa.challenge'); Route::post('/2fa-challenge', [AuthController::class, 'twoFactorChallenge']); // Social Login Route::get('/auth/google', [AuthController::class, 'redirectToGoogle'])->name('auth.google'); Route::get('/auth/google/callback', [AuthController::class, 'handleGoogleCallback']); }); // Authenticated Routes Route::middleware(['auth', 'user.active', 'twofactor'])->group(function () { // Dashboard Route::get('/', [DashboardController::class, 'index'])->name('dashboard'); Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard'); // Profile Route::get('/profile', [DashboardController::class, 'profile'])->name('profile'); Route::post('/profile', [DashboardController::class, 'updateProfile']); Route::get('/security', [DashboardController::class, 'security'])->name('security'); Route::post('/enable-2fa', [DashboardController::class, 'enableTwoFactor'])->name('2fa.enable'); Route::post('/confirm-2fa', [DashboardController::class, 'confirmTwoFactor'])->name('2fa.confirm'); Route::post('/disable-2fa', [DashboardController::class, 'disableTwoFactor'])->name('2fa.disable'); // Activity & Notifications Route::get('/activity', [DashboardController::class, 'activity'])->name('activity'); Route::get('/notifications', [DashboardController::class, 'notifications'])->name('notifications'); Route::post('/notifications/{id}/read', [DashboardController::class, 'markNotificationRead'])->name('notifications.read'); Route::post('/notifications/read-all', [DashboardController::class, 'markAllNotificationsRead'])->name('notifications.read-all'); // Orders Route::prefix('orders')->name('orders.')->group(function () { Route::get('/', [OrderController::class, 'index'])->name('index'); Route::get('/create', [OrderController::class, 'create'])->name('create'); Route::post('/', [OrderController::class, 'store'])->name('store'); Route::get('/statistics', [OrderController::class, 'statistics'])->name('statistics'); Route::get('/{orderId}', [OrderController::class, 'show'])->name('show'); Route::post('/{order}/refill', [OrderController::class, 'requestRefill'])->name('refill'); Route::post('/{order}/cancel', [OrderController::class, 'cancel'])->name('cancel'); Route::get('/{order}/invoice', [OrderController::class, 'downloadInvoice'])->name('invoice'); }); // AJAX Routes for Orders Route::get('/services/{service}/details', [OrderController::class, 'getServiceDetails'])->name('services.details'); Route::post('/orders/calculate', [OrderController::class, 'calculatePrice'])->name('orders.calculate'); // Wallet Route::prefix('wallet')->name('wallet.')->group(function () { Route::get('/', [WalletController::class, 'index'])->name('index'); Route::get('/deposit', [WalletController::class, 'showDeposit'])->name('deposit'); Route::post('/deposit', [WalletController::class, 'deposit']); Route::get('/withdraw', [WalletController::class, 'showWithdraw'])->name('withdraw'); Route::post('/withdraw', [WalletController::class, 'withdraw']); Route::get('/transactions', [WalletController::class, 'transactions'])->name('transactions'); Route::get('/transactions/{transaction}', [WalletController::class, 'showTransaction'])->name('transaction'); }); // Tickets Route::prefix('tickets')->name('tickets.')->group(function () { Route::get('/', [TicketController::class, 'index'])->name('index'); Route::get('/create', [TicketController::class, 'create'])->name('create'); Route::post('/', [TicketController::class, 'store'])->name('store'); Route::get('/{ticket}', [TicketController::class, 'show'])->name('show'); Route::post('/{ticket}/reply', [TicketController::class, 'reply'])->name('reply'); Route::post('/{ticket}/close', [TicketController::class, 'close'])->name('close'); }); // Referrals Route::prefix('referrals')->name('referrals.')->group(function () { Route::get('/', [ReferralController::class, 'index'])->name('index'); Route::get('/tree', [ReferralController::class, 'tree'])->name('tree'); Route::get('/commissions', [ReferralController::class, 'commissions'])->name('commissions'); }); // API Keys Route::prefix('api-keys')->name('api.')->group(function () { Route::get('/', [ApiKeyController::class, 'index'])->name('keys'); Route::post('/', [ApiKeyController::class, 'store'])->name('keys.store'); Route::delete('/{apiKey}', [ApiKeyController::class, 'destroy'])->name('keys.destroy'); Route::post('/{apiKey}/regenerate', [ApiKeyController::class, 'regenerate'])->name('keys.regenerate'); }); // Invoices Route::get('/invoices/{transaction}', [InvoiceController::class, 'download'])->name('invoice.download'); // Email Verification Route::get('/email/verify', [AuthController::class, 'showVerificationNotice'])->name('verification.notice'); Route::get('/email/verify/{id}/{hash}', [AuthController::class, 'verifyEmail'])->name('verification.verify'); Route::post('/email/resend', [AuthController::class, 'resendVerification'])->name('verification.resend'); // Logout Route::post('/logout', [AuthController::class, 'logout'])->name('logout'); });