Save workspace changes

This commit is contained in:
2026-04-18 17:02:56 +02:00
parent f02ea9a711
commit 87d60af5a9
4220 changed files with 1388603 additions and 1554 deletions

View File

@@ -2,15 +2,21 @@
namespace App\Http\Requests\Auth;
use App\Models\User;
use Illuminate\Auth\Events\Lockout;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Str;
use Illuminate\Validation\ValidationException;
class LoginRequest extends FormRequest
{
private ?User $authenticatedUser = null;
private string $authenticatedVia = 'email';
/**
* Determine if the user is authorized to make this request.
*/
@@ -27,7 +33,7 @@ class LoginRequest extends FormRequest
public function rules(): array
{
return [
'email' => ['required', 'string', 'email'],
'email' => ['required', 'string'],
'password' => ['required', 'string'],
];
}
@@ -41,7 +47,25 @@ class LoginRequest extends FormRequest
{
$this->ensureIsNotRateLimited();
if (! Auth::attempt($this->only('email', 'password'), $this->boolean('remember'))) {
$identifier = strtolower(trim((string) $this->input('email')));
$password = (string) $this->input('password');
$user = User::query()
->whereRaw('LOWER(email) = ?', [$identifier])
->first();
$authenticatedVia = 'email';
if (! $user) {
$candidate = User::query()
->whereRaw('LOWER(username) = ?', [$identifier])
->first();
if ($candidate?->supportsUsernameLogin()) {
$user = $candidate;
$authenticatedVia = 'username';
}
}
if (! $user || ! Hash::check($password, (string) $user->password)) {
RateLimiter::hit($this->throttleKey());
throw ValidationException::withMessages([
@@ -49,9 +73,23 @@ class LoginRequest extends FormRequest
]);
}
Auth::login($user, $this->boolean('remember'));
$this->authenticatedUser = $user;
$this->authenticatedVia = $authenticatedVia;
RateLimiter::clear($this->throttleKey());
}
public function authenticatedUser(): ?User
{
return $this->authenticatedUser;
}
public function authenticatedViaUsername(): bool
{
return $this->authenticatedVia === 'username';
}
/**
* Ensure the login request is not rate limited.
*