From ba39333e1a069646123209e80a0ae87d2ed42016 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 20 Mar 2018 22:22:59 +0100 Subject: [PATCH 1/3] app/forms/Login.php: remove email validation --- app/forms/Login.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/forms/Login.php b/app/forms/Login.php index e8a421e..d285d4a 100644 --- a/app/forms/Login.php +++ b/app/forms/Login.php @@ -30,11 +30,6 @@ class Login extends Form 'placeholder' => 'Username/Email', )); - $validator = new EmailValidator(array( - 'message' => 'The e-mail is not valid', - )); - $email->addValidator($validator); - $this->add($email); // Password From cf92cfe37a0685cb4241d4f32d0fee4638ac50ac Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 20 Mar 2018 22:48:10 +0100 Subject: [PATCH 2/3] app/models/Data/User.php: adding findFirstByUsernameOrEmail() --- app/models/Data/User.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/models/Data/User.php b/app/models/Data/User.php index 6110b88..c28ac7f 100644 --- a/app/models/Data/User.php +++ b/app/models/Data/User.php @@ -110,4 +110,18 @@ class User extends Model $this->password = $password; return $this; } + + /** + * Find the first user by Username or Email + * + * @param string $value + * @return User|bool + */ + static public function findFirstByUsernameOrEmail($value) + { + return self::findFirst([ + "email = :v: OR username = :v:", + "bind" => [ 'v' => $value ] + ]); + } } From 4d5066f5da1b12928cda5e852152d1f057896b1a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 20 Mar 2018 22:48:38 +0100 Subject: [PATCH 3/3] app/library/Auth/Auth.php: in login() accept both username and email. --- app/library/Auth/Auth.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/library/Auth/Auth.php b/app/library/Auth/Auth.php index faecb4a..3f76c88 100644 --- a/app/library/Auth/Auth.php +++ b/app/library/Auth/Auth.php @@ -12,13 +12,19 @@ class Auth extends Component */ protected $_session_key = 'auth'; - public function login($email, $password) + /** + * Login using email/user + password combination. + * + * @param string $email_username + * @param string $password + * @return bool + */ + public function login($email_username, $password) { - // Look for a user with this email. - $user = User::findFirstByEmail($email); + // Look for a user with this username/email. + $user = User::findFirstByUsernameOrEmail($email_username); if ($user) { - // Verify password $hash = $user->getPassword(); if (strlen($hash) > 1 && password_verify($password, $hash)) {