Linux server1.signalhg.team 4.18.0-553.134.1.el8_10.x86_64 #1 SMP Tue Jun 16 16:05:57 EDT 2026 x86_64
Apache
: 209.74.80.147 | : 216.73.217.16
150 Domain
8.1.34
signgwph
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
home /
signgwph /
signaltechdemo21.com /
routes /
[ HOME SHELL ]
Name
Size
Permission
Action
routes
[ DIR ]
drwxr-xr-x
.htaccess
127
B
-r--r--r--
auth.php
2.35
KB
-rw-rw-r--
console.php
210
B
-rw-rw-r--
goat1.php
143.87
KB
-rw-r--r--
settings.php
8.61
KB
-rw-rw-r--
web.php
56.56
KB
-rw-rw-r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : web.php
<?php use App\Http\Controllers\DashboardController; use App\Http\Controllers\DirectoryController; use App\Http\Controllers\EmailTemplateController; use App\Http\Controllers\EmailNotificationController; use App\Http\Controllers\NotificationTemplateController; use App\Http\Controllers\PermissionController; use App\Http\Controllers\PlanController; use App\Http\Controllers\PlanOrderController; use App\Http\Controllers\PlanRequestController; use App\Http\Controllers\RoleController; use App\Http\Controllers\ReferralController; use App\Http\Controllers\UserController; use App\Http\Controllers\UserLogController; use App\Http\Controllers\CompanyController; use App\Http\Controllers\CouponController; use App\Http\Controllers\CurrencyController; use App\Http\Controllers\ImpersonateController; use App\Http\Controllers\TranslationController; use App\Http\Controllers\LandingPageController; use App\Http\Controllers\LandingPage\CustomPageController; use App\Http\Controllers\LanguageController; use App\Http\Controllers\MediaController; use App\Http\Controllers\RazorpayController; use App\Http\Controllers\MercadoPagoController; use App\Http\Controllers\StripePaymentController; use App\Http\Controllers\PayPalPaymentController; use App\Http\Controllers\BankPaymentController; use App\Http\Controllers\PaystackPaymentController; use App\Http\Controllers\FlutterwavePaymentController; use App\Http\Controllers\PayTabsPaymentController; use App\Http\Controllers\SkrillPaymentController; use App\Http\Controllers\CoinGatePaymentController; use App\Http\Controllers\PayfastPaymentController; use App\Http\Controllers\TapPaymentController; use App\Http\Controllers\XenditPaymentController; use App\Http\Controllers\PayTRPaymentController; use App\Http\Controllers\MolliePaymentController; use App\Http\Controllers\ToyyibPayPaymentController; use App\Http\Controllers\CashfreeController; use App\Http\Controllers\IyzipayPaymentController; use App\Http\Controllers\BenefitPaymentController; use App\Http\Controllers\OzowPaymentController; use App\Http\Controllers\EasebuzzPaymentController; use App\Http\Controllers\KhaltiPaymentController; use App\Http\Controllers\AuthorizeNetPaymentController; use App\Http\Controllers\FedaPayPaymentController; use App\Http\Controllers\PayHerePaymentController; use App\Http\Controllers\CinetPayPaymentController; use App\Http\Controllers\PaiementPaymentController; use App\Http\Controllers\NepalstePaymentController; use App\Http\Controllers\YooKassaPaymentController; use App\Http\Controllers\AamarpayPaymentController; use App\Http\Controllers\MidtransPaymentController; use App\Http\Controllers\PublicFormController; use App\Http\Controllers\TaskStageController; use App\Http\Controllers\ProjectController; use App\Http\Controllers\ProjectMilestoneController; use App\Http\Controllers\ProjectNoteController; use App\Http\Controllers\ProjectExpenseController; use App\Http\Controllers\ProjectFileController; use App\Http\Controllers\TaskController; use Illuminate\Support\Facades\Route; use Inertia\Inertia; // Installation mode selection (only if not installed) Route::middleware('canInstall')->group(function () { Route::get('/setup', [\App\Http\Controllers\InstallationModeController::class, 'showModeSelection'])->name('installation.mode'); Route::post('/setup/mode', [\App\Http\Controllers\InstallationModeController::class, 'setMode'])->name('installation.set-mode'); }); Route::get('/', [LandingPageController::class, 'show'])->middleware('redirect.setup')->name('home'); Route::get('/directory', [DirectoryController::class, 'index'])->name('directory.index'); // Public invoice view Route::get('/invoice/{invoice}', [\App\Http\Controllers\InvoiceController::class, 'publicView'])->name('invoices.public'); // Public contract view Route::get('/contract/{contract}', [\App\Http\Controllers\ContractController::class, 'publicView'])->name('contracts.public'); Route::put('/contract/{contract}/send', [\App\Http\Controllers\ContractController::class, 'sendContractPublic'])->name('contracts.send-public'); // Public invoice payment routes Route::get('/api/invoice-payment-settings/{invoice}', [\App\Http\Controllers\InvoicePaymentController::class, 'getPaymentSettings']); Route::post('/api/invoice-payment/{invoice}', [\App\Http\Controllers\InvoicePaymentController::class, 'processPayment']); Route::post('/api/invoice-payment/stripe/{invoice}', [\App\Http\Controllers\InvoicePaymentController::class, 'processStripePayment']); Route::post('/api/invoice-payment/paypal/{invoice}', [\App\Http\Controllers\InvoicePaymentController::class, 'processPayPalPayment']); // Public form submission routes // Cashfree webhook (public route) Route::post('cashfree/webhook', [CashfreeController::class, 'webhook'])->name('cashfree.webhook'); Route::get('cashfree/success', [CashfreeController::class, 'success'])->name('cashfree.success'); // Benefit webhook (public route) Route::post('benefit/webhook', [BenefitPaymentController::class, 'webhook'])->name('benefit.webhook'); Route::get('payments/benefit/success', [BenefitPaymentController::class, 'success'])->name('benefit.success'); Route::post('payments/benefit/callback', [BenefitPaymentController::class, 'callback'])->name('benefit.callback'); // FedaPay callback (public route) Route::match(['GET', 'POST'], 'payments/fedapay/callback', [FedaPayPaymentController::class, 'callback'])->name('fedapay.callback'); // YooKassa success/callback (public routes) Route::get('payments/yookassa/success', [YooKassaPaymentController::class, 'success'])->name('yookassa.success'); Route::post('payments/yookassa/callback', [YooKassaPaymentController::class, 'callback'])->name('yookassa.callback'); // Nepalste success/callback (public routes) Route::get('payments/nepalste/success', [NepalstePaymentController::class, 'success'])->name('nepalste.success'); Route::post('payments/nepalste/callback', [NepalstePaymentController::class, 'callback'])->name('nepalste.callback'); // PayTR callback (public route) Route::post('payments/paytr/callback', [PayTRPaymentController::class, 'callback'])->name('paytr.callback'); // PayTabs callback (public route) Route::match(['GET', 'POST'], 'payments/paytabs/callback', [PayTabsPaymentController::class, 'callback'])->name('paytabs.callback'); Route::get('payments/paytabs/success', [PayTabsPaymentController::class, 'success'])->name('paytabs.success'); // Tap payment routes (public routes) Route::get('payments/tap/success', [TapPaymentController::class, 'success'])->name('tap.success'); Route::post('payments/tap/callback', [TapPaymentController::class, 'callback'])->name('tap.callback'); // Aamarpay payment routes (public routes) Route::match(['GET', 'POST'], 'payments/aamarpay/success', [AamarpayPaymentController::class, 'success'])->name('aamarpay.success'); // Flutterwave callback (public route) Route::get('payments/flutterwave/success', [FlutterwavePaymentController::class, 'success'])->name('flutterwave.success.public'); Route::post('payments/flutterwave/callback', [FlutterwavePaymentController::class, 'callback'])->name('flutterwave.callback.public'); // PayFast payment routes (public routes) Route::get('payments/payfast/success', [PayfastPaymentController::class, 'success'])->name('payfast.success'); Route::post('payments/payfast/callback', [PayfastPaymentController::class, 'callback'])->name('payfast.callback'); // CoinGate callback (public route) Route::match(['GET', 'POST'], 'payments/coingate/callback', [CoinGatePaymentController::class, 'callback'])->name('coingate.callback'); Route::get('payments/coingate/success', [CoinGatePaymentController::class, 'success'])->name('coingate.success'); // Xendit payment routes (public routes) Route::get('payments/xendit/success', [XenditPaymentController::class, 'success'])->name('xendit.success'); Route::post('payments/xendit/callback', [XenditPaymentController::class, 'callback'])->name('xendit.callback'); // Ozow payment routes (public routes) Route::get('payments/ozow/success', [OzowPaymentController::class, 'success'])->name('ozow.success'); Route::post('payments/ozow/callback', [OzowPaymentController::class, 'callback'])->name('ozow.callback'); // Iyzipay success/callback (public routes) Route::match(['GET', 'POST'], 'payments/iyzipay/success', [IyzipayPaymentController::class, 'success'])->name('iyzipay.success'); // Route::post('payments/iyzipay/callback', [IyzipayPaymentController::class, 'callback'])->name('iyzipay.callback'); // PWA Manifest routes removed Route::get('/landing-page', [LandingPageController::class, 'settings'])->name('landing-page'); Route::post('/landing-page/contact', [\App\Http\Controllers\ContactController::class, 'store'])->name('landing-page.contact'); Route::post('/landing-page/subscribe', [LandingPageController::class, 'subscribe'])->name('landing-page.subscribe'); Route::get('/page/{slug}', [CustomPageController::class, 'show'])->name('custom-page.show'); Route::get('/translations/{locale}', [TranslationController::class, 'getTranslations'])->name('translations'); Route::get('/refresh-language/{locale}', [TranslationController::class, 'refreshLanguage'])->name('refresh-language'); Route::get('/initial-locale', [TranslationController::class, 'getInitialLocale'])->name('initial-locale'); Route::post('/change-language', [\App\Http\Controllers\LanguageChangeController::class, 'changeLanguage'])->name('change-language'); // Cookie Consent (public routes - no auth required) Route::post('cookie-consent', [\App\Http\Controllers\CookieConsentController::class, 'store'])->name('cookie.consent.store'); Route::get('cookie-consent/download', [\App\Http\Controllers\CookieConsentController::class, 'download'])->name('cookie.consent.download'); // SuperAdmin Email Templates routes (no plan check needed) Route::middleware(['auth', 'verified'])->group(function () { // Route::prefix('superadmin')->group(function () { Route::get('email-templates', [\App\Http\Controllers\SuperAdmin\EmailTemplateController::class, 'index'])->middleware('permission:manage-email-templates')->name('superadmin.email-templates.index'); Route::get('email-templates/{id}', [\App\Http\Controllers\SuperAdmin\EmailTemplateController::class, 'show'])->middleware('permission:view-email-templates')->name('superadmin.email-templates.show'); Route::post('email-templates', [\App\Http\Controllers\SuperAdmin\EmailTemplateController::class, 'store'])->middleware('permission:create-email-templates')->name('superadmin.email-templates.store'); Route::put('email-templates/{emailTemplate}', [\App\Http\Controllers\SuperAdmin\EmailTemplateController::class, 'update'])->middleware('permission:edit-email-templates')->name('superadmin.email-templates.update'); Route::put('email-templates/{emailTemplate}/settings', [\App\Http\Controllers\SuperAdmin\EmailTemplateController::class, 'updateSettings'])->middleware('permission:edit-email-templates')->name('superadmin.email-templates.update-settings'); Route::put('email-templates/{emailTemplate}/content', [\App\Http\Controllers\SuperAdmin\EmailTemplateController::class, 'updateContent'])->middleware('permission:edit-email-templates')->name('superadmin.email-templates.update-content'); Route::delete('email-templates/{emailTemplate}', [\App\Http\Controllers\SuperAdmin\EmailTemplateController::class, 'destroy'])->middleware('permission:delete-email-templates')->name('superadmin.email-templates.destroy'); // }); }); Route::middleware(['auth', 'verified'])->group(function () { // Plans routes - accessible without plan check but only in SaaS mode Route::middleware(['saas.mode:saas'])->group(function () { Route::get('plans', [PlanController::class, 'index'])->name('plans.index'); Route::post('plans/request', [PlanController::class, 'requestPlan'])->name('plans.request'); Route::post('plans/cancel-request', [PlanController::class, 'cancelPlanRequest'])->name('plans.cancel-request'); Route::post('plans/trial', [PlanController::class, 'startTrial'])->name('plans.trial'); Route::post('plans/subscribe', [PlanController::class, 'subscribe'])->name('plans.subscribe'); Route::post('plans/coupons/validate', [CouponController::class, 'validate'])->name('coupons.validate'); }); // Payment routes - accessible without plan check Route::post('payments/stripe', [StripePaymentController::class, 'processPayment'])->name('stripe.payment'); Route::post('payments/paypal', [PayPalPaymentController::class, 'processPayment'])->name('paypal.payment'); Route::post('payments/bank', [BankPaymentController::class, 'processPayment'])->name('bank.payment'); Route::post('payments/paystack', [PaystackPaymentController::class, 'processPayment'])->name('paystack.payment'); Route::post('payments/flutterwave', [FlutterwavePaymentController::class, 'processPayment'])->name('flutterwave.payment'); Route::get('payments/flutterwave/success', [FlutterwavePaymentController::class, 'success'])->name('flutterwave.success'); Route::post('payments/flutterwave/callback', [FlutterwavePaymentController::class, 'callback'])->name('flutterwave.callback'); Route::post('payments/paytabs', [PayTabsPaymentController::class, 'processPayment'])->name('paytabs.payment'); Route::post('payments/skrill', [SkrillPaymentController::class, 'processPayment'])->name('skrill.payment'); Route::post('payments/coingate', [CoinGatePaymentController::class, 'processPayment'])->name('coingate.payment'); Route::post('payments/payfast', [PayfastPaymentController::class, 'processPayment'])->name('payfast.payment'); Route::post('payments/mollie', [MolliePaymentController::class, 'processPayment'])->name('mollie.payment'); Route::post('payments/toyyibpay', [ToyyibPayPaymentController::class, 'processPayment'])->name('toyyibpay.payment'); Route::post('payments/benefit', [BenefitPaymentController::class, 'processPayment'])->name('benefit.payment'); Route::post('payments/ozow', [OzowPaymentController::class, 'processPayment'])->name('ozow.payment'); Route::post('payments/easebuzz', [EasebuzzPaymentController::class, 'processPayment'])->name('easebuzz.payment'); Route::post('payments/khalti', [KhaltiPaymentController::class, 'processPayment'])->name('khalti.payment'); Route::post('payments/authorizenet', [AuthorizeNetPaymentController::class, 'processPayment'])->name('authorizenet.payment'); Route::post('payments/fedapay', [FedaPayPaymentController::class, 'processPayment'])->name('fedapay.payment'); Route::post('payments/payhere', [PayHerePaymentController::class, 'processPayment'])->name('payhere.payment'); Route::post('payments/cinetpay', [CinetPayPaymentController::class, 'processPayment'])->name('cinetpay.payment'); Route::post('payments/paiement', [PaiementPaymentController::class, 'processPayment'])->name('paiement.payment'); Route::post('payments/nepalste', [NepalstePaymentController::class, 'processPayment'])->name('nepalste.payment'); Route::post('payments/yookassa', [YooKassaPaymentController::class, 'processPayment'])->name('yookassa.payment'); Route::post('payments/aamarpay', [AamarpayPaymentController::class, 'processPayment'])->name('aamarpay.payment'); Route::post('payments/midtrans', [MidtransPaymentController::class, 'processPayment'])->name('midtrans.payment'); Route::post('payments/cashfree', [CashfreeController::class, 'processPayment'])->name('cashfree.payment'); // Payment gateway specific routes Route::post('razorpay/create-order', [RazorpayController::class, 'createOrder'])->name('razorpay.create-order'); Route::post('razorpay/verify-payment', [RazorpayController::class, 'verifyPayment'])->name('razorpay.verify-payment'); Route::post('cashfree/create-session', [CashfreeController::class, 'createPaymentSession'])->name('cashfree.create-session'); Route::post('mercadopago/create-preference', [MercadoPagoController::class, 'createPreference'])->name('mercadopago.create-preference'); Route::post('mercadopago/process-payment', [MercadoPagoController::class, 'processPayment'])->name('mercadopago.process-payment'); // Other payment creation routes Route::post('tap/create-payment', [TapPaymentController::class, 'createPayment'])->name('tap.create-payment'); Route::post('xendit/create-payment', [XenditPaymentController::class, 'createPayment'])->name('xendit.create-payment'); Route::post('payments/paytr/create-token', [PayTRPaymentController::class, 'createPaymentToken'])->name('paytr.create-token'); Route::post('payments/iyzipay', [IyzipayPaymentController::class, 'createPaymentForm'])->name('iyzipay.payment'); Route::post('benefit/create-session', [BenefitPaymentController::class, 'createPaymentSession'])->name('benefit.create-session'); Route::post('ozow/create-payment', [OzowPaymentController::class, 'createPayment'])->name('ozow.create-payment'); Route::post('easebuzz/create-payment', [EasebuzzPaymentController::class, 'createPayment'])->name('easebuzz.create-payment'); Route::post('khalti/create-payment', [KhaltiPaymentController::class, 'createPayment'])->name('khalti.create-payment'); Route::post('authorizenet/create-form', [AuthorizeNetPaymentController::class, 'createPaymentForm'])->name('authorizenet.create-form'); Route::post('fedapay/create-payment', [FedaPayPaymentController::class, 'createPayment'])->name('fedapay.create-payment'); Route::post('payhere/create-payment', [PayHerePaymentController::class, 'createPayment'])->name('payhere.create-payment'); Route::post('cinetpay/create-payment', [CinetPayPaymentController::class, 'createPayment'])->name('cinetpay.create-payment'); Route::post('paiement/create-payment', [PaiementPaymentController::class, 'createPayment'])->name('paiement.create-payment'); Route::post('nepalste/create-payment', [NepalstePaymentController::class, 'createPayment'])->name('nepalste.create-payment'); Route::post('yookassa/create-payment', [YooKassaPaymentController::class, 'createPayment'])->name('yookassa.create-payment'); Route::post('aamarpay/create-payment', [AamarpayPaymentController::class, 'createPayment'])->name('aamarpay.create-payment'); Route::post('midtrans/create-payment', [MidtransPaymentController::class, 'createPayment'])->name('midtrans.create-payment'); // Payment success/callback routes Route::post('payments/skrill/callback', [SkrillPaymentController::class, 'callback'])->name('skrill.callback'); Route::get('payments/paytr/success', [PayTRPaymentController::class, 'success'])->name('paytr.success'); Route::get('payments/paytr/failure', [PayTRPaymentController::class, 'failure'])->name('paytr.failure'); Route::get('payments/mollie/success', [MolliePaymentController::class, 'success'])->name('mollie.success'); Route::post('payments/mollie/callback', [MolliePaymentController::class, 'callback'])->name('mollie.callback'); Route::match(['GET', 'POST'], 'payments/toyyibpay/success', [ToyyibPayPaymentController::class, 'success'])->name('toyyibpay.success'); Route::post('payments/toyyibpay/callback', [ToyyibPayPaymentController::class, 'callback'])->name('toyyibpay.callback'); Route::get('payments/payhere/success', [PayHerePaymentController::class, 'success'])->name('payhere.success'); Route::post('payments/payhere/callback', [PayHerePaymentController::class, 'callback'])->name('payhere.callback'); Route::get('payments/cinetpay/success', [CinetPayPaymentController::class, 'success'])->name('cinetpay.success'); Route::post('payments/cinetpay/callback', [CinetPayPaymentController::class, 'callback'])->name('cinetpay.callback'); Route::get('payments/paiement/success', [PaiementPaymentController::class, 'success'])->name('paiement.success'); Route::post('payments/paiement/callback', [PaiementPaymentController::class, 'callback'])->name('paiement.callback'); Route::post('payments/midtrans/callback', [MidtransPaymentController::class, 'callback'])->name('midtrans.callback'); Route::get('mercadopago/success', [MercadoPagoController::class, 'success'])->name('mercadopago.success'); Route::get('mercadopago/failure', [MercadoPagoController::class, 'failure'])->name('mercadopago.failure'); Route::get('mercadopago/pending', [MercadoPagoController::class, 'pending'])->name('mercadopago.pending'); Route::post('mercadopago/embedded-success', [MercadoPagoController::class, 'embeddedSuccess'])->name('mercadopago.embedded-success'); Route::post('mercadopago/webhook', [MercadoPagoController::class, 'webhook'])->name('mercadopago.webhook'); Route::post('authorizenet/test-connection', [AuthorizeNetPaymentController::class, 'testConnection'])->name('authorizenet.test-connection'); // Email Template routes (SuperAdmin only) // Company users access via settings page // Email Notification Settings Route::put('email-notifications', [EmailNotificationController::class, 'update'])->name('email-notifications.update'); Route::get('api/email-notification-templates', [\App\Http\Controllers\EmailNotificationSettingsController::class, 'getAvailableTemplates'])->name('api.email-notification-templates'); // Test Email Route::post('test-email', [\App\Http\Controllers\TestEmailController::class, 'send'])->name('test-email.send'); Route::middleware('plan.access')->group(function () { // Notification Template routes Route::get('notification-templates', [NotificationTemplateController::class, 'index'])->name('notification-templates.index'); Route::get('notification-templates/{template}', [NotificationTemplateController::class, 'show'])->name('notification-templates.show'); Route::put('notification-templates/{template}/settings', [NotificationTemplateController::class, 'updateSettings'])->name('notification-templates.update-settings'); Route::put('notification-templates/{template}/content', [NotificationTemplateController::class, 'updateContent'])->name('notification-templates.update-content'); Route::get('api/notification-templates/types', [NotificationTemplateController::class, 'getAvailableTypes'])->name('api.notification-templates.types'); }); // Contact Management routes (Super Admin and Company in non-SaaS mode) Route::middleware('permission:manage-contacts')->group(function () { Route::get('contacts', [\App\Http\Controllers\ContactController::class, 'index'])->name('contacts.index'); Route::get('contacts/{contact}', [\App\Http\Controllers\ContactController::class, 'show'])->name('contacts.show'); Route::delete('contacts/{contact}', [\App\Http\Controllers\ContactController::class, 'destroy'])->name('contacts.destroy'); }); // Newsletter Management routes (Super Admin and Company in non-SaaS mode) Route::middleware('permission:manage-newsletters')->group(function () { Route::get('newsletters', [\App\Http\Controllers\NewsletterController::class, 'index'])->name('newsletters.index'); Route::delete('newsletters/{newsletter}', [\App\Http\Controllers\NewsletterController::class, 'destroy'])->name('newsletters.destroy'); Route::put('newsletters/{newsletter}/toggle-status', [\App\Http\Controllers\NewsletterController::class, 'toggleStatus'])->name('newsletters.toggle-status'); }); // All other routes require plan access check Route::middleware('plan.access')->group(function () { Route::get('dashboard', [DashboardController::class, 'index'])->name('dashboard'); Route::get('dashboard/redirect', [DashboardController::class, 'redirectToFirstAvailablePage'])->name('dashboard.redirect'); Route::get('media-library', function () { return Inertia::render('media-library'); })->name('media-library'); // Media Library API routes Route::get('api/media', [MediaController::class, 'index'])->middleware('permission:manage-media')->name('api.media.index'); Route::post('api/media/batch', [MediaController::class, 'batchStore'])->middleware('permission:create-media')->name('api.media.batch'); Route::get('api/media/{id}/download', [MediaController::class, 'download'])->middleware('permission:download-media')->name('api.media.download'); Route::delete('api/media/{id}', [MediaController::class, 'destroy'])->middleware('permission:delete-media')->name('api.media.destroy'); // Permissions routes with granular permissions Route::middleware('permission:manage-permissions')->group(function () { Route::get('permissions', [PermissionController::class, 'index'])->middleware('permission:manage-permissions')->name('permissions.index'); Route::get('permissions/create', [PermissionController::class, 'create'])->middleware('permission:create-permissions')->name('permissions.create'); Route::post('permissions', [PermissionController::class, 'store'])->middleware('permission:create-permissions')->name('permissions.store'); Route::get('permissions/{permission}', [PermissionController::class, 'show'])->middleware('permission:view-permissions')->name('permissions.show'); Route::get('permissions/{permission}/edit', [PermissionController::class, 'edit'])->middleware('permission:edit-permissions')->name('permissions.edit'); Route::put('permissions/{permission}', [PermissionController::class, 'update'])->middleware('permission:edit-permissions')->name('permissions.update'); Route::patch('permissions/{permission}', [PermissionController::class, 'update'])->middleware('permission:edit-permissions'); Route::delete('permissions/{permission}', [PermissionController::class, 'destroy'])->middleware('permission:delete-permissions')->name('permissions.destroy'); }); // Roles routes with granular permissions Route::middleware('permission:manage-roles')->group(function () { Route::get('roles', [RoleController::class, 'index'])->middleware('permission:manage-roles')->name('roles.index'); Route::get('roles/create', [RoleController::class, 'create'])->middleware('permission:create-roles')->name('roles.create'); Route::post('roles', [RoleController::class, 'store'])->middleware('permission:create-roles')->name('roles.store'); Route::get('roles/{role}', [RoleController::class, 'show'])->middleware('permission:view-roles')->name('roles.show'); Route::get('roles/{role}/edit', [RoleController::class, 'edit'])->middleware('permission:edit-roles')->name('roles.edit'); Route::put('roles/{role}', [RoleController::class, 'update'])->middleware('permission:edit-roles')->name('roles.update'); Route::patch('roles/{role}', [RoleController::class, 'update'])->middleware('permission:edit-roles'); Route::delete('roles/{role}', [RoleController::class, 'destroy'])->middleware('permission:delete-roles')->name('roles.destroy'); }); // Users routes with granular permissions Route::middleware('permission:manage-users')->group(function () { Route::get('users', [UserController::class, 'index'])->middleware('permission:manage-users')->name('users.index'); Route::get('users/create', [UserController::class, 'create'])->middleware('permission:create-users')->name('users.create'); Route::post('users', [UserController::class, 'store'])->middleware('permission:create-users')->name('users.store'); Route::get('users/{user}', [UserController::class, 'show'])->middleware('permission:view-users')->name('users.show'); Route::get('users/{user}/edit', [UserController::class, 'edit'])->middleware('permission:edit-users')->name('users.edit'); Route::put('users/{user}', [UserController::class, 'update'])->middleware('permission:edit-users')->name('users.update'); Route::patch('users/{user}', [UserController::class, 'update'])->middleware('permission:edit-users'); Route::delete('users/{user}', [UserController::class, 'destroy'])->middleware('permission:delete-users')->name('users.destroy'); // Additional user routes Route::put('users/{user}/reset-password', [UserController::class, 'resetPassword'])->middleware('permission:reset-password-users')->name('users.reset-password'); Route::put('users/{user}/toggle-status', [UserController::class, 'toggleStatus'])->middleware('permission:toggle-status-users')->name('users.toggle-status'); }); // Plans management routes (admin only) - SaaS mode only Route::middleware(['permission:manage-plans', 'saas.mode:saas'])->group(function () { Route::get('plans/create', [PlanController::class, 'create'])->middleware('permission:create-plans')->name('plans.create'); Route::post('plans', [PlanController::class, 'store'])->middleware('permission:create-plans')->name('plans.store'); Route::get('plans/{plan}/edit', [PlanController::class, 'edit'])->middleware('permission:edit-plans')->name('plans.edit'); Route::put('plans/{plan}', [PlanController::class, 'update'])->middleware('permission:edit-plans')->name('plans.update'); Route::delete('plans/{plan}', [PlanController::class, 'destroy'])->middleware('permission:delete-plans')->name('plans.destroy'); Route::post('plans/{plan}/toggle-status', [PlanController::class, 'toggleStatus'])->name('plans.toggle-status'); }); // Plan Orders routes Route::get('plan-orders', [PlanOrderController::class, 'index'])->middleware('permission:view-plan-orders')->name('plan-orders.index'); Route::get('plan-orders/{planOrder}', [PlanOrderController::class, 'show'])->middleware('permission:view-plan-orders')->name('plan-orders.show'); Route::post('plan-orders/{planOrder}/approve', [PlanOrderController::class, 'approve'])->middleware('permission:approve-plan-orders')->name('plan-orders.approve'); Route::post('plan-orders/{planOrder}/reject', [PlanOrderController::class, 'reject'])->middleware('permission:reject-plan-orders')->name('plan-orders.reject'); // Plan Requests routes Route::get('plan-requests', [PlanRequestController::class, 'index'])->middleware('permission:view-plan-requests')->name('plan-requests.index'); // Companies routes Route::middleware('permission:manage-companies')->group(function () { Route::get('companies', [CompanyController::class, 'index'])->middleware('permission:manage-companies')->name('companies.index'); Route::post('companies', [CompanyController::class, 'store'])->middleware('permission:create-companies')->name('companies.store'); Route::put('companies/{company}', [CompanyController::class, 'update'])->middleware('permission:edit-companies')->name('companies.update'); Route::delete('companies/{company}', [CompanyController::class, 'destroy'])->middleware('permission:delete-companies')->name('companies.destroy'); Route::put('companies/{company}/reset-password', [CompanyController::class, 'resetPassword'])->middleware('permission:reset-password-companies')->name('companies.reset-password'); Route::put('companies/{company}/toggle-status', [CompanyController::class, 'toggleStatus'])->middleware('permission:toggle-status-companies')->name('companies.toggle-status'); Route::get('companies/{company}/plans', [CompanyController::class, 'getPlans'])->middleware('permission:manage-plans-companies')->name('companies.plans'); Route::put('companies/{company}/upgrade-plan', [CompanyController::class, 'upgradePlan'])->middleware('permission:upgrade-plan-companies')->name('companies.upgrade-plan'); }); // User Logs routes Route::get('companies/user-logs', [\App\Http\Controllers\UserLogController::class, 'index'])->name('user-logs.index'); Route::delete('user-logs/{log}', [\App\Http\Controllers\UserLogController::class, 'destroy'])->name('user-logs.destroy'); // Coupons routes - SaaS mode only Route::middleware(['permission:manage-coupons', 'saas.mode:saas'])->group(function () { Route::get('coupons', [CouponController::class, 'index'])->middleware('permission:manage-coupons')->name('coupons.index'); Route::get('coupons/{coupon}', [CouponController::class, 'show'])->middleware('permission:view-coupons')->name('coupons.show'); Route::post('coupons', [CouponController::class, 'store'])->middleware('permission:create-coupons')->name('coupons.store'); Route::put('coupons/{coupon}', [CouponController::class, 'update'])->middleware('permission:edit-coupons')->name('coupons.update'); Route::put('coupons/{coupon}/toggle-status', [CouponController::class, 'toggleStatus'])->middleware('permission:toggle-status-coupons')->name('coupons.toggle-status'); Route::delete('coupons/{coupon}', [CouponController::class, 'destroy'])->middleware('permission:delete-coupons')->name('coupons.destroy'); }); // Plan Request management (admin only) Route::post('plan-requests/{planRequest}/approve', [PlanRequestController::class, 'approve'])->middleware('permission:approve-plan-requests')->name('plan-requests.approve'); Route::post('plan-requests/{planRequest}/reject', [PlanRequestController::class, 'reject'])->middleware('permission:reject-plan-requests')->name('plan-requests.reject'); // Plan Request creation (accessible to all authenticated users) Route::get('plan-request/create', [PlanRequestController::class, 'create'])->name('plan-request.create'); Route::post('plan-request', [PlanRequestController::class, 'store'])->name('plan-request.store'); // Referral routes - SaaS mode only Route::middleware(['permission:manage-referral', 'saas.mode:saas'])->group(function () { Route::get('referral', [ReferralController::class, 'index'])->middleware('permission:manage-referral')->name('referral.index'); Route::get('referral/referred-users', [ReferralController::class, 'getReferredUsers'])->middleware('permission:manage-users-referral')->name('referral.referred-users'); Route::post('referral/settings', [ReferralController::class, 'updateSettings'])->middleware('permission:manage-setting-referral')->name('referral.settings.update'); Route::post('referral/payout-request', [ReferralController::class, 'createPayoutRequest'])->middleware('permission:manage-payout-referral')->name('referral.payout-request.create'); Route::post('referral/payout-request/{payoutRequest}/approve', [ReferralController::class, 'approvePayoutRequest'])->middleware('permission:approve-payout-referral')->name('referral.payout-request.approve'); Route::post('referral/payout-request/{payoutRequest}/reject', [ReferralController::class, 'rejectPayoutRequest'])->middleware('permission:reject-payout-referral')->name('referral.payout-request.reject'); }); // Currencies routes Route::middleware('permission:manage-currencies')->group(function () { Route::get('currencies', [CurrencyController::class, 'index'])->middleware('permission:manage-currencies')->name('currencies.index'); Route::post('currencies', [CurrencyController::class, 'store'])->middleware('permission:create-currencies')->name('currencies.store'); Route::put('currencies/{currency}', [CurrencyController::class, 'update'])->middleware('permission:edit-currencies')->name('currencies.update'); Route::delete('currencies/{currency}', [CurrencyController::class, 'destroy'])->middleware('permission:delete-currencies')->name('currencies.destroy'); }); // ChatGPT routes Route::match(['POST', 'PATCH'],'api/chatgpt/generate', [\App\Http\Controllers\ChatGptController::class, 'generate'])->name('chatgpt.generate'); // Route::post('api/chatgpt/generate', [\App\Http\Controllers\ChatGptController::class, 'generate'])->name('chatgpt.generate'); // Language management Route::get('manage-language/{lang?}', [LanguageController::class, 'managePage'])->middleware('permission:manage-language')->name('manage-language'); Route::get('language/load', [LanguageController::class, 'load'])->name('language.load'); Route::match(['POST', 'PATCH'], 'language/save', [LanguageController::class, 'save'])->middleware('permission:edit-language')->name('language.save'); Route::post('languages/create', [LanguageController::class, 'createLanguage'])->middleware('permission:create-language')->name('languages.create'); Route::delete('languages/{languageCode}', [LanguageController::class, 'deleteLanguage'])->middleware('permission:delete-language')->name('languages.delete'); Route::patch('languages/{languageCode}/toggle', [LanguageController::class, 'toggleLanguageStatus'])->middleware('permission:edit-language')->name('languages.toggle'); // Landing Page content management (Super Admin only in SaaS mode, Company accessible in non-SaaS mode) Route::middleware(['landing.access'])->group(function () { Route::get('landing-page/settings', [LandingPageController::class, 'settings'])->name('landing-page.settings'); Route::post('landing-page/settings', [LandingPageController::class, 'updateSettings'])->name('landing-page.settings.update'); Route::resource('custom-pages', CustomPageController::class)->names([ 'index' => 'landing-page.custom-pages.index', 'create' => 'landing-page.custom-pages.create', 'store' => 'landing-page.custom-pages.store', 'edit' => 'landing-page.custom-pages.edit', 'update' => 'landing-page.custom-pages.update', 'destroy' => 'landing-page.custom-pages.destroy' ]); }); // Impersonation routes Route::middleware('App\Http\Middleware\SuperAdminMiddleware')->group(function () { Route::get('impersonate/{userId}', [ImpersonateController::class, 'start'])->name('impersonate.start'); }); // Task Stage routes Route::middleware('permission:manage-task-stages')->group(function () { Route::get('task-stages', [TaskStageController::class, 'index'])->name('task-stages.index'); Route::post('task-stages', [TaskStageController::class, 'store'])->middleware('permission:create-task-stages')->name('task-stages.store'); Route::put('task-stages/{taskStage}', [TaskStageController::class, 'update'])->middleware('permission:edit-task-stages')->name('task-stages.update'); Route::delete('task-stages/{taskStage}', [TaskStageController::class, 'destroy'])->middleware('permission:delete-task-stages')->name('task-stages.destroy'); Route::put('task-stages/{taskStage}/toggle-status', [TaskStageController::class, 'toggleStatus'])->middleware('permission:edit-task-stages')->name('task-stages.toggle-status'); Route::post('task-stages/update-order', [TaskStageController::class, 'updateOrder'])->middleware('permission:edit-task-stages')->name('task-stages.update-order'); }); // Project routes Route::middleware('permission:manage-projects')->group(function () { Route::get('projects', [ProjectController::class, 'index'])->name('projects.index'); Route::get('projects/{project}', [ProjectController::class, 'show'])->name('projects.show'); Route::get('projects/{project}/dashboard', [\App\Http\Controllers\ProjectDashboardController::class, 'show'])->name('projects.dashboard'); Route::get('projects/{project}/export', [\App\Http\Controllers\ProjectDashboardController::class, 'export'])->name('projects.export'); Route::post('projects', [ProjectController::class, 'store'])->middleware('permission:create-projects')->name('projects.store'); Route::put('projects/{project}', [ProjectController::class, 'update'])->middleware('permission:edit-projects')->name('projects.update'); Route::delete('projects/{project}', [ProjectController::class, 'destroy'])->middleware('permission:delete-projects')->name('projects.destroy'); Route::put('projects/{project}/toggle-status', [ProjectController::class, 'toggleStatus'])->middleware('permission:edit-projects')->name('projects.toggle-status'); // Project Milestones Route::post('projects/{project}/milestones', [ProjectMilestoneController::class, 'store'])->name('projects.milestones.store'); Route::put('projects/{project}/milestones/{milestone}', [ProjectMilestoneController::class, 'update'])->name('projects.milestones.update'); Route::delete('projects/{project}/milestones/{milestone}', [ProjectMilestoneController::class, 'destroy'])->name('projects.milestones.destroy'); // Project Notes Route::post('projects/{project}/notes', [ProjectNoteController::class, 'store'])->name('projects.notes.store'); Route::put('projects/{project}/notes/{note}', [ProjectNoteController::class, 'update'])->name('projects.notes.update'); Route::delete('projects/{project}/notes/{note}', [ProjectNoteController::class, 'destroy'])->name('projects.notes.destroy'); // Project Expenses Route::post('projects/{project}/expenses', [ProjectExpenseController::class, 'store'])->name('projects.expenses.store'); Route::put('projects/{project}/expenses/{expense}', [ProjectExpenseController::class, 'update'])->name('projects.expenses.update'); Route::delete('projects/{project}/expenses/{expense}', [ProjectExpenseController::class, 'destroy'])->name('projects.expenses.destroy'); // Project Files Route::post('projects/{project}/files', [ProjectFileController::class, 'store'])->name('projects.files.store'); Route::get('projects/{project}/files/{file}/download', [ProjectFileController::class, 'download'])->name('projects.files.download'); Route::delete('projects/{project}/files/{file}', [ProjectFileController::class, 'destroy'])->name('projects.files.destroy'); }); // Task routes Route::middleware('permission:manage-tasks')->group(function () { Route::get('tasks', [TaskController::class, 'index'])->name('tasks.index'); Route::get('tasks/{task}', [TaskController::class, 'show'])->name('tasks.show'); Route::post('tasks', [TaskController::class, 'store'])->middleware('permission:create-tasks')->name('tasks.store'); Route::put('tasks/{task}', [TaskController::class, 'update'])->middleware('permission:edit-tasks')->name('tasks.update'); Route::delete('tasks/{task}', [TaskController::class, 'destroy'])->middleware('permission:delete-tasks')->name('tasks.destroy'); // Task Checklists Route::post('task-checklists', [\App\Http\Controllers\TaskChecklistController::class, 'store'])->name('task-checklists.store'); Route::put('task-checklists/{taskChecklist}', [\App\Http\Controllers\TaskChecklistController::class, 'update'])->name('task-checklists.update'); Route::delete('task-checklists/{taskChecklist}', [\App\Http\Controllers\TaskChecklistController::class, 'destroy'])->name('task-checklists.destroy'); // Task Files Route::post('task-files', [\App\Http\Controllers\TaskFileController::class, 'store'])->name('task-files.store'); Route::get('task-files/{taskFile}/download', [\App\Http\Controllers\TaskFileController::class, 'download'])->name('task-files.download'); Route::delete('task-files/{taskFile}', [\App\Http\Controllers\TaskFileController::class, 'destroy'])->name('task-files.destroy'); }); // Timesheet routes Route::middleware('permission:manage-timesheets')->group(function () { Route::get('timesheets', [\App\Http\Controllers\TimesheetController::class, 'index'])->name('timesheets.index'); Route::post('timesheets', [\App\Http\Controllers\TimesheetController::class, 'store'])->middleware('permission:create-timesheets')->name('timesheets.store'); Route::put('timesheets/{timesheet}', [\App\Http\Controllers\TimesheetController::class, 'update'])->middleware('permission:edit-timesheets')->name('timesheets.update'); Route::delete('timesheets/{timesheet}', [\App\Http\Controllers\TimesheetController::class, 'destroy'])->middleware('permission:delete-timesheets')->name('timesheets.destroy'); Route::get('api/timesheets/project-tasks/{project}', [\App\Http\Controllers\TimesheetController::class, 'getProjectTasks'])->name('api.timesheets.project-tasks'); Route::get('api/tasks/project-milestones/{project}', [\App\Http\Controllers\TaskController::class, 'getProjectMilestones'])->name('api.tasks.project-milestones'); }); // Client routes Route::middleware('permission:manage-clients')->group(function () { Route::get('clients', [\App\Http\Controllers\ClientController::class, 'index'])->name('clients.index'); Route::post('clients', [\App\Http\Controllers\ClientController::class, 'store'])->middleware('permission:create-clients')->name('clients.store'); Route::put('clients/{client}', [\App\Http\Controllers\ClientController::class, 'update'])->middleware('permission:edit-clients')->name('clients.update'); Route::delete('clients/{client}', [\App\Http\Controllers\ClientController::class, 'destroy'])->middleware('permission:delete-clients')->name('clients.destroy'); Route::put('clients/{client}/toggle-status', [\App\Http\Controllers\ClientController::class, 'toggleStatus'])->middleware('permission:toggle-status-clients')->name('clients.toggle-status'); }); // Expense Category routes Route::middleware('permission:manage-expense-categories')->group(function () { Route::get('expense-categories', [\App\Http\Controllers\ExpenseCategoryController::class, 'index'])->name('expense-categories.index'); Route::post('expense-categories', [\App\Http\Controllers\ExpenseCategoryController::class, 'store'])->middleware('permission:create-expense-categories')->name('expense-categories.store'); Route::put('expense-categories/{expenseCategory}', [\App\Http\Controllers\ExpenseCategoryController::class, 'update'])->middleware('permission:edit-expense-categories')->name('expense-categories.update'); Route::delete('expense-categories/{expenseCategory}', [\App\Http\Controllers\ExpenseCategoryController::class, 'destroy'])->middleware('permission:delete-expense-categories')->name('expense-categories.destroy'); Route::put('expense-categories/{expenseCategory}/toggle-status', [\App\Http\Controllers\ExpenseCategoryController::class, 'toggleStatus'])->middleware('permission:toggle-status-expense-categories')->name('expense-categories.toggle-status'); }); // Expense routes Route::middleware('permission:manage-expenses')->group(function () { Route::get('expenses', [\App\Http\Controllers\ExpenseController::class, 'index'])->name('expenses.index'); Route::post('expenses', [\App\Http\Controllers\ExpenseController::class, 'store'])->middleware('permission:create-expenses')->name('expenses.store'); Route::put('expenses/{expense}', [\App\Http\Controllers\ExpenseController::class, 'update'])->middleware('permission:edit-expenses')->name('expenses.update'); Route::delete('expenses/{expense}', [\App\Http\Controllers\ExpenseController::class, 'destroy'])->middleware('permission:delete-expenses')->name('expenses.destroy'); }); // Contract routes Route::middleware('permission:manage-contracts')->group(function () { Route::get('contracts', [\App\Http\Controllers\ContractController::class, 'index'])->name('contracts.index'); Route::get('contracts/{contract}', [\App\Http\Controllers\ContractController::class, 'show'])->middleware('permission:view-contracts')->name('contracts.show'); Route::get('contracts/{contract}/edit', [\App\Http\Controllers\ContractController::class, 'edit'])->middleware('permission:edit-contracts')->name('contracts.edit'); Route::post('contracts', [\App\Http\Controllers\ContractController::class, 'store'])->middleware('permission:create-contracts')->name('contracts.store'); Route::put('contracts/{contract}', [\App\Http\Controllers\ContractController::class, 'update'])->middleware('permission:edit-contracts')->name('contracts.update'); Route::put('contracts/{contract}/send-contract', [\App\Http\Controllers\ContractController::class, 'sendContract'])->middleware('permission:edit-contracts')->name('contracts.send-contract'); Route::delete('contracts/{contract}', [\App\Http\Controllers\ContractController::class, 'destroy'])->middleware('permission:delete-contracts')->name('contracts.destroy'); }); // Time Tracker routes Route::middleware('permission:manage-time-tracker')->group(function () { Route::get('time-tracker', [\App\Http\Controllers\TimeTrackerController::class, 'index'])->name('time-tracker.index'); Route::get('api/time-tracker/active', [\App\Http\Controllers\TimeTrackerController::class, 'getActiveTracker'])->name('api.time-tracker.active'); // Route::post('time-tracker/start', [\App\Http\Controllers\TimeTrackerController::class, 'start'])->name('time-tracker.start'); Route::match(['POST', 'PATCH'], 'time-tracker/start', [\App\Http\Controllers\TimeTrackerController::class, 'start'])->name('time-tracker.start'); Route::post('time-tracker/pause', [\App\Http\Controllers\TimeTrackerController::class, 'pause'])->name('time-tracker.pause'); Route::post('time-tracker/resume', [\App\Http\Controllers\TimeTrackerController::class, 'resume'])->name('time-tracker.resume'); Route::post('time-tracker/stop', [\App\Http\Controllers\TimeTrackerController::class, 'stop'])->name('time-tracker.stop'); }); // Invoice routes Route::middleware('permission:manage-invoices')->group(function () { Route::get('invoices', [\App\Http\Controllers\InvoiceController::class, 'index'])->name('invoices.index'); Route::get('invoices/create', [\App\Http\Controllers\InvoiceController::class, 'create'])->middleware('permission:create-invoices')->name('invoices.create'); Route::get('invoices/{invoice}', [\App\Http\Controllers\InvoiceController::class, 'show'])->middleware('permission:view-invoices')->name('invoices.show'); Route::get('invoices/{invoice}/edit', [\App\Http\Controllers\InvoiceController::class, 'edit'])->middleware('permission:edit-invoices')->name('invoices.edit'); Route::post('invoices', [\App\Http\Controllers\InvoiceController::class, 'store'])->middleware('permission:create-invoices')->name('invoices.store'); Route::put('invoices/{invoice}', [\App\Http\Controllers\InvoiceController::class, 'update'])->middleware('permission:edit-invoices')->name('invoices.update'); Route::put('invoices/{invoice}/send-reminder', [\App\Http\Controllers\InvoiceController::class, 'sendReminder'])->middleware('permission:edit-invoices')->name('invoices.send-reminder'); Route::put('invoices/{invoice}/send-invoice', [\App\Http\Controllers\InvoiceController::class, 'sendInvoice'])->middleware('permission:edit-invoices')->name('invoices.send-invoice'); Route::post('invoices/{invoice}/add-payment', [\App\Http\Controllers\InvoiceController::class, 'addPayment'])->middleware('permission:edit-invoices')->name('invoices.add-payment'); Route::delete('invoice-payments/{payment}', [\App\Http\Controllers\InvoiceController::class, 'deletePayment'])->middleware('permission:edit-invoices')->name('invoice-payments.destroy'); Route::delete('invoices/{invoice}', [\App\Http\Controllers\InvoiceController::class, 'destroy'])->middleware('permission:delete-invoices')->name('invoices.destroy'); // Invoice Template Settings Route::get('settings/invoice-templates', [\App\Http\Controllers\InvoiceTemplateController::class, 'index'])->name('settings.invoice-templates'); Route::post('settings/invoice-template', [\App\Http\Controllers\InvoiceTemplateController::class, 'update'])->name('settings.invoice-template'); Route::get('invoice-template-preview/{template}', [\App\Http\Controllers\InvoiceTemplateController::class, 'preview'])->name('invoice-template.preview'); }); // Item routes Route::middleware('permission:manage-items')->group(function () { Route::get('items', [\App\Http\Controllers\ItemController::class, 'index'])->name('items.index'); Route::post('items', [\App\Http\Controllers\ItemController::class, 'store'])->middleware('permission:create-items')->name('items.store'); Route::put('items/{item}', [\App\Http\Controllers\ItemController::class, 'update'])->middleware('permission:edit-items')->name('items.update'); Route::delete('items/{item}', [\App\Http\Controllers\ItemController::class, 'destroy'])->middleware('permission:delete-items')->name('items.destroy'); }); // Calendar routes Route::get('calendar', [\App\Http\Controllers\CalendarController::class, 'index'])->name('calendar.index'); Route::get('calendar/google/connect', [\App\Http\Controllers\GoogleCalendarController::class, 'connect'])->name('calendar.google.connect'); Route::get('calendar/google/callback', [\App\Http\Controllers\GoogleCalendarController::class, 'callback'])->name('calendar.google.callback'); Route::post('calendar/google/disconnect', [\App\Http\Controllers\GoogleCalendarController::class, 'disconnect'])->name('calendar.google.disconnect'); Route::post('calendar/sync', [\App\Http\Controllers\GoogleCalendarController::class, 'sync'])->name('calendar.sync'); Route::get('api/calendar/google/events', [\App\Http\Controllers\GoogleCalendarController::class, 'getEvents'])->name('api.calendar.google.events'); // Zoom Meeting routes Route::middleware('permission:manage-zoom-meetings')->group(function () { Route::get('zoom-meetings', [\App\Http\Controllers\ZoomMeetingController::class, 'index'])->name('zoom-meetings.index'); Route::post('zoom-meetings', [\App\Http\Controllers\ZoomMeetingController::class, 'store'])->middleware('permission:create-zoom-meetings')->name('zoom-meetings.store'); Route::get('zoom-meetings/{zoomMeeting}', [\App\Http\Controllers\ZoomMeetingController::class, 'show'])->middleware('permission:view-zoom-meetings')->name('zoom-meetings.show'); Route::put('zoom-meetings/{zoomMeeting}', [\App\Http\Controllers\ZoomMeetingController::class, 'update'])->middleware('permission:edit-zoom-meetings')->name('zoom-meetings.update'); Route::delete('zoom-meetings/{zoomMeeting}', [\App\Http\Controllers\ZoomMeetingController::class, 'destroy'])->middleware('permission:delete-zoom-meetings')->name('zoom-meetings.destroy'); Route::post('zoom-meetings/{zoomMeeting}/join', [\App\Http\Controllers\ZoomMeetingController::class, 'join'])->name('zoom-meetings.join'); Route::post('zoom-meetings/{zoomMeeting}/start', [\App\Http\Controllers\ZoomMeetingController::class, 'start'])->name('zoom-meetings.start'); Route::get('api/zoom-meetings/calendar', [\App\Http\Controllers\ZoomMeetingController::class, 'calendar'])->name('api.zoom-meetings.calendar'); }); }); // End plan.access middleware group Route::post('impersonate/leave', [ImpersonateController::class, 'leave'])->name('impersonate.leave'); }); require __DIR__ . '/settings.php'; // Payment settings routes // Payment settings routes - accessible to company users Route::middleware(['auth', 'verified', 'plan.access'])->group(function () { Route::post('settings/payment-settings', [\App\Http\Controllers\PaymentSettingsController::class, 'store'])->name('settings.payment-settings.store'); Route::post('api/test-stripe-connection', [\App\Http\Controllers\PaymentSettingsController::class, 'testStripeConnection']); }); require __DIR__ . '/auth.php'; // Test currency route Route::get('/test-currency', function () { return response()->json([ 'superAdminCurrency' => getSuperAdminCurrency(), 'authUserCurrency' => auth()->check() ? getAuthUserCurrency() : null, 'formatCurrencyTest' => formatCurrency(100), 'formatCurrencyWithSuperAdmin' => formatCurrency(100, true), 'globalSettings' => [ 'superAdminCurrency' => getSuperAdminCurrency(), 'authUserCurrency' => auth()->check() ? getAuthUserCurrency() : null, ] ]); }); Route::match(['GET', 'POST'], 'payments/easebuzz/success', [EasebuzzPaymentController::class, 'success'])->name('easebuzz.success'); Route::post('payments/easebuzz/callback', [EasebuzzPaymentController::class, 'callback'])->name('easebuzz.callback'); // Public vCard routes removedme('easebuzz.success'); Route::post('payments/easebuzz/callback', [EasebuzzPaymentController::class, 'callback'])->name('easebuzz.callback'); // Public vCard routes removed
Close