web.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. <?php
  2. use App\Classes\Settings\Invoices;
  3. use App\Classes\Settings\Language;
  4. use App\Classes\Settings\Misc;
  5. use App\Classes\Settings\Payments;
  6. use App\Classes\Settings\System;
  7. use App\Http\Controllers\Admin\ActivityLogController;
  8. use App\Http\Controllers\Admin\ApplicationApiController;
  9. use App\Http\Controllers\Admin\InvoiceController;
  10. use App\Http\Controllers\Admin\LegalController;
  11. use App\Http\Controllers\Admin\OverViewController;
  12. use App\Http\Controllers\Admin\PartnerController;
  13. use App\Http\Controllers\Admin\PaymentController;
  14. use App\Http\Controllers\Admin\ProductController;
  15. use App\Http\Controllers\Admin\RoleController;
  16. use App\Http\Controllers\Admin\ServerController as AdminServerController;
  17. use App\Http\Controllers\Admin\SettingsController;
  18. use App\Http\Controllers\Admin\ShopProductController;
  19. use App\Http\Controllers\Admin\TicketCategoryController;
  20. use App\Http\Controllers\Admin\TicketsController as AdminTicketsController;
  21. use App\Http\Controllers\Admin\UsefulLinkController;
  22. use App\Http\Controllers\Admin\UserController;
  23. use App\Http\Controllers\Admin\VoucherController;
  24. use App\Http\Controllers\Admin\CouponController;
  25. use App\Http\Controllers\Auth\SocialiteController;
  26. use App\Http\Controllers\HomeController;
  27. use App\Http\Controllers\NotificationController;
  28. use App\Http\Controllers\ProductController as FrontProductController;
  29. use App\Http\Controllers\ProfileController;
  30. use App\Http\Controllers\ServerController;
  31. use App\Http\Controllers\StoreController;
  32. use App\Http\Controllers\TicketsController;
  33. use App\Http\Controllers\TranslationController;
  34. use Illuminate\Http\Request;
  35. use Illuminate\Support\Facades\Auth;
  36. use Illuminate\Support\Facades\Log;
  37. use Illuminate\Support\Facades\Route;
  38. /*
  39. |--------------------------------------------------------------------------
  40. | Web Routes
  41. |--------------------------------------------------------------------------
  42. |
  43. | Here is where you can register web routes for your application. These
  44. | routes are loaded by the RouteServiceProvider within a group which
  45. | contains the "web" middleware group. Now create something great!
  46. |
  47. */
  48. Route::middleware('guest')->get('/', function () {
  49. return redirect('login');
  50. })->name('welcome');
  51. Auth::routes(['verify' => true]);
  52. Route::get('/privacy', function () {
  53. return view('information.privacy');
  54. })->name('privacy');
  55. Route::get('/imprint', function () {
  56. return view('information.imprint');
  57. })->name('imprint');
  58. Route::get('/tos', function () {
  59. return view('information.tos');
  60. })->name('tos');
  61. Route::middleware(['auth', 'checkSuspended'])->group(function () {
  62. //resend verification email
  63. Route::get('/email/verification-notification', function (Request $request) {
  64. $request->user()->sendEmailVerificationNotification();
  65. return back()->with('success', 'Verification link sent!');
  66. })->middleware(['auth', 'throttle:3,1'])->name('verification.send');
  67. //normal routes
  68. Route::get('notifications/readAll', [NotificationController::class, 'readAll'])->name('notifications.readAll');
  69. Route::resource('notifications', NotificationController::class);
  70. Route::patch('/servers/cancel/{server}', [ServerController::class, 'cancel'])->name('servers.cancel');
  71. Route::resource('servers', ServerController::class);
  72. try {
  73. $serverSettings = app(App\Settings\ServerSettings::class);
  74. if ($serverSettings->creation_enabled) {
  75. Route::post('servers/{server}/upgrade', [ServerController::class, 'upgrade'])->name('servers.upgrade');
  76. }
  77. } catch (Exception $e) {
  78. Log::error("ServerSettings not found, skipping server upgrade route");
  79. }
  80. Route::post('profile/selfdestruct', [ProfileController::class, 'selfDestroyUser'])->name('profile.selfDestroyUser');
  81. Route::resource('profile', ProfileController::class);
  82. Route::resource('store', StoreController::class);
  83. //server create utility routes (product)
  84. //routes made for server create page to fetch product info
  85. Route::get('/products/nodes/egg/{egg?}', [FrontProductController::class, 'getNodesBasedOnEgg'])->name('products.nodes.egg');
  86. Route::get('/products/locations/egg/{egg?}', [FrontProductController::class, 'getLocationsBasedOnEgg'])->name('products.locations.egg');
  87. Route::get('/products/products/{egg?}/{node?}', [FrontProductController::class, 'getProductsBasedOnNode'])->name('products.products.node');
  88. //payments
  89. Route::get('checkout/{shopProduct}', [PaymentController::class, 'checkOut'])->name('checkout');
  90. Route::post('payment/pay', [PaymentController::class, 'pay'])->name('payment.pay');
  91. Route::get('payment/FreePay/{shopProduct}', [PaymentController::class, 'FreePay'])->name('payment.FreePay');
  92. Route::get('payment/Cancel', [PaymentController::class, 'Cancel'])->name('payment.Cancel');
  93. Route::get('users/logbackin', [UserController::class, 'logBackIn'])->name('users.logbackin');
  94. //discord
  95. Route::get('/auth/redirect', [SocialiteController::class, 'redirect'])->name('auth.redirect');
  96. Route::get('/auth/callback', [SocialiteController::class, 'callback'])->name('auth.callback');
  97. //voucher redeem
  98. Route::post('/voucher/redeem', [VoucherController::class, 'redeem'])->middleware('throttle:5,1')->name('voucher.redeem');
  99. //switch language
  100. Route::post('changelocale', [TranslationController::class, 'changeLocale'])->name('changeLocale');
  101. //ticket user
  102. Route::get('ticket', [TicketsController::class, 'index'])->name('ticket.index');
  103. Route::get('ticket/datatable', [TicketsController::class, 'datatable'])->name('ticket.datatable');
  104. Route::get('ticket/new', [TicketsController::class, 'create'])->name('ticket.new');
  105. Route::post('ticket/new', [TicketsController::class, 'store'])->middleware(['throttle:ticket-new'])->name('ticket.new.store');
  106. Route::get('ticket/show/{ticket_id}', [TicketsController::class, 'show'])->name('ticket.show');
  107. Route::post('ticket/reply', [TicketsController::class, 'reply'])->middleware(['throttle:ticket-reply'])->name('ticket.reply');
  108. Route::post('ticket/status/{ticket_id}', [TicketsController::class, 'changeStatus'])->name('ticket.changeStatus');
  109. //admin
  110. Route::prefix('admin')->name('admin.')->group(function () {
  111. //Roles
  112. Route::get('roles/datatable', [RoleController::class, 'datatable'])->name('roles.datatable');
  113. Route::resource('roles', RoleController::class);
  114. //overview
  115. Route::get('legal', [OverViewController::class, 'index'])->name('overview.index');
  116. Route::get('overview', [OverViewController::class, 'index'])->name('overview.index');
  117. Route::get('overview/sync', [OverViewController::class, 'syncPterodactyl'])->name('overview.sync');
  118. Route::resource('activitylogs', ActivityLogController::class);
  119. //users
  120. Route::get('users.json', [UserController::class, 'json'])->name('users.json');
  121. Route::get('users/loginas/{user}', [UserController::class, 'loginAs'])->name('users.loginas');
  122. Route::get('users/verifyEmail/{user}', [UserController::class, 'verifyEmail'])->name('users.verifyEmail');
  123. Route::get('users/datatable', [UserController::class, 'datatable'])->name('users.datatable');
  124. Route::get('users/notifications', [UserController::class, 'notifications'])->name('users.notifications');
  125. Route::post('users/notifications', [UserController::class, 'notify'])->name('users.notifications');
  126. Route::post('users/togglesuspend/{user}', [UserController::class, 'toggleSuspended'])->name('users.togglesuspend');
  127. Route::resource('users', UserController::class);
  128. //servers
  129. Route::get('servers/datatable', [AdminServerController::class, 'datatable'])->name('servers.datatable');
  130. Route::post('servers/togglesuspend/{server}', [AdminServerController::class, 'toggleSuspended'])->name('servers.togglesuspend');
  131. Route::patch('/servers/cancel/{server}', [AdminServerController::class, 'cancel'])->name('servers.cancel');
  132. Route::get('servers/sync', [AdminServerController::class, 'syncServers'])->name('servers.sync');
  133. Route::resource('servers', AdminServerController::class);
  134. //products
  135. Route::get('products/datatable', [ProductController::class, 'datatable'])->name('products.datatable');
  136. Route::get('products/clone/{product}', [ProductController::class, 'clone'])->name('products.clone');
  137. Route::patch('products/disable/{product}', [ProductController::class, 'disable'])->name('products.disable');
  138. Route::resource('products', ProductController::class);
  139. //store
  140. Route::get('store/datatable', [ShopProductController::class, 'datatable'])->name('store.datatable');
  141. Route::patch('store/disable/{shopProduct}', [ShopProductController::class, 'disable'])->name('store.disable');
  142. Route::resource('store', ShopProductController::class)->parameters([
  143. 'store' => 'shopProduct',
  144. ]);
  145. //payments
  146. Route::get('payments/datatable', [PaymentController::class, 'datatable'])->name('payments.datatable');
  147. Route::get('payments', [PaymentController::class, 'index'])->name('payments.index');
  148. //settings
  149. Route::get('settings', [SettingsController::class, 'index'])->name('settings.index');
  150. Route::post('settings', [SettingsController::class, 'update'])->name('settings.update');
  151. Route::post('settings/icons', [SettingsController::class, 'updateIcons'])->name('settings.updateIcons');
  152. //invoices
  153. Route::get('invoices/download-invoices', [InvoiceController::class, 'downloadAllInvoices'])->name('invoices.downloadAllInvoices');
  154. Route::get('invoices/download-single-invoice', [InvoiceController::class, 'downloadSingleInvoice'])->name('invoices.downloadSingleInvoice');
  155. //usefullinks
  156. Route::get('usefullinks/datatable', [UsefulLinkController::class, 'datatable'])->name('usefullinks.datatable');
  157. Route::resource('usefullinks', UsefulLinkController::class);
  158. //legal
  159. Route::get('legal', [LegalController::class, 'index'])->name('legal.index');
  160. Route::patch('legal', [LegalController::class, 'update'])->name('legal.update');
  161. //vouchers
  162. Route::get('vouchers/datatable', [VoucherController::class, 'datatable'])->name('vouchers.datatable');
  163. Route::get('vouchers/{voucher}/usersdatatable', [VoucherController::class, 'usersdatatable'])->name('vouchers.usersdatatable');
  164. Route::get('vouchers/{voucher}/users', [VoucherController::class, 'users'])->name('vouchers.users');
  165. Route::resource('vouchers', VoucherController::class);
  166. //partners
  167. Route::get('partners/datatable', [PartnerController::class, 'datatable'])->name('partners.datatable');
  168. Route::get('partners/{voucher}/users', [PartnerController::class, 'users'])->name('partners.users');
  169. Route::resource('partners', PartnerController::class);
  170. //coupons
  171. Route::get('coupons/datatable', [CouponController::class, 'dataTable'])->name('coupons.datatable');
  172. Route::post('coupons/redeem', [CouponController::class, 'redeem'])->name('coupon.redeem');
  173. Route::resource('coupons', CouponController::class);
  174. //api-keys
  175. Route::get('api/datatable', [ApplicationApiController::class, 'datatable'])->name('api.datatable');
  176. Route::resource('api', ApplicationApiController::class)->parameters([
  177. 'api' => 'applicationApi',
  178. ]);
  179. //ticket moderation
  180. Route::get('ticket', [AdminTicketsController::class, 'index'])->name('ticket.index');
  181. Route::get('ticket/datatable', [AdminTicketsController::class, 'datatable'])->name('ticket.datatable');
  182. Route::get('ticket/show/{ticket_id}', [AdminTicketsController::class, 'show'])->name('ticket.show');
  183. Route::post('ticket/reply', [AdminTicketsController::class, 'reply'])->name('ticket.reply');
  184. Route::post('ticket/status/{ticket_id}', [AdminTicketsController::class, 'changeStatus'])->name('ticket.changeStatus');
  185. Route::post('ticket/delete/{ticket_id}', [AdminTicketsController::class, 'delete'])->name('ticket.delete');
  186. //ticket moderation blacklist
  187. Route::get('ticket/blacklist', [AdminTicketsController::class, 'blacklist'])->name('ticket.blacklist');
  188. Route::post('ticket/blacklist', [AdminTicketsController::class, 'blacklistAdd'])->name('ticket.blacklist.add');
  189. Route::post('ticket/blacklist/delete/{id}', [AdminTicketsController::class, 'blacklistDelete'])->name('ticket.blacklist.delete');
  190. Route::post('ticket/blacklist/change/{id}', [AdminTicketsController::class, 'blacklistChange'])->name('ticket.blacklist.change');
  191. Route::get('ticket/blacklist/datatable', [AdminTicketsController::class, 'dataTableBlacklist'])->name('ticket.blacklist.datatable');
  192. Route::get('ticket/category/datatable', [TicketCategoryController::class, 'datatable'])->name('ticket.category.datatable');
  193. Route::resource("ticket/category", TicketCategoryController::class, ['as' => 'ticket']);
  194. });
  195. Route::get('/home', [HomeController::class, 'index'])->name('home');
  196. });
  197. require __DIR__ . '/extensions_web.php';