die tenant admin oauth authentifizierung wurde implementiert und funktioniert jetzt. Zudem wurde das marketing frontend dashboard implementiert.

This commit is contained in:
Codex Agent
2025-11-04 16:14:17 +01:00
parent 92e64c361a
commit fe380689fb
63 changed files with 4239 additions and 1142 deletions

View File

@@ -10,6 +10,7 @@ use App\Http\Controllers\Api\Tenant\EventJoinTokenLayoutController;
use App\Http\Controllers\Api\Tenant\EventTypeController;
use App\Http\Controllers\Api\Tenant\NotificationLogController;
use App\Http\Controllers\Api\Tenant\PhotoController;
use App\Http\Controllers\Api\Tenant\ProfileController;
use App\Http\Controllers\Api\Tenant\SettingsController;
use App\Http\Controllers\Api\Tenant\TaskCollectionController;
use App\Http\Controllers\Api\Tenant\TaskController;
@@ -19,6 +20,9 @@ use App\Http\Controllers\Api\TenantPackageController;
use App\Http\Controllers\OAuthController;
use App\Http\Controllers\RevenueCatWebhookController;
use App\Http\Controllers\Tenant\CreditController;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Cookie\Middleware\EncryptCookies;
use Illuminate\Session\Middleware\StartSession;
use Illuminate\Support\Facades\Route;
Route::prefix('v1')->name('api.v1.')->group(function () {
@@ -26,7 +30,7 @@ Route::prefix('v1')->name('api.v1.')->group(function () {
->middleware('throttle:60,1')
->name('webhooks.revenuecat');
Route::middleware('throttle:oauth')->group(function () {
Route::middleware([EncryptCookies::class, AddQueuedCookiesToResponse::class, StartSession::class, 'throttle:oauth'])->group(function () {
Route::get('/oauth/authorize', [OAuthController::class, 'authorize'])->name('oauth.authorize');
Route::post('/oauth/token', [OAuthController::class, 'token'])->name('oauth.token');
});
@@ -57,6 +61,8 @@ Route::prefix('v1')->name('api.v1.')->group(function () {
});
Route::middleware(['tenant.token', 'tenant.isolation', 'throttle:tenant-api'])->prefix('tenant')->group(function () {
Route::get('profile', [ProfileController::class, 'show'])->name('tenant.profile.show');
Route::put('profile', [ProfileController::class, 'update'])->name('tenant.profile.update');
Route::get('me', [OAuthController::class, 'me'])->name('tenant.me');
Route::get('dashboard', DashboardController::class)->name('tenant.dashboard');
Route::get('event-types', EventTypeController::class)->name('tenant.event-types.index');

View File

@@ -4,12 +4,15 @@ use App\Http\Controllers\Auth\AuthenticatedSessionController;
use App\Http\Controllers\Auth\RegisteredUserController;
use App\Http\Controllers\CheckoutController;
use App\Http\Controllers\CheckoutGoogleController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\LegalPageController;
use App\Http\Controllers\LocaleController;
use App\Http\Controllers\MarketingController;
use App\Http\Controllers\PaddleCheckoutController;
use App\Http\Controllers\PaddleWebhookController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\Tenant\EventPhotoArchiveController;
use App\Http\Controllers\TenantAdminGoogleController;
use App\Models\Package;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
@@ -227,15 +230,23 @@ Route::get('/buy/{packageId}', function (Request $request, int $packageId) use (
return redirect("/{$locale}/buy/{$packageId}", 301);
});
Route::get('/dashboard', function () {
return Inertia::render('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');
Route::get('/dashboard', DashboardController::class)
->middleware(['auth'])
->name('dashboard');
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'index'])
->name('profile.index');
});
Route::prefix('event-admin')->group(function () {
$renderAdmin = fn () => view('admin');
Route::get('/auth/callback', $renderAdmin)->name('tenant.admin.auth.callback');
Route::get('/login', $renderAdmin)->name('tenant.admin.login');
Route::get('/logout', $renderAdmin)->name('tenant.admin.logout');
Route::get('/auth/google', [TenantAdminGoogleController::class, 'redirect'])
->name('tenant.admin.google.redirect');
Route::get('/auth/google/callback', [TenantAdminGoogleController::class, 'callback'])
->name('tenant.admin.google.callback');
Route::get('/{view?}', $renderAdmin)
->where('view', '.*')
->name('tenant.admin.app');