diff options
author | Frédéric Guillot <fred@kanboard.net> | 2014-05-22 12:28:28 -0400 |
---|---|---|
committer | Frédéric Guillot <fred@kanboard.net> | 2014-05-22 12:28:28 -0400 |
commit | 2230dd4e6b148346c0ec596b9e3e12996a762ed8 (patch) | |
tree | ef99ccde4f8b18592a3fb06a6ec45162c501fe38 /app/Model/LastLogin.php | |
parent | a750b8ab2a0cb715da6fd9025a7ec8375db68a4d (diff) |
Code refactoring (add autoloader and change files organization)
Diffstat (limited to 'app/Model/LastLogin.php')
-rw-r--r-- | app/Model/LastLogin.php | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/app/Model/LastLogin.php b/app/Model/LastLogin.php new file mode 100644 index 00000000..56739b48 --- /dev/null +++ b/app/Model/LastLogin.php @@ -0,0 +1,91 @@ +<?php + +namespace Model; + +/** + * LastLogin model + * + * @package model + * @author Frederic Guillot + */ +class LastLogin extends Base +{ + /** + * SQL table name + * + * @var string + */ + const TABLE = 'last_logins'; + + /** + * Number of connections to keep for history + * + * @var integer + */ + const NB_LOGINS = 10; + + /** + * Authentication methods + * + * @var string + */ + const AUTH_DATABASE = 'database'; + const AUTH_REMEMBER_ME = 'remember_me'; + const AUTH_LDAP = 'ldap'; + const AUTH_GOOGLE = 'google'; + + /** + * Create a new record + * + * @access public + * @param string $auth_type Authentication method + * @param integer $user_id User id + * @param string $ip IP Address + * @param string $user_agent User Agent + * @return array + */ + public function create($auth_type, $user_id, $ip, $user_agent) + { + // Cleanup old sessions if necessary + $connections = $this->db + ->table(self::TABLE) + ->eq('user_id', $user_id) + ->desc('date_creation') + ->findAllByColumn('id'); + + if (count($connections) >= self::NB_LOGINS) { + + $this->db->table(self::TABLE) + ->eq('user_id', $user_id) + ->notin('id', array_slice($connections, 0, self::NB_LOGINS - 1)) + ->remove(); + } + + return $this->db + ->table(self::TABLE) + ->insert(array( + 'auth_type' => $auth_type, + 'user_id' => $user_id, + 'ip' => $ip, + 'user_agent' => $user_agent, + 'date_creation' => time(), + )); + } + + /** + * Get the last connections for a given user + * + * @access public + * @param integer $user_id User id + * @return array + */ + public function getAll($user_id) + { + return $this->db + ->table(self::TABLE) + ->eq('user_id', $user_id) + ->desc('date_creation') + ->columns('id', 'auth_type', 'ip', 'user_agent', 'date_creation') + ->findAll(); + } +} |