61 lines
3.6 KiB
PHP
61 lines
3.6 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Admin\AgentController;
|
|
use App\Http\Controllers\Admin\AssignmentController;
|
|
use App\Http\Controllers\Admin\DashboardController;
|
|
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)->name('portal.home');
|
|
});
|
|
|
|
// 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');
|
|
|
|
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('/synchro', SyncController::class)->name('sync');
|
|
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');
|
|
});
|