query('package_id') ? \App\Models\Package::find($request->query('package_id')) : null; return Inertia::render('auth/register', [ 'package' => $package, ]); } /** * Handle an incoming registration request. * * @throws \Illuminate\Validation\ValidationException */ public function store(Request $request): RedirectResponse { $request->validate([ 'name' => ['required', 'string', 'max:255'], 'username' => ['required', 'string', 'max:255', 'unique:'.User::class], 'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class], 'password' => ['required', 'confirmed', Rules\Password::defaults()], 'first_name' => ['required', 'string', 'max:255'], 'last_name' => ['required', 'string', 'max:255'], 'address' => ['required', 'string', 'max:500'], 'phone' => ['required', 'string', 'max:20'], 'privacy_consent' => ['accepted'], 'package_id' => ['nullable', 'exists:packages,id'], ]); $user = User::create([ 'name' => $request->name, 'username' => $request->username, 'email' => $request->email, 'first_name' => $request->first_name, 'last_name' => $request->last_name, 'address' => $request->address, 'phone' => $request->phone, 'password' => Hash::make($request->password), 'privacy_consent_at' => now(), // Neues Feld für Consent (füge Migration hinzu, falls nötig) ]); \Illuminate\Support\Facades\Log::info('Creating tenant for user ID: ' . $user->id); $tenant = Tenant::create([ 'user_id' => $user->id, 'name' => $request->name, 'slug' => Str::slug($request->name . '-' . now()->timestamp), 'email' => $request->email, 'is_active' => true, 'is_suspended' => false, 'event_credits_balance' => 0, 'subscription_tier' => 'free', 'subscription_expires_at' => null, 'settings' => json_encode([ 'branding' => [ 'logo_url' => null, 'primary_color' => '#3B82F6', 'secondary_color' => '#1F2937', 'font_family' => 'Inter, sans-serif', ], 'features' => [ 'photo_likes_enabled' => false, 'event_checklist' => false, 'custom_domain' => false, 'advanced_analytics' => false, ], 'custom_domain' => null, 'contact_email' => $request->email, 'event_default_type' => 'general', ]), ]); \Illuminate\Support\Facades\Log::info('Tenant created with ID: ' . $tenant->id); event(new Registered($user)); // Send Welcome Email \Illuminate\Support\Facades\Mail::to($user)->send(new \App\Mail\Welcome($user)); if ($request->filled('package_id')) { $package = \App\Models\Package::find($request->package_id); if ($package && $package->price == 0) { // Assign free package \App\Models\TenantPackage::create([ 'tenant_id' => $tenant->id, 'package_id' => $package->id, 'active' => true, 'price' => 0, ]); \App\Models\PackagePurchase::create([ 'tenant_id' => $tenant->id, 'package_id' => $package->id, 'type' => $package->type === 'endcustomer' ? 'endcustomer_event' : 'reseller_subscription', 'price' => 0, 'purchased_at' => now(), 'provider_id' => 'free', ]); $tenant->update(['subscription_status' => 'active']); } else if ($package) { // Redirect to buy for paid package return redirect()->route('buy.packages', $package->id); } } \Illuminate\Support\Facades\Log::info('Logging in user ID: ' . $user->id); Auth::login($user); \Illuminate\Support\Facades\Log::info('User logged in: ' . (Auth::check() ? 'Yes' : 'No')); return $user->hasVerifiedEmail() ? redirect()->intended(route('dashboard')) : redirect()->route('verification.notice'); } }