feat: Implementierung des Checkout-Logins mit E-Mail/Username-Support
This commit is contained in:
@@ -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([
|
||||
|
||||
@@ -19,9 +19,6 @@ class LocaleController extends Controller
|
||||
}
|
||||
|
||||
// Return JSON response for fetch requests
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'locale' => App::getLocale(),
|
||||
]);
|
||||
return back();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user