/** * @param $usernameOrEmail * @param $password * @param bool $storeSession * * @return array */ public function loginUser($usernameOrEmail, $password, $storeSession = false) { $this->clearSession(); $userRecord = $this->_db->fetchOne(self::TABLE, ['username' => $usernameOrEmail]); if (empty($userRecord)) { $userRecord = $this->_db->fetchOne(self::TABLE, ['email' => $usernameOrEmail]); } if (empty($userRecord)) { return ['result' => false, 'msg' => 'Account doesn\'t exist']; } if (!$this->verifyPassword($password, $userRecord['password'])) { $this->failedLogin($userRecord); return ['result' => false, 'msg' => 'Invalid password']; } SessionStorage::setValue('user-logged-in', true); SessionStorage::setValue('username', $userRecord['username']); SessionStorage::setValue('user-email', $userRecord['email']); SessionStorage::setUserId($userRecord['id']); if ($storeSession) { $this->storeSession($userRecord); } return ['result' => true, 'msg' => "User {$userRecord['email']} logged in"]; }