Files
HousemannandClaude Sonnet 4.6 9861a74e1e Fix admin AI nav bug, add rescan feature
- 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>
2026-06-13 18:22:41 +02:00

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');