Made e-mail and username case insensitive.
This commit is contained in:
parent
13c1c0722e
commit
610a6a8b72
2 changed files with 18 additions and 5 deletions
|
@ -84,9 +84,9 @@ switch ($mode) {
|
||||||
$username = $_POST['username'] ?? '';
|
$username = $_POST['username'] ?? '';
|
||||||
$password = $_POST['password'] ?? '';
|
$password = $_POST['password'] ?? '';
|
||||||
|
|
||||||
try {
|
$user = User::findLogin($username);
|
||||||
$user = User::where('username', $username)->orWhere('email', $username)->firstOrFail();
|
|
||||||
} catch (ModelNotFoundException $e) {
|
if ($user === null) {
|
||||||
LoginAttempt::recordFail($ipAddress, null, $user_agent);
|
LoginAttempt::recordFail($ipAddress, null, $user_agent);
|
||||||
$auth_login_error = 'Invalid username or password!';
|
$auth_login_error = 'Invalid username or password!';
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -40,6 +40,14 @@ class User extends Model
|
||||||
return $user;
|
return $user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function findLogin(string $usernameOrEmail): ?User
|
||||||
|
{
|
||||||
|
$usernameOrEmail = strtolower($usernameOrEmail);
|
||||||
|
return User::whereRaw("LOWER(`username`) = '{$usernameOrEmail}'")
|
||||||
|
->orWhere('email', $usernameOrEmail)
|
||||||
|
->first();
|
||||||
|
}
|
||||||
|
|
||||||
public static function validateUsername(string $username, bool $checkInUse = false): string
|
public static function validateUsername(string $username, bool $checkInUse = false): string
|
||||||
{
|
{
|
||||||
$username_length = strlen($username);
|
$username_length = strlen($username);
|
||||||
|
@ -68,7 +76,7 @@ class User extends Model
|
||||||
return 'spacing';
|
return 'spacing';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($checkInUse && static::where('username', $username)->count() > 0) {
|
if ($checkInUse && static::whereRaw("LOWER(`username`) = LOWER('{$username}')")->count() > 0) {
|
||||||
return 'in-use';
|
return 'in-use';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,7 +93,7 @@ class User extends Model
|
||||||
return 'dns';
|
return 'dns';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($checkInUse && static::where('email', $email)->count() > 0) {
|
if ($checkInUse && static::whereRaw("LOWER(`email`) = LOWER('{$email}')")->count() > 0) {
|
||||||
return 'in-use';
|
return 'in-use';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,6 +202,11 @@ class User extends Model
|
||||||
$this->attributes['password'] = password_hash($password, self::PASSWORD_HASH_ALGO);
|
$this->attributes['password'] = password_hash($password, self::PASSWORD_HASH_ALGO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setEmailAttribute(string $email): void
|
||||||
|
{
|
||||||
|
$this->attributes['email'] = strtolower($email);
|
||||||
|
}
|
||||||
|
|
||||||
public function sessions()
|
public function sessions()
|
||||||
{
|
{
|
||||||
return $this->hasMany(Session::class, 'user_id');
|
return $this->hasMany(Session::class, 'user_id');
|
||||||
|
|
Loading…
Add table
Reference in a new issue