From 2fe41c92824a2c9fbeee8156dc9e4a48bc1d547b Mon Sep 17 00:00:00 2001 From: REJack Date: Fri, 9 Nov 2018 19:08:32 +0100 Subject: [PATCH] updated models (LoginAttemptModel & UserModel) & added UserVariableModel --- Models/LoginAttemptModel.php | 17 ++++++--- Models/UserModel.php | 67 +++++++++++++++++++++++------------- Models/UserVariableModel.php | 38 ++++++++++++++++++++ 3 files changed, 94 insertions(+), 28 deletions(-) create mode 100644 Models/UserVariableModel.php diff --git a/Models/LoginAttemptModel.php b/Models/LoginAttemptModel.php index 2bf4143..0d9f312 100644 --- a/Models/LoginAttemptModel.php +++ b/Models/LoginAttemptModel.php @@ -5,7 +5,6 @@ use Magefly\Aauth\Config\Aauth as AauthConfig; class LoginAttemptModel extends Model { - protected $useSoftDeletes = false; protected $useTimestamps = true; protected $createdField = 'created_datetime'; protected $updatedField = 'updated_datetime'; @@ -22,7 +21,6 @@ class LoginAttemptModel extends Model public function update($id = null, $data = null) { $request = \Config\Services::request(); - $builder = $this->builder(); $ip_address = $request->getIPAddress(); $builder->where('ip_address', $ip_address); @@ -45,7 +43,7 @@ class LoginAttemptModel extends Model $data[$this->updatedField] = $this->setDate(); $builder->update($data, array('id' => $row->id)); - if ( $data['count'] > $this->config->loginAttemptLimit) + if ($data['count'] > $this->config->loginAttemptLimit) { return false; } @@ -59,11 +57,11 @@ class LoginAttemptModel extends Model public function get() { $request = \Config\Services::request(); - $builder = $this->builder(); $ip_address = $request->getIPAddress(); $builder->where('ip_address', $ip_address); $builder->where('updated_datetime >=', date("Y-m-d H:i:s", strtotime("-".$this->config->loginAttemptLimitTimePeriod))); + if ($builder->countAllResults() != 0) { $row = $builder->get()->getFirstRow(); @@ -74,4 +72,15 @@ class LoginAttemptModel extends Model return 0; } } + + public function delete($id = null, $purge = false) + { + $request = \Config\Services::request(); + $builder = $this->builder(); + $ip_address = $request->getIPAddress(); + $builder->where('ip_address', $ip_address); + $builder->where('updated_datetime >=', date("Y-m-d H:i:s", strtotime("-".$this->config->loginAttemptLimitTimePeriod))); + + return $builder->delete(); + } } diff --git a/Models/UserModel.php b/Models/UserModel.php index 9e2eefe..68465ac 100644 --- a/Models/UserModel.php +++ b/Models/UserModel.php @@ -44,7 +44,25 @@ class UserModel extends Model } } - public function findAllExtra(int $limit = 0, int $offset = 0, array $options = null) + public function updateLastLogin(int $id) + { + $builder = $this->builder(); + $data = array(); + $data['last_login'] = $this->setDate(); + $builder->update($data, array('id' => $id)); + + } + + public function updateLastActivity(int $id) + { + $builder = $this->builder(); + $data = array(); + $data['last_activity'] = $this->setDate(); + $builder->update($data, array('id' => $id)); + + } + + public function isBanned(int $id) { $builder = $this->builder(); @@ -53,36 +71,38 @@ class UserModel extends Model $builder->where($this->deletedField, 0); } - if (isset($options['where'])) - { - foreach ($options['where'] as $key => $value) - { - $builder->where($key, $value); - } - } + $builder->where($this->primaryKey, $id); + $builder->where('banned', 1); + return $builder->countAllResults(); + } + + public function existsById(int $id) + { + $builder = $this->builder(); - if (isset($options['order_by'])) + if ($this->tempUseSoftDeletes === true) { - foreach ($options['order_by'] as $key => $value) - { - $builder->orderBy($key, $value); - } + $builder->where($this->deletedField, 0); } - $row = $builder->limit($limit, $offset) - ->get(); - - $row = $row->getResult($this->tempReturnType); + $builder->where($this->primaryKey, $id); + return $builder->countAllResults(); + } - $row = $this->trigger('afterFind', ['data' => $row, 'limit' => $limit, 'offset' => $offset]); + public function existsByEmail(string $email) + { + $builder = $this->builder(); - $this->tempReturnType = $this->returnType; - $this->tempUseSoftDeletes = $this->useSoftDeletes; + if ($this->tempUseSoftDeletes === true) + { + $builder->where($this->deletedField, 0); + } - return $row['data']; + $builder->where('email', $email); + return $builder->countAllResults(); } - public function exists(int $id) + public function existsByUsername(string $username) { $builder = $this->builder(); @@ -91,8 +111,7 @@ class UserModel extends Model $builder->where($this->deletedField, 0); } - $builder->like($this->table.'.'.$this->primaryKey, $id); - + $builder->where('username', $username); return $builder->countAllResults(); } diff --git a/Models/UserVariableModel.php b/Models/UserVariableModel.php new file mode 100644 index 0000000..98e93b8 --- /dev/null +++ b/Models/UserVariableModel.php @@ -0,0 +1,38 @@ +config = new AauthConfig(); + $this->table = $this->config->dbTableUserVariables; + $this->DBGroup = $this->config->dbProfile; + } + + public function get($userId, $dataKey, $system = 0) + { + $builder = $this->builder(); + + $builder->where('user_id', $userId); + $builder->where('data_key', $dataKey); + + if ($builder->countAllResults() != 0) + { + return $builder->get()->getFirstRow(); + } + else + { + return false; + } + } +}