ldc-gen-game-web/routes/web-bo.php
2025-08-29 15:01:34 +02:00

143 lines
5.9 KiB
PHP

<?php
use App\Http\Controllers\Bo\ActivityLogController;
use App\Http\Controllers\Bo\BackController;
use App\Http\Controllers\Bo\BannedIpController;
use App\Http\Controllers\Bo\CodeController;
use App\Http\Controllers\Bo\FaqQuestionController;
use App\Http\Controllers\Bo\FaqThemeController;
use App\Http\Controllers\Bo\InstantWinController;
use App\Http\Controllers\Bo\PrizeController;
use App\Http\Controllers\Bo\ProductController;
use App\Http\Controllers\Bo\RangeController;
use App\Http\Controllers\Bo\SettingsController;
use App\Http\Controllers\Bo\StaticPageController;
use App\Http\Controllers\Bo\UserController;
use App\Http\Controllers\Bo\ParticipationController;
use App\Http\Controllers\Bo\TenantController;
use App\Http\Controllers\Controller;
use App\Http\Middleware\CheckThemeVersion;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
use Stancl\Tenancy\Middleware\InitializeTenancyByPath;
Route::middleware(['back', 'admin-secure'])->name('bo.')->group(function () {
Route::prefix('bo')->group(function () {
// * Authenticable routes
Route::namespace('\App\Http\Controllers\Bo')->group(function () {
Auth::routes(
[
'confirm' => false,
'login' => true,
'logout' => true,
'register' => false,
'reset' => false,
'verify' => false,
]
);
});
// No tenant routes.
Route::middleware(['auth:backend', 'restrict_tenant_access'])->group(function () {
// * HOME
Route::get('/', [BackController::class, 'index'])->name('dashboard');
// * TENANTS.
Route::resource('tenants', TenantController::class);
Route::get('/tenants/{tenant}/duplicate', [TenantController::class, 'duplicate'])
->name('tenants.duplicate');
Route::get('/tenants/json/paginate', [TenantController::class, 'jsonPaginateModels'])
->name('tenants.json-paginate');
// * 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');
});
// * Others routes
Route::post('theme/set', [Controller::class, 'setTheme'])->name('theme.set');
});
Route::middleware([
'restrict_tenant_access',
InitializeTenancyByPath::class,
CheckThemeVersion::class,
'auth:backend',
])->prefix('{tenant}/bo')->group(function () {
// * StaticPages
Route::resource('pages', StaticPageController::class)
->names([
'index' => 'static_pages.index',
'edit' => 'static_pages.edit',
'update' => 'static_pages.update',
])->parameters(['pages' => 'static_page'])
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:content')
->only(['index', 'edit', 'update']);
// * RANGES
Route::resource('ranges', RangeController::class);
// * PRODUCTS
Route::resource('products', ProductController::class);
// * FAQ - THEMES
Route::resource('faq-themes', FaqThemeController::class)->except('show');
// * FAQ - QUESTIONS
Route::resource('faq-questions', FaqQuestionController::class)->except('show')
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:answer');
// * PRIZES
Route::resource('prizes', PrizeController::class)
->withoutMiddleware('htmlsanitize')
->middleware(['htmlsanitize:arg_content']);
// * SETTINGS.
Route::get('settings', [SettingsController::class, 'edition'])->name('settings.edition');
Route::resource('settings', SettingsController::class)->only(['update']);
// * INSTANT WIN
Route::prefix('instant-win')->name('instant-win.')->group(function () {
Route::get('/', [InstantWinController::class, 'index'])->name('index');
Route::get('generate', [InstantWinController::class, 'generate'])->name('generate');
});
// * PARTICIPATIONS
Route::prefix('participations')->name('participations.')->group(function () {
// * WINNERS LIST
Route::get('winners-list', [ParticipationController::class, 'viewWinnerList'])->name('winners-list');
Route::get('{participation}/set-comment', [ParticipationController::class, 'setComment'])
->name('set-comment');
Route::patch('{participation}/set-comment', [ParticipationController::class, 'setCommentSubmit'])
->name('set-comment-submit');
Route::patch('{participation}/change-prize-sent', [ParticipationController::class, 'changePrizeSent'])
->name('change-prize-sent');
});
// * UNIQUES CODES.
Route::prefix('codes')->name('codes.')->group(function () {
Route::get('/', [CodeController::class, 'index'])->name('index');
Route::post('/', [CodeController::class, 'generate'])->name('generate');
Route::get('search', [CodeController::class, 'search'])->name('search');
Route::post('export', [CodeController::class, 'export'])->name('export');
});
// * BANNED IPS
Route::resource('banned_ips', BannedIpController::class)->except('show');
// * ACTIVITY LOGS.
Route::resource('activity_logs', ActivityLogController::class)->only(['index', 'show']);
// * STATISTICS.
Route::get('/statistics', [BackController::class, 'statistics'])->name('statistics.index');
});
});