Files

76 lines
4.8 KiB
PHP

<?php
use App\Http\Controllers\Admin\AgentController;
use App\Http\Controllers\Admin\AssignmentController;
use App\Http\Controllers\Admin\CampaignController;
use App\Http\Controllers\Admin\DashboardController;
use App\Http\Controllers\Admin\EditableFieldController;
use App\Http\Controllers\Admin\ImageController;
use App\Http\Controllers\Admin\SyncController;
use App\Http\Controllers\Admin\TemplateController;
use App\Http\Controllers\Auth\EntraLoginController;
use App\Http\Controllers\Portal\PortalController;
use Illuminate\Support\Facades\Route;
Route::redirect('/', '/me');
// SSO Entra
Route::get('/login', [EntraLoginController::class, 'redirect'])->name('login');
Route::get('/auth/callback', [EntraLoginController::class, 'callback'])->name('auth.callback');
Route::post('/logout', [EntraLoginController::class, 'logout'])->name('logout')->middleware('auth');
// Portail agent (tout agent synchronisé)
Route::middleware('auth')->group(function () {
Route::get('/me', [PortalController::class, 'show'])->name('portal.home');
Route::put('/me', [PortalController::class, 'update'])->name('portal.update');
});
// Back-office : réseau interne + rôle éditeur minimum
Route::prefix('admin')->middleware(['admin.network', 'auth', 'role:editor'])->name('admin.')->group(function () {
Route::get('/', DashboardController::class)->name('dashboard');
// Templates — éditeur : brouillons ; administrateur : publication, défaut, suppression
Route::get('/templates', [TemplateController::class, 'index'])->name('templates.index');
Route::get('/templates/create', [TemplateController::class, 'create'])->name('templates.create');
Route::post('/templates', [TemplateController::class, 'store'])->name('templates.store');
Route::post('/templates/preview', [TemplateController::class, 'preview'])->name('templates.preview');
Route::get('/templates/{template}', [TemplateController::class, 'edit'])->name('templates.edit');
Route::put('/templates/{template}', [TemplateController::class, 'update'])->name('templates.update');
Route::post('/templates/{template}/versions/{version}/restore', [TemplateController::class, 'restore'])->name('templates.restore');
// Images (logos, bannières) — éditeur : dépôt ; administrateur : suppression
Route::get('/images', [ImageController::class, 'index'])->name('images.index');
Route::post('/images', [ImageController::class, 'store'])->name('images.store');
// Campagnes (bannières) — éditeur : préparation ; administrateur : activation, suppression
Route::get('/campagnes', [CampaignController::class, 'index'])->name('campaigns.index');
Route::get('/campagnes/create', [CampaignController::class, 'create'])->name('campaigns.create');
Route::post('/campagnes', [CampaignController::class, 'store'])->name('campaigns.store');
Route::get('/campagnes/{campaign}', [CampaignController::class, 'edit'])->name('campaigns.edit');
Route::put('/campagnes/{campaign}', [CampaignController::class, 'update'])->name('campaigns.update');
Route::middleware('role:admin')->group(function () {
Route::post('/templates/{template}/publish', [TemplateController::class, 'publish'])->name('templates.publish');
Route::post('/templates/{template}/default', [TemplateController::class, 'makeDefault'])->name('templates.default');
Route::delete('/templates/{template}', [TemplateController::class, 'destroy'])->name('templates.destroy');
Route::get('/affectations', [AssignmentController::class, 'index'])->name('assignments.index');
Route::post('/affectations', [AssignmentController::class, 'store'])->name('assignments.store');
Route::put('/affectations/{assignment}', [AssignmentController::class, 'update'])->name('assignments.update');
Route::delete('/affectations/{assignment}', [AssignmentController::class, 'destroy'])->name('assignments.destroy');
Route::post('/campagnes/{campaign}/activation', [CampaignController::class, 'toggle'])->name('campaigns.toggle');
Route::delete('/campagnes/{campaign}', [CampaignController::class, 'destroy'])->name('campaigns.destroy');
Route::post('/synchro', SyncController::class)->name('sync');
Route::get('/champs', [EditableFieldController::class, 'index'])->name('fields.index');
Route::put('/champs', [EditableFieldController::class, 'update'])->name('fields.update');
Route::delete('/images/{name}', [ImageController::class, 'destroy'])->name('images.destroy')->where('name', '[A-Za-z0-9._-]+');
});
// Agents : simulation « qui reçoit quoi » et recherche pour l'aperçu
Route::get('/agents', [AgentController::class, 'index'])->name('agents.index');
Route::get('/agents/recherche', [AgentController::class, 'lookup'])->name('agents.lookup');
Route::get('/agents/{agent}', [AgentController::class, 'show'])->name('agents.show');
});