feat: Implementierung des Checkout-Logins mit E-Mail/Username-Support

This commit is contained in:
Codex Agent
2025-10-08 21:57:46 +02:00
parent cee279cbab
commit 417b1da484
25 changed files with 730 additions and 212 deletions

View File

@@ -5,10 +5,12 @@ namespace App\Http\Controllers;
use App\Models\Package;
use App\Models\Tenant;
use App\Models\User;
use App\Http\Controllers\Auth\AuthenticatedSessionController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rules\Password;
@@ -109,6 +111,55 @@ class CheckoutController extends Controller
]);
}
public function login(Request $request)
{
$validator = Validator::make($request->all(), [
'identifier' => 'required|string',
'password' => 'required|string',
'remember' => 'boolean',
'locale' => 'nullable|string',
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
$packageId = $request->session()->get('selected_package_id');
// Custom Auth für Identifier (E-Mail oder Username)
$identifier = $request->identifier;
$user = User::where('email', $identifier)
->orWhere('username', $identifier)
->first();
if (!$user || !Hash::check($request->password, $user->password)) {
return response()->json([
'errors' => ['identifier' => ['Ungültige Anmeldedaten.']]
], 422);
}
Auth::login($user, $request->boolean('remember'));
$request->session()->regenerate();
// Checkout-spezifische Logik
DB::transaction(function () use ($request, $user, $packageId) {
if ($packageId && !$user->pending_purchase) {
$user->update(['pending_purchase' => true]);
$request->session()->put('pending_package_id', $packageId);
}
});
return response()->json([
'user' => [
'id' => $user->id,
'email' => $user->email,
'name' => $user->name ?? null,
'pending_purchase' => $user->pending_purchase ?? false,
],
'message' => 'Login erfolgreich',
]);
}
public function createPaymentIntent(Request $request)
{
$request->validate([

View File

@@ -19,9 +19,6 @@ class LocaleController extends Controller
}
// Return JSON response for fetch requests
return response()->json([
'success' => true,
'locale' => App::getLocale(),
]);
return back();
}
}