ldc-showroom-bo/routes/web-bo.php
2025-07-09 15:28:33 +02:00

93 lines
3.7 KiB
PHP

<?php
use App\Http\Controllers\Bo\ActivityLogController;
use App\Http\Controllers\Bo\BrandController;
use App\Http\Controllers\Bo\DashboardController;
use App\Http\Controllers\Bo\ExportController;
use App\Http\Controllers\Bo\FontController;
use App\Http\Controllers\Bo\ProductController;
use App\Http\Controllers\Bo\RangeController;
use App\Http\Controllers\Bo\SettingsController;
use App\Http\Controllers\Bo\TenantController;
use App\Http\Controllers\Bo\UserController;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
use Stancl\Tenancy\Middleware\InitializeTenancyByPath;
Route::middleware(['web', 'admin-secure'])->name('bo.')->group(function () {
Route::prefix('/bo')->group(function () {
// * Authenticable routes
Route::namespace('\App\Http\Controllers\Bo')
->middleware(['throttle:credentials'])
->group(function () {
Auth::routes(
[
'confirm' => false,
'login' => true,
'logout' => true,
'register' => false,
'reset' => false,
'verify' => false,
]
);
Route::get('/login-error', function () {
return view('bo.pages.login-error');
})->name('login-error');
});
// * Others routes
Route::post('theme/set', [Controller::class, 'setTheme'])->name('theme.set');
Route::get('/lang/{lang}', [DashboardController::class, 'changelang'])->name('lang');
Route::middleware(['auth:backend', 'restrict_tenant_access'])->group(function () {
Route::get('/', [DashboardController::class, 'index'])->name('dashboard');
// * TENANTS MANAGEMENT
Route::resource('tenants', TenantController::class)
->only(['index', 'create', 'store', 'destroy']);
// * USERS
Route::resource('users', UserController::class)->except('show');
Route::patch('/users/{user}/change-published', [UserController::class, 'changePublished'])
->name('users.change-published');
Route::get('/users/{user}/duplicate', [UserController::class, 'duplicate'])->name('users.duplicate');
});
});
Route::middleware([
'restrict_tenant_access',
InitializeTenancyByPath::class,
'auth:backend'
])->prefix('{tenant}/bo')->group(function () {
// * EXPORT.
Route::get('export', [ExportController::class, 'exportToZip'])->name('export');
// * SETTINGS
Route::resource('settings', SettingsController::class)->only(['edit', 'update'])
->parameters(['settings' => 'settings']);
// * FONTS
Route::resource('fonts', FontController::class)->except('show');
// * BRANDS
Route::resource('brands', BrandController::class)->except('show');
// * RANGES
Route::resource('ranges', RangeController::class)->except('show');
Route::patch('/ranges/{range}/change-order/{direction}', [RangeController::class, 'changeOrder'])
->where('direction', 'up|down')
->name('ranges.change-order');
// * PRODUCTS
Route::resource('products', ProductController::class)->except('show')
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:description');
Route::middleware('can:isConceptor')->group(function () {
// * ACTIVITY LOGS.
Route::resource('activity_logs', ActivityLogController::class)->only(['index', 'show']);
});
});
});