- Fix Blade parse error in admin AI settings (Blade was interpreting
JSON braces in DEFAULT_PROMPT as template tags, breaking the navbar)
— pass defaultPrompt from controller instead
- Add rescan: POST /nail-polishes/{id}/rescan creates a new import for
an existing nail polish and updates its fields after AI analysis
- Add KI-Rescan button on collection cards (only if image exists)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
82 lines
4.4 KiB
PHP
Executable File
82 lines
4.4 KiB
PHP
Executable File
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Http\Controllers\NailPolishController;
|
|
use App\Http\Controllers\UserNailPolishController;
|
|
use App\Http\Controllers\AdminController;
|
|
use App\Http\Controllers\Auth\LoginController;
|
|
use App\Http\Controllers\Auth\SsoController;
|
|
use App\Http\Controllers\Admin\SsoSettingController;
|
|
use App\Http\Controllers\Admin\AiSettingController;
|
|
use App\Http\Controllers\NailPolishImportController;
|
|
use App\Http\Controllers\ManufacturerController;
|
|
|
|
// Startseite
|
|
Route::get('/', function () {
|
|
return redirect()->route('login');
|
|
});
|
|
|
|
// Authentifizierung (nur für Gäste)
|
|
Route::middleware('guest')->group(function () {
|
|
Route::get('/login', [LoginController::class, 'showLoginForm'])->name('login');
|
|
Route::post('/login', [LoginController::class, 'login']);
|
|
Route::get('/sso/redirect', [SsoController::class, 'redirect'])->name('sso.redirect');
|
|
});
|
|
|
|
// SSO Callback (kein guest-Middleware, da Authentik zurückleitet)
|
|
Route::get('/sso/callback', [SsoController::class, 'callback'])->name('sso.callback');
|
|
|
|
// Logout (nur für eingeloggte Benutzer)
|
|
Route::post('/logout', [LoginController::class, 'logout'])->name('logout')->middleware('auth');
|
|
|
|
// Geschützte Routen
|
|
Route::middleware(['auth'])->group(function () {
|
|
// Benutzer-Nagellack-Verwaltung
|
|
Route::get('/my-collection', [UserNailPolishController::class, 'index'])->name('user-nail-polishes.index');
|
|
Route::get('/available', [UserNailPolishController::class, 'available'])->name('user-nail-polishes.available');
|
|
Route::get('/create-nail-polish', [UserNailPolishController::class, 'create'])->name('user-nail-polishes.create');
|
|
Route::post('/create-nail-polish', [UserNailPolishController::class, 'store'])->name('user-nail-polishes.store');
|
|
Route::post('/add-to-collection/{nailPolish}', [UserNailPolishController::class, 'add'])->name('user-nail-polishes.add');
|
|
Route::post('/remove-from-collection/{nailPolish}', [UserNailPolishController::class, 'remove'])->name('user-nail-polishes.remove');
|
|
|
|
// Admin-Routen
|
|
Route::middleware(['admin'])->prefix('admin')->name('admin.')->group(function () {
|
|
Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('dashboard');
|
|
Route::get('/users', [AdminController::class, 'users'])->name('users.index');
|
|
Route::get('/users/create', [AdminController::class, 'createUser'])->name('users.create');
|
|
Route::post('/users', [AdminController::class, 'storeUser'])->name('users.store');
|
|
Route::get('/users/{user}/edit', [AdminController::class, 'editUser'])->name('users.edit');
|
|
Route::put('/users/{user}', [AdminController::class, 'updateUser'])->name('users.update');
|
|
Route::delete('/users/{user}', [AdminController::class, 'destroyUser'])->name('users.destroy');
|
|
Route::get('/statistics', [AdminController::class, 'statistics'])->name('statistics');
|
|
Route::get('/users/{user}/collection', [UserNailPolishController::class, 'showUserCollection'])->name('users.collection');
|
|
Route::get('/sso', [SsoSettingController::class, 'show'])->name('sso.show');
|
|
Route::put('/sso', [SsoSettingController::class, 'update'])->name('sso.update');
|
|
Route::get('/ai', [AiSettingController::class, 'show'])->name('ai.show');
|
|
Route::put('/ai', [AiSettingController::class, 'update'])->name('ai.update');
|
|
});
|
|
|
|
// Nagellack-Verwaltung (nur für Admin)
|
|
Route::middleware(['admin'])->group(function () {
|
|
Route::resource('nail-polishes', NailPolishController::class);
|
|
Route::get('/nail-polishes/{nailPolish}/users', [NailPolishController::class, 'showUsers'])->name('nail-polishes.showUsers');
|
|
});
|
|
|
|
// Hersteller-Verwaltung (für alle eingeloggten User)
|
|
Route::resource('manufacturers', ManufacturerController::class);
|
|
Route::get('/manufacturers-search', [ManufacturerController::class, 'search'])->name('manufacturers.search');
|
|
|
|
// KI Foto-Import (für alle eingeloggten User)
|
|
Route::resource('nail-polish-imports', NailPolishImportController::class)
|
|
->only(['index', 'create', 'store', 'show']);
|
|
Route::post('/nail-polishes/{nailPolish}/rescan', [NailPolishImportController::class, 'rescan'])->name('nail-polishes.rescan');
|
|
});
|
|
|
|
// Fallback
|
|
Route::fallback(function () {
|
|
return redirect()->route('login');
|
|
});
|
|
|
|
// Einfache Logout-Route für Debugging
|
|
Route::get('/logout', [App\Http\Controllers\Auth\LoginController::class, 'logout'])->name('logout');
|