140 lines
7.0 KiB
PHP
140 lines
7.0 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\AccountController;
|
|
use App\Http\Controllers\Admin\CategoryController as AdminCategoryController;
|
|
use App\Http\Controllers\Admin\ContentController;
|
|
use App\Http\Controllers\Admin\MakerWorldController;
|
|
use App\Http\Controllers\Admin\OrderController as AdminOrderController;
|
|
use App\Http\Controllers\Admin\ProductController as AdminProductController;
|
|
use App\Http\Controllers\Auth\ForgotPasswordController;
|
|
use App\Http\Controllers\Auth\LoginController;
|
|
use App\Http\Controllers\Auth\RegisterController;
|
|
use App\Http\Controllers\CartController;
|
|
use App\Http\Controllers\CheckoutController;
|
|
use App\Http\Controllers\ShopController;
|
|
use App\Models\Category;
|
|
use App\Models\Product;
|
|
use Illuminate\Cookie\Middleware\EncryptCookies;
|
|
use Illuminate\Session\Middleware\StartSession;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Illuminate\Support\Facades\Schema;
|
|
|
|
// Health & Diagnostics
|
|
Route::get('/health-debug', function () {
|
|
$dbPath = config('database.connections.sqlite.database');
|
|
|
|
$diagnostics = [
|
|
'php_version' => PHP_VERSION,
|
|
'app_env' => config('app.env'),
|
|
'has_app_key' => ! empty(config('app.key')),
|
|
'app_key_len' => strlen((string) config('app.key')),
|
|
'db_connection' => config('database.default'),
|
|
'db_path' => $dbPath,
|
|
'db_file_exists' => is_string($dbPath) && file_exists($dbPath),
|
|
'db_dir_writable' => is_string($dbPath) && is_writable(dirname($dbPath)),
|
|
];
|
|
|
|
try {
|
|
DB::connection()->getPdo();
|
|
$diagnostics['db_pdo'] = 'CONNECTED';
|
|
$diagnostics['tables'] = Schema::getTableListing();
|
|
} catch (Throwable $e) {
|
|
$diagnostics['db_pdo_error'] = $e->getMessage();
|
|
}
|
|
|
|
try {
|
|
$diagnostics['categories_count'] = Category::count();
|
|
} catch (Throwable $e) {
|
|
$diagnostics['categories_error'] = $e->getMessage();
|
|
}
|
|
|
|
try {
|
|
$diagnostics['products_count'] = Product::count();
|
|
} catch (Throwable $e) {
|
|
$diagnostics['products_error'] = $e->getMessage();
|
|
}
|
|
|
|
return response()->json($diagnostics);
|
|
})->withoutMiddleware([
|
|
StartSession::class,
|
|
EncryptCookies::class,
|
|
]);
|
|
|
|
// Shop & Product routes
|
|
Route::get('/', [ShopController::class, 'index'])->name('home');
|
|
Route::get('/catalogus', [ShopController::class, 'catalog'])->name('catalog');
|
|
Route::get('/product/{slug}', [ShopController::class, 'show'])->name('product.show');
|
|
Route::get('/custom-3d-print', [ShopController::class, 'customRequest'])->name('custom.request');
|
|
Route::post('/custom-3d-print', [ShopController::class, 'storeCustomRequest'])->name('custom.store');
|
|
Route::post('/custom-3d-print/bestellen', [CartController::class, 'addCustom'])->name('custom.cart.add');
|
|
|
|
// Winkelwagen
|
|
Route::get('/winkelwagen', [CartController::class, 'index'])->name('cart.index');
|
|
Route::post('/winkelwagen/toevoegen', [CartController::class, 'add'])->name('cart.add');
|
|
Route::post('/winkelwagen/bijwerken', [CartController::class, 'update'])->name('cart.update');
|
|
Route::delete('/winkelwagen/verwijderen/{key}', [CartController::class, 'remove'])->name('cart.remove');
|
|
Route::get('/winkelwagen/aantal', [CartController::class, 'count'])->name('cart.count');
|
|
|
|
// Afrekenen & Bevestiging
|
|
Route::get('/afrekenen', [CheckoutController::class, 'index'])->name('checkout.index');
|
|
Route::post('/afrekenen', [CheckoutController::class, 'store'])->name('checkout.store');
|
|
Route::get('/bestelling-ontvangen/{orderNumber}', [CheckoutController::class, 'success'])->name('checkout.success');
|
|
|
|
// Authenticatie & Klantenportaal
|
|
Route::middleware('guest')->group(function () {
|
|
Route::get('/inloggen', [LoginController::class, 'showLoginForm'])->name('login');
|
|
Route::post('/inloggen', [LoginController::class, 'login'])->name('login.submit');
|
|
Route::redirect('/login', '/inloggen');
|
|
|
|
Route::get('/registreren', [RegisterController::class, 'showRegistrationForm'])->name('register');
|
|
Route::post('/registreren', [RegisterController::class, 'register'])->name('register.submit');
|
|
Route::redirect('/register', '/registreren');
|
|
|
|
Route::get('/wachtwoord-vergeten', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('password.request');
|
|
Route::post('/wachtwoord-vergeten', [ForgotPasswordController::class, 'sendResetLinkEmail'])->name('password.email');
|
|
Route::get('/wachtwoord-resetten/{token}', [ForgotPasswordController::class, 'showResetForm'])->name('password.reset');
|
|
Route::post('/wachtwoord-resetten', [ForgotPasswordController::class, 'reset'])->name('password.update');
|
|
});
|
|
|
|
Route::middleware('auth')->group(function () {
|
|
Route::post('/uitloggen', [LoginController::class, 'logout'])->name('logout');
|
|
Route::get('/uitloggen', [LoginController::class, 'logout']); // Fallback voor GET uitloggen
|
|
|
|
// Klantendashboard / Mijn Account
|
|
Route::get('/mijn-account', [AccountController::class, 'index'])->name('account.index');
|
|
Route::put('/mijn-account/profiel', [AccountController::class, 'updateProfile'])->name('account.profile');
|
|
Route::put('/mijn-account/wachtwoord', [AccountController::class, 'updatePassword'])->name('account.password');
|
|
});
|
|
|
|
// Admin & CMS Beheer (Beveiligd: alleen ingelogde admins)
|
|
Route::prefix('admin')->name('admin.')->middleware(['auth', 'admin'])->group(function () {
|
|
Route::redirect('/', '/admin/content');
|
|
|
|
// Layout, Stijl & Teksten CMS
|
|
Route::get('/content', [ContentController::class, 'index'])->name('content.index');
|
|
Route::post('/content', [ContentController::class, 'update'])->name('content.update');
|
|
Route::post('/content/reset', [ContentController::class, 'reset'])->name('content.reset');
|
|
|
|
// Producten Beheer
|
|
Route::resource('products', AdminProductController::class)->except(['show']);
|
|
|
|
// Categorieën Beheer
|
|
Route::resource('categories', AdminCategoryController::class)->only(['index', 'edit', 'update']);
|
|
|
|
// Bestellingen Beheer
|
|
Route::get('/orders', [AdminOrderController::class, 'index'])->name('orders.index');
|
|
Route::get('/orders/{order}', [AdminOrderController::class, 'show'])->name('orders.show');
|
|
Route::post('/orders/{order}/status', [AdminOrderController::class, 'updateStatus'])->name('orders.status');
|
|
|
|
// MakerWorld Importer
|
|
Route::get('/makerworld', [MakerWorldController::class, 'index'])->name('makerworld.index');
|
|
Route::post('/makerworld/login', [MakerWorldController::class, 'login'])->name('makerworld.login');
|
|
Route::post('/makerworld/verify-code', [MakerWorldController::class, 'verifyCode'])->name('makerworld.verify-code');
|
|
Route::post('/makerworld/token', [MakerWorldController::class, 'saveToken'])->name('makerworld.token');
|
|
Route::post('/makerworld/disconnect', [MakerWorldController::class, 'disconnect'])->name('makerworld.disconnect');
|
|
Route::get('/makerworld/preview', [MakerWorldController::class, 'preview'])->name('makerworld.preview');
|
|
Route::post('/makerworld/import', [MakerWorldController::class, 'import'])->name('makerworld.import');
|
|
Route::post('/makerworld/batch-import', [MakerWorldController::class, 'batchImport'])->name('makerworld.batch-import');
|
|
});
|