diff options
-rw-r--r--[-rwxr-xr-x] | Auth.php | 1988 | ||||
-rw-r--r--[-rwxr-xr-x] | Config.php | 39 | ||||
-rw-r--r-- | files/password.php | 2 | ||||
-rw-r--r-- | languages/da_DK.php | 140 | ||||
-rw-r--r-- | languages/de_DE.php | 1 | ||||
-rw-r--r--[-rwxr-xr-x] | languages/en_GB.php | 1 | ||||
-rw-r--r-- | languages/fa_IR.php | 3 | ||||
-rw-r--r--[-rwxr-xr-x] | languages/fr_FR.php | 1 | ||||
-rw-r--r-- | languages/gr_GR.php | 141 | ||||
-rw-r--r-- | languages/it_IT.php | 1 | ||||
-rw-r--r-- | languages/nl_BE.php | 1 | ||||
-rw-r--r-- | languages/nl_NL.php | 1 | ||||
-rw-r--r-- | languages/no_NB.php | 1 | ||||
-rw-r--r-- | languages/pt_BR.php | 1 | ||||
-rw-r--r-- | languages/ru_RU.php | 143 | ||||
-rw-r--r--[-rwxr-xr-x] | languages/se_SE.php | 1 | ||||
-rw-r--r-- | tests/AuthTest.php | 322 |
17 files changed, 1407 insertions, 1380 deletions
@@ -5,1243 +5,1291 @@ namespace PHPAuth; use ZxcvbnPhp\Zxcvbn; use PHPMailer\PHPMailer\PHPMailer; -/*** -* Auth class -* Required PHP 5.4 and above. -*/ +/** + * Auth class + * Required PHP 5.4 and above. + */ class Auth { - protected $dbh; - public $config; - public $lang; + protected $dbh; + public $config; + public $lang; - /*** - * Initiates database connection - */ - - public function __construct(\PDO $dbh, $config, $language = "en_GB") - { - $this->dbh = $dbh; - $this->config = $config; + /** + * Initiates database connection + */ + public function __construct(\PDO $dbh, $config, $language = "en_GB") + { + $this->dbh = $dbh; + $this->config = $config; if (version_compare(phpversion(), '5.4.0', '<')) { die('PHP 5.4.0 required for PHPAuth engine!'); } - if (version_compare(phpversion(), '5.5.0', '<')) { - require("files/password.php"); - } - - // Load language - require "languages/{$language}.php"; - $this->lang = $lang; + if (version_compare(phpversion(), '5.5.0', '<')) { + require("files/password.php"); + } - date_default_timezone_set($this->config->site_timezone); - } + // Load language + require "languages/{$language}.php"; + $this->lang = $lang; - /*** - * Logs a user in - * @param string $email - * @param string $password - * @param int $remember - * @param string $captcha = NULL - * @return array $return - */ + date_default_timezone_set($this->config->site_timezone); + } - public function login($email, $password, $remember = 0, $captcha = NULL) - { - $return['error'] = true; + /** + * Logs a user in + * @param string $email + * @param string $password + * @param int $remember + * @param string $captcha = NULL + * @return array $return + */ + public function login($email, $password, $remember = 0, $captcha = NULL) + { + $return['error'] = true; $block_status = $this->isBlocked(); - if($block_status == "verify") - { - if($this->checkCaptcha($captcha) == false) - { + + if ($block_status == "verify") { + if ($this->checkCaptcha($captcha) == false) { $return['message'] = $this->lang["user_verify_failed"]; + return $return; } } + if ($block_status == "block") { $return['message'] = $this->lang["user_blocked"]; return $return; } - $validateEmail = $this->validateEmail($email); - $validatePassword = $this->validatePassword($password); + $validateEmail = $this->validateEmail($email); + $validatePassword = $this->validatePassword($password); + + if ($validateEmail['error'] == 1) { + $this->addAttempt(); + $return['message'] = $this->lang["email_password_invalid"]; - if ($validateEmail['error'] == 1) { - $this->addAttempt(); + return $return; + } elseif ($validatePassword['error'] == 1) { + $this->addAttempt(); + $return['message'] = $this->lang["email_password_invalid"]; - $return['message'] = $this->lang["email_password_invalid"]; - return $return; - } elseif($validatePassword['error'] == 1) { - $this->addAttempt(); + return $return; + } elseif ($remember != 0 && $remember != 1) { + $this->addAttempt(); + $return['message'] = $this->lang["remember_me_invalid"]; - $return['message'] = $this->lang["email_password_invalid"]; - return $return; - } elseif($remember != 0 && $remember != 1) { - $this->addAttempt(); + return $return; + } - $return['message'] = $this->lang["remember_me_invalid"]; - return $return; - } + $uid = $this->getUID(strtolower($email)); - $uid = $this->getUID(strtolower($email)); + if (!$uid) { + $this->addAttempt(); + $return['message'] = $this->lang["email_password_incorrect"]; - if(!$uid) { - $this->addAttempt(); + return $return; + } - $return['message'] = $this->lang["email_password_incorrect"]; - return $return; - } + $user = $this->getBaseUser($uid); - $user = $this->getBaseUser($uid); + if (!password_verify($password, $user['password'])) { + $this->addAttempt(); + $return['message'] = $this->lang["email_password_incorrect"]; - if (!password_verify($password, $user['password'])) { - $this->addAttempt(); + return $return; + } - $return['message'] = $this->lang["email_password_incorrect"]; - return $return; - } + if ($user['isactive'] != 1) { + $this->addAttempt(); + $return['message'] = $this->lang["account_inactive"]; - if ($user['isactive'] != 1) { - $this->addAttempt(); + return $return; + } - $return['message'] = $this->lang["account_inactive"]; - return $return; - } + $sessiondata = $this->addSession($user['uid'], $remember); - $sessiondata = $this->addSession($user['uid'], $remember); + if ($sessiondata == false) { + $return['message'] = $this->lang["system_error"] . " #01"; - if($sessiondata == false) { - $return['message'] = $this->lang["system_error"] . " #01"; - return $return; - } + return $return; + } - $return['error'] = false; - $return['message'] = $this->lang["logged_in"]; + $return['error'] = false; + $return['message'] = $this->lang["logged_in"]; - $return['hash'] = $sessiondata['hash']; - $return['expire'] = $sessiondata['expiretime']; + $return['hash'] = $sessiondata['hash']; + $return['expire'] = $sessiondata['expiretime']; - return $return; - } + return $return; + } - /*** - * Creates a new user, adds them to database - * @param string $email - * @param string $password - * @param string $repeatpassword + /** + * Creates a new user, adds them to database + * @param string $email + * @param string $password + * @param string $repeatpassword * @param array $params * @param string $captcha = NULL - * @param bool $sendmail = NULL - * @return array $return - */ - - public function register($email, $password, $repeatpassword, $params = Array(), $captcha = NULL, $sendmail = NULL) - { - $return['error'] = true; + * @param bool $sendmail = NULL + * @return array $return + */ + public function register($email, $password, $repeatpassword, $params = Array(), $captcha = NULL, $sendmail = NULL) + { + $return['error'] = true; $block_status = $this->isBlocked(); - if($block_status == "verify") - { - if($this->checkCaptcha($captcha) == false) - { + + if ($block_status == "verify") { + if ($this->checkCaptcha($captcha) == false) { $return['message'] = $this->lang["user_verify_failed"]; + return $return; } } + if ($block_status == "block") { $return['message'] = $this->lang["user_blocked"]; + return $return; } if ($password !== $repeatpassword) { $return['message'] = $this->lang["password_nomatch"]; + return $return; } // Validate email $validateEmail = $this->validateEmail($email); + if ($validateEmail['error'] == 1) { $return['message'] = $validateEmail['message']; + return $return; } // Validate password $validatePassword = $this->validatePassword($password); + if ($validatePassword['error'] == 1) { $return['message'] = $validatePassword['message']; + return $return; } $zxcvbn = new Zxcvbn(); - if($zxcvbn->passwordStrength($password)['score'] < intval($this->config->password_min_score)) { - $return['message'] = $this->lang['password_weak']; - return $return; - } + if ($zxcvbn->passwordStrength($password)['score'] < intval($this->config->password_min_score)) { + $return['message'] = $this->lang['password_weak']; - if ($this->isEmailTaken($email)) { - $this->addAttempt(); + return $return; + } - $return['message'] = $this->lang["email_taken"]; - return $return; - } + if ($this->isEmailTaken($email)) { + $this->addAttempt(); + $return['message'] = $this->lang["email_taken"]; - $addUser = $this->addUser($email, $password, $params, $sendmail); + return $return; + } - if($addUser['error'] != 0) { - $return['message'] = $addUser['message']; - return $return; - } + $addUser = $this->addUser($email, $password, $params, $sendmail); - $return['error'] = false; - $return['message'] = ($sendmail == true ? $this->lang["register_success"] : $this->lang['register_success_emailmessage_suppressed'] ); + if ($addUser['error'] != 0) { + $return['message'] = $addUser['message']; + + return $return; + } - return $return; - } + $return['error'] = false; + $return['message'] = ($sendmail == true ? $this->lang["register_success"] : $this->lang['register_success_emailmessage_suppressed'] ); - /*** - * Activates a user's account - * @param string $key - * @return array $return - */ + return $return; + } - public function activate($key) - { - $return['error'] = true; + /** + * Activates a user's account + * @param string $key + * @return array $return + */ + public function activate($key) + { + $return['error'] = true; $block_status = $this->isBlocked(); + if ($block_status == "block") { $return['message'] = $this->lang["user_blocked"]; + return $return; } - if(strlen($key) !== 20) { - $this->addAttempt(); + if (strlen($key) !== 20) { + $this->addAttempt(); + $return['message'] = $this->lang["activationkey_invalid"]; - $return['message'] = $this->lang["activationkey_invalid"]; - return $return; - } + return $return; + } - $getRequest = $this->getRequest($key, "activation"); + $getRequest = $this->getRequest($key, "activation"); - if($getRequest['error'] == 1) { - $return['message'] = $getRequest['message']; - return $return; - } + if ($getRequest['error'] == 1) { + $return['message'] = $getRequest['message']; - if($this->getBaseUser($getRequest['uid'])['isactive'] == 1) { - $this->addAttempt(); - $this->deleteRequest($getRequest['id']); + return $return; + } - $return['message'] = $this->lang["system_error"] . " #02"; - return $return; - } + if ($this->getBaseUser($getRequest['uid'])['isactive'] == 1) { + $this->addAttempt(); + $this->deleteRequest($getRequest['id']); + $return['message'] = $this->lang["system_error"] . " #02"; - $query = $this->dbh->prepare("UPDATE {$this->config->table_users} SET isactive = ? WHERE id = ?"); - $query->execute(array(1, $getRequest['uid'])); + return $return; + } - $this->deleteRequest($getRequest['id']); + $query = $this->dbh->prepare("UPDATE {$this->config->table_users} SET isactive = ? WHERE id = ?"); + $query->execute(array(1, $getRequest['uid'])); - $return['error'] = false; - $return['message'] = $this->lang["account_activated"]; + $this->deleteRequest($getRequest['id']); - return $return; - } + $return['error'] = false; + $return['message'] = $this->lang["account_activated"]; - /*** - * Creates a reset key for an email address and sends email - * @param string $email - * @return array $return - */ + return $return; + } + + /** + * Creates a reset key for an email address and sends email + * @param string $email + * @return array $return + */ - public function requestReset($email, $sendmail = NULL) - { - $return['error'] = true; + public function requestReset($email, $sendmail = NULL) + { + $return['error'] = true; $block_status = $this->isBlocked(); + if ($block_status == "block") { $return['message'] = $this->lang["user_blocked"]; + return $return; } - $validateEmail = $this->validateEmail($email); + $validateEmail = $this->validateEmail($email); - if ($validateEmail['error'] == 1) { - $return['message'] = $this->lang["email_invalid"]; - return $return; - } + if ($validateEmail['error'] == 1) { + $return['message'] = $this->lang["email_invalid"]; + + return $return; + } - $query = $this->dbh->prepare("SELECT id FROM {$this->config->table_users} WHERE email = ?"); - $query->execute(array($email)); + $query = $this->dbh->prepare("SELECT id FROM {$this->config->table_users} WHERE email = ?"); + $query->execute(array($email)); - if ($query->rowCount() == 0) { - $this->addAttempt(); + if ($query->rowCount() == 0) { + $this->addAttempt(); - $return['message'] = $this->lang["email_incorrect"]; - return $return; - } + $return['message'] = $this->lang["email_incorrect"]; - $addRequest = $this->addRequest($query->fetch(\PDO::FETCH_ASSOC)['id'], $email, "reset", $sendmail); - if ($addRequest['error'] == 1) { - $this->addAttempt(); + return $return; + } - $return['message'] = $addRequest['message']; - return $return; - } + $addRequest = $this->addRequest($query->fetch(\PDO::FETCH_ASSOC)['id'], $email, "reset", $sendmail); - $return['error'] = false; - $return['message'] = ($sendmail == true ? $this->lang["reset_requested"] : $this->lang['reset_requested_emailmessage_suppressed']); + if ($addRequest['error'] == 1) { + $this->addAttempt(); + $return['message'] = $addRequest['message']; - return $return; - } + return $return; + } - /*** - * Logs out the session, identified by hash - * @param string $hash - * @return boolean - */ + $return['error'] = false; + $return['message'] = ($sendmail == true ? $this->lang["reset_requested"] : $this->lang['reset_requested_emailmessage_suppressed']); - public function logout($hash) - { - if (strlen($hash) != 40) { - return false; - } + return $return; + } - return $this->deleteSession($hash); - } + /** + * Logs out the session, identified by hash + * @param string $hash + * @return boolean + */ - /*** - * Hashes provided password with Bcrypt - * @param string $password - * @param string $password - * @return string - */ + public function logout($hash) + { + if (strlen($hash) != 40) { + return false; + } - public function getHash($password) - { - return password_hash($password, PASSWORD_BCRYPT, ['cost' => $this->config->bcrypt_cost]); - } + return $this->deleteSession($hash); + } - /*** - * Gets UID for a given email address and returns an array - * @param string $email - * @return array $uid - */ + /** + * Hashes provided password with Bcrypt + * @param string $password + * @param string $password + * @return string + */ + public function getHash($password) + { + return password_hash($password, PASSWORD_BCRYPT, ['cost' => $this->config->bcrypt_cost]); + } + + /** + * Gets UID for a given email address and returns an array + * @param string $email + * @return array $uid + */ + + + public function getUID($email) + { + $query = $this->dbh->prepare("SELECT id FROM {$this->config->table_users} WHERE email = ?"); + $query->execute(array($email)); + + if ($query->rowCount() == 0) { + return false; + } + + return $query->fetch(\PDO::FETCH_ASSOC)['id']; + } + + /** + * Creates a session for a specified user id + * @param int $uid + * @param boolean $remember + * @return array $data + */ + + protected function addSession($uid, $remember) + { + $ip = $this->getIp(); + $user = $this->getBaseUser($uid); + + if (!$user) { + return false; + } + + $data['hash'] = sha1($this->config->site_key . microtime()); + $agent = $_SERVER['HTTP_USER_AGENT']; + + $this->deleteExistingSessions($uid); + + if ($remember == true) { + $data['expire'] = date("Y-m-d H:i:s", strtotime($this->config->cookie_remember)); + $data['expiretime'] = strtotime($data['expire']); + } else { + $data['expire'] = date("Y-m-d H:i:s", strtotime($this->config->cookie_forget)); + $data['expiretime'] = 0; + } + + $data['cookie_crc'] = sha1($data['hash'] . $this->config->site_key); + + $query = $this->dbh->prepare("INSERT INTO {$this->config->table_sessions} (uid, hash, expiredate, ip, agent, cookie_crc) VALUES (?, ?, ?, ?, ?, ?)"); + + if (!$query->execute(array($uid, $data['hash'], $data['expire'], $ip, $agent, $data['cookie_crc']))) { + return false; + } - public function getUID($email) - { - $query = $this->dbh->prepare("SELECT id FROM {$this->config->table_users} WHERE email = ?"); - $query->execute(array($email)); + $data['expire'] = strtotime($data['expire']); - if($query->rowCount() == 0) { - return false; - } + return $data; + } - return $query->fetch(\PDO::FETCH_ASSOC)['id']; - } + /** + * Removes all existing sessions for a given UID + * @param int $uid + * @return boolean + */ - /*** - * Creates a session for a specified user id - * @param int $uid - * @param boolean $remember - * @return array $data - */ + protected function deleteExistingSessions($uid) + { + $query = $this->dbh->prepare("DELETE FROM {$this->config->table_sessions} WHERE uid = ?"); + $query->execute(array($uid)); - protected function addSession($uid, $remember) - { - $ip = $this->getIp(); - $user = $this->getBaseUser($uid); + return $query->rowCount() == 1; + } - if(!$user) { - return false; - } + /** + * Removes a session based on hash + * @param string $hash + * @return boolean + */ - $data['hash'] = sha1($this->config->site_key . microtime()); - $agent = $_SERVER['HTTP_USER_AGENT']; + protected function deleteSession($hash) + { + $query = $this->dbh->prepare("DELETE FROM {$this->config->table_sessions} WHERE hash = ?"); + $query->execute(array($hash)); - $this->deleteExistingSessions($uid); + return $query->rowCount() == 1; + } - if($remember == true) { - $data['expire'] = date("Y-m-d H:i:s", strtotime($this->config->cookie_remember)); - $data['expiretime'] = strtotime($data['expire']); - } else { - $data['expire'] = date("Y-m-d H:i:s", strtotime($this->config->cookie_forget)); - $data['expiretime'] = 0; - } - - $data['cookie_crc'] = sha1($data['hash'] . $this->config->site_key); - - $query = $this->dbh->prepare("INSERT INTO {$this->config->table_sessions} (uid, hash, expiredate, ip, agent, cookie_crc) VALUES (?, ?, ?, ?, ?, ?)"); - - if(!$query->execute(array($uid, $data['hash'], $data['expire'], $ip, $agent, $data['cookie_crc']))) { - return false; - } - - $data['expire'] = strtotime($data['expire']); - return $data; - } - - /*** - * Removes all existing sessions for a given UID - * @param int $uid - * @return boolean - */ - - protected function deleteExistingSessions($uid) - { - $query = $this->dbh->prepare("DELETE FROM {$this->config->table_sessions} WHERE uid = ?"); - $query->execute(array($uid)); - - return $query->rowCount() == 1; - } - - /*** - * Removes a session based on hash - * @param string $hash - * @return boolean - */ - - protected function deleteSession($hash) - { - $query = $this->dbh->prepare("DELETE FROM {$this->config->table_sessions} WHERE hash = ?"); - $query->execute(array($hash)); - - return $query->rowCount() == 1; - } - - /** - * Function to check if a session is valid - * @param string $hash - * @return boolean - */ - - public function checkSession($hash) - { - $ip = $this->getIp(); + /** + * Function to check if a session is valid + * @param string $hash + * @return boolean + */ + public function checkSession($hash) + { + $ip = $this->getIp(); $block_status = $this->isBlocked(); + if ($block_status == "block") { $return['message'] = $this->lang["user_blocked"]; return false; } - if (strlen($hash) != 40) { - return false; - } - $query = $this->dbh->prepare("SELECT id, uid, expiredate, ip, agent, cookie_crc FROM {$this->config->table_sessions} WHERE hash = ?"); - $query->execute(array($hash)); + if (strlen($hash) != 40) { + return false; + } + + $query = $this->dbh->prepare("SELECT id, uid, expiredate, ip, agent, cookie_crc FROM {$this->config->table_sessions} WHERE hash = ?"); + $query->execute(array($hash)); - if ($query->rowCount() == 0) { - return false; - } - - $row = $query->fetch(\PDO::FETCH_ASSOC); + if ($query->rowCount() == 0) { + return false; + } - $sid = $row['id']; - $uid = $row['uid']; - $expiredate = strtotime($row['expiredate']); - $currentdate = strtotime(date("Y-m-d H:i:s")); - $db_ip = $row['ip']; - $db_agent = $row['agent']; - $db_cookie = $row['cookie_crc']; + $row = $query->fetch(\PDO::FETCH_ASSOC); + $sid = $row['id']; + $uid = $row['uid']; + $expiredate = strtotime($row['expiredate']); + $currentdate = strtotime(date("Y-m-d H:i:s")); + $db_ip = $row['ip']; + $db_agent = $row['agent']; + $db_cookie = $row['cookie_crc']; - if ($currentdate > $expiredate) { - $this->deleteExistingSessions($uid); + if ($currentdate > $expiredate) { + $this->deleteExistingSessions($uid); - return false; - } + return false; + } + + if ($ip != $db_ip) { + return false; + } - if ($ip != $db_ip) { - return false; - } + if ($db_cookie == sha1($hash . $this->config->site_key)) { + return true; + } - if ($db_cookie == sha1($hash . $this->config->site_key)) { - return true; - } + return false; + } - return false; - } + /** + * Retrieves the UID associated with a given session hash + * @param string $hash + * @return int $uid + */ - /** - * Retrieves the UID associated with a given session hash - * @param string $hash - * @return int $uid - */ + public function getSessionUID($hash) + { + $query = $this->dbh->prepare("SELECT uid FROM {$this->config->table_sessions} WHERE hash = ?"); + $query->execute(array($hash)); - public function getSessionUID($hash) - { - $query = $this->dbh->prepare("SELECT uid FROM {$this->config->table_sessions} WHERE hash = ?"); - $query->execute(array($hash)); + if ($query->rowCount() == 0) { + return false; + } - if ($query->rowCount() == 0) { - return false; - } + return $query->fetch(\PDO::FETCH_ASSOC)['uid']; + } - return $query->fetch(\PDO::FETCH_ASSOC)['uid']; - } + /** + * Checks if an email is already in use + * @param string $email + * @return boolean + */ - /** - * Checks if an email is already in use - * @param string $email - * @return boolean - */ + public function isEmailTaken($email) + { + $query = $this->dbh->prepare("SELECT count(*) FROM {$this->config->table_users} WHERE email = ?"); + $query->execute(array($email)); - public function isEmailTaken($email) - { - $query = $this->dbh->prepare("SELECT count(*) FROM {$this->config->table_users} WHERE email = ?"); - $query->execute(array($email)); + if ($query->fetchColumn() == 0) { + return false; + } - if ($query->fetchColumn() == 0) { - return false; - } + return true; + } - return true; - } + /** + * Adds a new user to database + * @param string $email -- email + * @param string $password -- password + * @param array $params -- additional params + * @return int $uid + */ + + protected function addUser($email, $password, $params = array(), &$sendmail) + { + $return['error'] = true; - /** - * Adds a new user to database - * @param string $email -- email - * @param string $password -- password - * @param array $params -- additional params - * @return int $uid - */ + $query = $this->dbh->prepare("INSERT INTO {$this->config->table_users} VALUES ()"); - protected function addUser($email, $password, $params = array(), &$sendmail) - { - $return['error'] = true; + if (!$query->execute()) { + $return['message'] = $this->lang["system_error"] . " #03"; + return $return; + } - $query = $this->dbh->prepare("INSERT INTO {$this->config->table_users} VALUES ()"); + $uid = $this->dbh->lastInsertId(); + $email = htmlentities(strtolower($email)); - if(!$query->execute()) { - $return['message'] = $this->lang["system_error"] . " #03"; - return $return; - } + if ($sendmail) { + $addRequest = $this->addRequest($uid, $email, "activation", $sendmail); - $uid = $this->dbh->lastInsertId(); - $email = htmlentities(strtolower($email)); + if ($addRequest['error'] == 1) { + $query = $this->dbh->prepare("DELETE FROM {$this->config->table_users} WHERE id = ?"); + $query->execute(array($uid)); + $return['message'] = $addRequest['message']; - if($sendmail) { - $addRequest = $this->addRequest($uid, $email, "activation", $sendmail); + return $return; + } - if($addRequest['error'] == 1) { - $query = $this->dbh->prepare("DELETE FROM {$this->config->table_users} WHERE id = ?"); - $query->execute(array($uid)); + $isactive = 0; + } else { + $isactive = 1; + } - $return['message'] = $addRequest['message']; - return $return; - } + $password = $this->getHash($password); - $isactive = 0; - } else { - $isactive = 1; - } - - $password = $this->getHash($password); - - if (is_array($params)&& count($params) > 0) { - $customParamsQueryArray = Array(); - - foreach($params as $paramKey => $paramValue) { - $customParamsQueryArray[] = array('value' => $paramKey . ' = ?'); - } + if (is_array($params)&& count($params) > 0) { + $customParamsQueryArray = Array(); - $setParams = ', ' . implode(', ', array_map(function ($entry) { - return $entry['value']; - }, $customParamsQueryArray)); - } else { $setParams = ''; } - - $query = $this->dbh->prepare("UPDATE {$this->config->table_users} SET email = ?, password = ?, isactive = ? {$setParams} WHERE id = ?"); - - $bindParams = array_values(array_merge(array($email, $password, $isactive), $params, array($uid))); - - if(!$query->execute($bindParams)) { - $query = $this->dbh->prepare("DELETE FROM {$this->config->table_users} WHERE id = ?"); - $query->execute(array($uid)); - - $return['message'] = $this->lang["system_error"] . " #04"; - return $return; - } - - $return['error'] = false; - return $return; - } - - /** - * Gets basic user data for a given UID and returns an array - * @param int $uid - * @return array $data - */ + foreach($params as $paramKey => $paramValue) { + $customParamsQueryArray[] = array('value' => $paramKey . ' = ?'); + } - protected function getBaseUser($uid) - { - $query = $this->dbh->prepare("SELECT email, password, isactive FROM {$this->config->table_users} WHERE id = ?"); - $query->execute(array($uid)); + $setParams = ', ' . implode(', ', array_map(function ($entry) { + return $entry['value']; + }, $customParamsQueryArray)); + } else { $setParams = ''; } - if ($query->rowCount() == 0) { - return false; - } - - $data = $query->fetch(\PDO::FETCH_ASSOC); + $query = $this->dbh->prepare("UPDATE {$this->config->table_users} SET email = ?, password = ?, isactive = ? {$setParams} WHERE id = ?"); - if (!$data) { - return false; - } + $bindParams = array_values(array_merge(array($email, $password, $isactive), $params, array($uid))); - $data['uid'] = $uid; - return $data; - } + if (!$query->execute($bindParams)) { + $query = $this->dbh->prepare("DELETE FROM {$this->config->table_users} WHERE id = ?"); + $query->execute(array($uid)); + $return['message'] = $this->lang["system_error"] . " #04"; - /** - * Gets public user data for a given UID and returns an array, password is not returned - * @param int $uid - * @return array $data - */ + return $return; + } - public function getUser($uid) - { - $query = $this->dbh->prepare("SELECT * FROM {$this->config->table_users} WHERE id = ?"); - $query->execute(array($uid)); + $return['error'] = false; + return $return; + } - if ($query->rowCount() == 0) { - return false; - } + /** + * Gets basic user data for a given UID and returns an array + * @param int $uid + * @return array $data + */ - $data = $query->fetch(\PDO::FETCH_ASSOC); + protected function getBaseUser($uid) + { + $query = $this->dbh->prepare("SELECT email, password, isactive FROM {$this->config->table_users} WHERE id = ?"); + $query->execute(array($uid)); - if (!$data) { - return false; - } + if ($query->rowCount() == 0) { + return false; + } - $data['uid'] = $uid; - unset($data['password']); - return $data; - } + $data = $query->fetch(\PDO::FETCH_ASSOC); - /** - * Allows a user to delete their account - * @param int $uid - * @param string $password + if (!$data) { + return false; + } + + $data['uid'] = $uid; + + return $data; + } + + /** + * Gets public user data for a given UID and returns an array, password is not returned + * @param int $uid + * @return array $data + */ + + public function getUser($uid) + { + $query = $this->dbh->prepare("SELECT * FROM {$this->config->table_users} WHERE id = ?"); + $query->execute(array($uid)); + + if ($query->rowCount() == 0) { + return false; + } + + $data = $query->fetch(\PDO::FETCH_ASSOC); + + if (!$data) { + return false; + } + + $data['uid'] = $uid; + unset($data['password']); + + return $data; + } + + /** + * Allows a user to delete their account + * @param int $uid + * @param string $password * @param string $captcha = NULL - * @return array $return - */ + * @return array $return + */ - public function deleteUser($uid, $password, $captcha = NULL) - { - $return['error'] = true; + public function deleteUser($uid, $password, $captcha = NULL) + { + $return['error'] = true; $block_status = $this->isBlocked(); - if($block_status == "verify") - { - if($this->checkCaptcha($captcha) == false) - { + if ($block_status == "verify") { + if ($this->checkCaptcha($captcha) == false) { $return['message'] = $this->lang["user_verify_failed"]; + return $return; } } + if ($block_status == "block") { $return['message'] = $this->lang["user_blocked"]; + return $return; } - $validatePassword = $this->validatePassword($password); + $validatePassword = $this->validatePassword($password); - if($validatePassword['error'] == 1) { - $this->addAttempt(); + if ($validatePassword['error'] == 1) { + $this->addAttempt(); + $return['message'] = $validatePassword['message']; + + return $return; + } - $return['message'] = $validatePassword['message']; - return $return; - } + $user = $this->getBaseUser($uid); - $user = $this->getBaseUser($uid); + if (!password_verify($password, $user['password'])) { + $this->addAttempt(); + $return['message'] = $this->lang["password_incorrect"]; + + return $return; + } - if(!password_verify($password, $user['password'])) { - $this->addAttempt(); + $query = $this->dbh->prepare("DELETE FROM {$this->config->table_users} WHERE id = ?"); - $return['message'] = $this->lang["password_incorrect"]; - return $return; - } + if (!$query->execute(array($uid))) { + $return['message'] = $this->lang["system_error"] . " #05"; - $query = $this->dbh->prepare("DELETE FROM {$this->config->table_users} WHERE id = ?"); + return $return; + } - if(!$query->execute(array($uid))) { - $return['message'] = $this->lang["system_error"] . " #05"; - return $return; - } + $query = $this->dbh->prepare("DELETE FROM {$this->config->table_sessions} WHERE uid = ?"); - $query = $this->dbh->prepare("DELETE FROM {$this->config->table_sessions} WHERE uid = ?"); + if (!$query->execute(array($uid))) { + $return['message'] = $this->lang["system_error"] . " #06"; - if(!$query->execute(array($uid))) { - $return['message'] = $this->lang["system_error"] . " #06"; - return $return; - } + return $return; + } - $query = $this->dbh->prepare("DELETE FROM {$this->config->table_requests} WHERE uid = ?"); + $query = $this->dbh->prepare("DELETE FROM {$this->config->table_requests} WHERE uid = ?"); - if(!$query->execute(array($uid))) { - $return['message'] = $this->lang["system_error"] . " #07"; - return $return; - } + if (!$query->execute(array($uid))) { + $return['message'] = $this->lang["system_error"] . " #07"; - $return['error'] = false; - $return['message'] = $this->lang["account_deleted"]; + return $return; + } - return $return; - } + $return['error'] = false; + $return['message'] = $this->lang["account_deleted"]; - /** - * Creates an activation entry and sends email to user - * @param int $uid - * @param string $email + return $return; + } + + /** + * Creates an activation entry and sends email to user + * @param int $uid + * @param string $email * @param string $type * @param boolean $sendmail = NULL - * @return boolean - */ + * @return boolean + */ - protected function addRequest($uid, $email, $type, &$sendmail) - { - $return['error'] = true; + protected function addRequest($uid, $email, $type, &$sendmail) + { + $return['error'] = true; - if($type != "activation" && $type != "reset") { - $return['message'] = $this->lang["system_error"] . " #08"; - return $return; - } + if ($type != "activation" && $type != "reset") { + $return['message'] = $this->lang["system_error"] . " #08"; + + return $return; + } // if not set manually, check config data - if($sendmail === NULL) - { - $sendmail = true; - if($type == "reset" && $this->config->emailmessage_suppress_reset === true ) { - $sendmail = false; - $return['error'] = false; - return $return; - } - if ($type == "activation" && $this->config->emailmessage_suppress_activation === true ) { - $sendmail = false; - $return['error'] = false; - return $return; - } - } - - $query = $this->dbh->prepare("SELECT id, expire FROM {$this->config->table_requests} WHERE uid = ? AND type = ?"); - $query->execute(array($uid, $type)); - - if($query->rowCount() > 0) { - $row = $query->fetch(\PDO::FETCH_ASSOC); - - $expiredate = strtotime($row['expire']); - $currentdate = strtotime(date("Y-m-d H:i:s")); - - if ($currentdate < $expiredate) { - $return['message'] = $this->lang["reset_exists"]; - return $return; - } - - $this->deleteRequest($row['id']); - } - - if($type == "activation" && $this->getBaseUser($uid)['isactive'] == 1) { - $return['message'] = $this->lang["already_activated"]; - return $return; - } - - $key = $this->getRandomKey(20); - $expire = date("Y-m-d H:i:s", strtotime($this->config->request_key_expiration)); - - $query = $this->dbh->prepare("INSERT INTO {$this->config->table_requests} (uid, rkey, expire, type) VALUES (?, ?, ?, ?)"); - - if(!$query->execute(array($uid, $key, $expire, $type))) { - $return['message'] = $this->lang["system_error"] . " #09"; - return $return; - } - - $request_id = $this->dbh->lastInsertId(); - - if($sendmail === true) - { - // Check configuration for SMTP parameters - $mail = new PHPMailer; - if($this->config->smtp) { - $mail->isSMTP(); - $mail->Host = $this->config->smtp_host; - $mail->SMTPAuth = $this->config->smtp_auth; - if(!is_null($this->config->smtp_auth)) { - $mail->Username = $this->config->smtp_username; - $mail->Password = $this->config->smtp_password; - } - $mail->Port = $this->config->smtp_port; - - if(!is_null($this->config->smtp_security)) { - $mail->SMTPSecure = $this->config->smtp_security; - } - } - - $mail->From = $this->config->site_email; - $mail->FromName = $this->config->site_name; - $mail->addAddress($email); - $mail->isHTML(true); - - if($type == "activation") { - - $mail->Subject = sprintf($this->lang['email_activation_subject'], $this->config->site_name); - $mail->Body = sprintf($this->lang['email_activation_body'], $this->config->site_url, $this->config->site_activation_page, $key); - $mail->AltBody = sprintf($this->lang['email_activation_altbody'], $this->config->site_url, $this->config->site_activation_page, $key); - } - else { - $mail->Subject = sprintf($this->lang['email_reset_subject'], $this->config->site_name); - $mail->Body = sprintf($this->lang['email_reset_body'], $this->config->site_url, $this->config->site_password_reset_page, $key); - $mail->AltBody = sprintf($this->lang['email_reset_altbody'], $this->config->site_url, $this->config->site_password_reset_page, $key); - } - - if(!$mail->send()) { - $this->deleteRequest($request_id); - - $return['message'] = $this->lang["system_error"] . " #10"; - return $return; - } - } - - $return['error'] = false; - return $return; - } - - /** - * Returns request data if key is valid - * @param string $key - * @param string $type - * @return array $return - */ - - public function getRequest($key, $type) - { - $return['error'] = true; - - $query = $this->dbh->prepare("SELECT id, uid, expire FROM {$this->config->table_requests} WHERE rkey = ? AND type = ?"); - $query->execute(array($key, $type)); - - if ($query->rowCount() === 0) { - $this->addAttempt(); - - $return['message'] = $this->lang[$type."key_incorrect"]; - return $return; - } - - $row = $query->fetch(); - - $expiredate = strtotime($row['expire']); - $currentdate = strtotime(date("Y-m-d H:i:s")); - - if ($currentdate > $expiredate) { - $this->addAttempt(); - - $this->deleteRequest($row['id']); - - $return['message'] = $this->lang[$type."key_expired"]; - return $return; - } - - $return['error'] = false; - $return['id'] = $row['id']; - $return['uid'] = $row['uid']; - - return $return; - } - - /** - * Deletes request from database - * @param int $id - * @return boolean - */ - - protected function deleteRequest($id) - { - $query = $this->dbh->prepare("DELETE FROM {$this->config->table_requests} WHERE id = ?"); - return $query->execute(array($id)); - } - - /** - * Verifies that a password is valid and respects security requirements - * @param string $password - * @return array $return - */ - - protected function validatePassword($password) { - $return['error'] = true; - - if (strlen($password) < (int)$this->config->verify_password_min_length ) { - $return['message'] = $this->lang["password_short"]; - return $return; - } - - $return['error'] = false; - return $return; - } - - /** - * Verifies that an email is valid - * @param string $email - * @return array $return - */ - - protected function validateEmail($email) { - $return['error'] = true; - - if (strlen($email) < (int)$this->config->verify_email_min_length ) { - $return['message'] = $this->lang["email_short"]; - return $return; - } elseif (strlen($email) > (int)$this->config->verify_email_max_length ) { - $return['message'] = $this->lang["email_long"]; - return $return; - } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { - $return['message'] = $this->lang["email_invalid"]; - return $return; - } + if ($sendmail === NULL) { + $sendmail = true; + if ($type == "reset" && $this->config->emailmessage_suppress_reset === true ) { + $sendmail = false; + $return['error'] = false; + + return $return; + } + + if ($type == "activation" && $this->config->emailmessage_suppress_activation === true ) { + $sendmail = false; + $return['error'] = false; + + return $return; + } + } + + $query = $this->dbh->prepare("SELECT id, expire FROM {$this->config->table_requests} WHERE uid = ? AND type = ?"); + $query->execute(array($uid, $type)); + + if ($query->rowCount() > 0) { + $row = $query->fetch(\PDO::FETCH_ASSOC); + + $expiredate = strtotime($row['expire']); + $currentdate = strtotime(date("Y-m-d H:i:s")); + + if ($currentdate < $expiredate) { + $return['message'] = $this->lang["reset_exists"]; + + return $return; + } + + $this->deleteRequest($row['id']); + } + + if ($type == "activation" && $this->getBaseUser($uid)['isactive'] == 1) { + $return['message'] = $this->lang["already_activated"]; + + return $return; + } + + $key = $this->getRandomKey(20); + $expire = date("Y-m-d H:i:s", strtotime($this->config->request_key_expiration)); + + $query = $this->dbh->prepare("INSERT INTO {$this->config->table_requests} (uid, rkey, expire, type) VALUES (?, ?, ?, ?)"); + + if (!$query->execute(array($uid, $key, $expire, $type))) { + $return['message'] = $this->lang["system_error"] . " #09"; + + return $return; + } + + $request_id = $this->dbh->lastInsertId(); + + if ($sendmail === true) { + // Check configuration for SMTP parameters + $mail = new PHPMailer; + if ($this->config->smtp) { + $mail->isSMTP(); + $mail->Host = $this->config->smtp_host; + $mail->SMTPAuth = $this->config->smtp_auth; + if (!is_null($this->config->smtp_auth)) { + $mail->Username = $this->config->smtp_username; + $mail->Password = $this->config->smtp_password; + } + $mail->Port = $this->config->smtp_port; + + if (!is_null($this->config->smtp_security)) { + $mail->SMTPSecure = $this->config->smtp_security; + } + } + + $mail->From = $this->config->site_email; + $mail->FromName = $this->config->site_name; + $mail->addAddress($email); + $mail->isHTML(true); + + if ($type == "activation") { + $mail->Subject = sprintf($this->lang['email_activation_subject'], $this->config->site_name); + $mail->Body = sprintf($this->lang['email_activation_body'], $this->config->site_url, $this->config->site_activation_page, $key); + $mail->AltBody = sprintf($this->lang['email_activation_altbody'], $this->config->site_url, $this->config->site_activation_page, $key); + } else { + $mail->Subject = sprintf($this->lang['email_reset_subject'], $this->config->site_name); + $mail->Body = sprintf($this->lang['email_reset_body'], $this->config->site_url, $this->config->site_password_reset_page, $key); + $mail->AltBody = sprintf($this->lang['email_reset_altbody'], $this->config->site_url, $this->config->site_password_reset_page, $key); + } + + if (!$mail->send()) { + $this->deleteRequest($request_id); + $return['message'] = $this->lang["system_error"] . " #10"; + + return $return; + } + + } + + $return['error'] = false; + + return $return; + } + + /** + * Returns request data if key is valid + * @param string $key + * @param string $type + * @return array $return + */ + + public function getRequest($key, $type) + { + $return['error'] = true; + + $query = $this->dbh->prepare("SELECT id, uid, expire FROM {$this->config->table_requests} WHERE rkey = ? AND type = ?"); + $query->execute(array($key, $type)); + + if ($query->rowCount() === 0) { + $this->addAttempt(); + $return['message'] = $this->lang[$type."key_incorrect"]; + + return $return; + } + + $row = $query->fetch(); + + $expiredate = strtotime($row['expire']); + $currentdate = strtotime(date("Y-m-d H:i:s")); + + if ($currentdate > $expiredate) { + $this->addAttempt(); + $this->deleteRequest($row['id']); + $return['message'] = $this->lang[$type."key_expired"]; + + return $return; + } + + $return['error'] = false; + $return['id'] = $row['id']; + $return['uid'] = $row['uid']; + + return $return; + } + + /** + * Deletes request from database + * @param int $id + * @return boolean + */ + + protected function deleteRequest($id) + { + $query = $this->dbh->prepare("DELETE FROM {$this->config->table_requests} WHERE id = ?"); + + return $query->execute(array($id)); + } + + /** + * Verifies that a password is valid and respects security requirements + * @param string $password + * @return array $return + */ + + protected function validatePassword($password) { + $return['error'] = true; + + if (strlen($password) < (int)$this->config->verify_password_min_length ) { + $return['message'] = $this->lang["password_short"]; + + return $return; + } + + $return['error'] = false; + + return $return; + } + + /** + * Verifies that an email is valid + * @param string $email + * @return array $return + */ + + protected function validateEmail($email) { + $return['error'] = true; + + if (strlen($email) < (int)$this->config->verify_email_min_length ) { + $return['message'] = $this->lang["email_short"]; + + return $return; + } elseif (strlen($email) > (int)$this->config->verify_email_max_length ) { + $return['message'] = $this->lang["email_long"]; + + return $return; + } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + $return['message'] = $this->lang["email_invalid"]; + + return $return; + } if ( (int)$this->config->verify_email_use_banlist ) { $bannedEmails = json_decode(file_get_contents(__DIR__ . "/files/domains.json")); if (in_array(strtolower(explode('@', $email)[1]), $bannedEmails)) { $return['message'] = $this->lang["email_banned"]; + return $return; } } - $return['error'] = false; - return $return; - } + $return['error'] = false; + return $return; + } - /** - * Allows a user to reset their password after requesting a reset key. - * @param string $key - * @param string $password - * @param string $repeatpassword - * @param string $captcha = NULL - * @return array $return - */ - public function resetPass($key, $password, $repeatpassword, $captcha = NULL) - { - $return['error'] = true; + /** + * Allows a user to reset their password after requesting a reset key. + * @param string $key + * @param string $password + * @param string $repeatpassword + * @param string $captcha = NULL + * @return array $return + */ + public function resetPass($key, $password, $repeatpassword, $captcha = NULL) + { + $return['error'] = true; $block_status = $this->isBlocked(); - if($block_status == "verify") - { - if($this->checkCaptcha($captcha) == false) - { + + if ($block_status == "verify") { + if ($this->checkCaptcha($captcha) == false) { $return['message'] = $this->lang["user_verify_failed"]; + return $return; } } + if ($block_status == "block") { $return['message'] = $this->lang["user_blocked"]; + return $return; } - if(strlen($key) != 20) { - $return['message'] = $this->lang["resetkey_invalid"]; - return $return; - } + if (strlen($key) != 20) { + $return['message'] = $this->lang["resetkey_invalid"]; - $validatePassword = $this->validatePassword($password); + return $return; + } - if($validatePassword['error'] == 1) { - $return['message'] = $validatePassword['message']; - return $return; - } + $validatePassword = $this->validatePassword($password); - if($password !== $repeatpassword) { - // Passwords don't match - $return['message'] = $this->lang["newpassword_nomatch"]; - return $return; - } + if ($validatePassword['error'] == 1) { + $return['message'] = $validatePassword['message']; + return $return; + } - $data = $this->getRequest($key, "reset"); + if ($password !== $repeatpassword) { + // Passwords don't match + $return['message'] = $this->lang["newpassword_nomatch"]; - if($data['error'] == 1) { - $return['message'] = $data['message']; - return $return; - } + return $return; + } - $user = $this->getBaseUser($data['uid']); + $data = $this->getRequest($key, "reset"); - if(!$user) { - $this->addAttempt(); - $this->deleteRequest($data['id']); + if ($data['error'] == 1) { + $return['message'] = $data['message']; - $return['message'] = $this->lang["system_error"] . " #11"; - return $return; - } + return $return; + } - if(password_verify($password, $user['password'])) { - $this->addAttempt(); + $user = $this->getBaseUser($data['uid']); - $return['message'] = $this->lang["newpassword_match"]; - return $return; - } + if (!$user) { + $this->addAttempt(); + $this->deleteRequest($data['id']); + $return['message'] = $this->lang["system_error"] . " #11"; - $password = $this->getHash($password); + return $return; + } - $query = $this->dbh->prepare("UPDATE {$this->config->table_users} SET password = ? WHERE id = ?"); - $query->execute(array($password, $data['uid'])); + if (password_verify($password, $user['password'])) { + $this->addAttempt(); + $return['message'] = $this->lang["newpassword_match"]; - if ($query->rowCount() == 0) { - $return['message'] = $this->lang["system_error"] . " #12"; - return $return; - } + return $return; + } + + $password = $this->getHash($password); + $query = $this->dbh->prepare("UPDATE {$this->config->table_users} SET password = ? WHERE id = ?"); + $query->execute(array($password, $data['uid'])); - $this->deleteRequest($data['id']); + if ($query->rowCount() == 0) { + $return['message'] = $this->lang["system_error"] . " #12"; - $return['error'] = false; - $return['message'] = $this->lang["password_reset"]; + return $return; + } - return $return; - } + $this->deleteRequest($data['id']); + $return['error'] = false; + $return['message'] = $this->lang["password_reset"]; - /** - * Recreates activation email for a given email and sends - * @param string $email - * @return array $return - */ + return $return; + } - public function resendActivation($email, $sendmail = NULL) - { - $return['error'] = true; + /** + * Recreates activation email for a given email and sends + * @param string $email + * @return array $return + */ + + public function resendActivation($email, $sendmail = NULL) + { + $return['error'] = true; $block_status = $this->isBlocked(); + if ($block_status == "block") { $return['message'] = $this->lang["user_blocked"]; + return $return; } - if($sendmail == NULL) { - $return['message'] = $this->lang['function_disabled']; - return $return; + if ($sendmail == NULL) { + $return['message'] = $this->lang['function_disabled']; + + return $return; } - $validateEmail = $this->validateEmail($email); + $validateEmail = $this->validateEmail($email); - if($validateEmail['error'] == 1) { - $return['message'] = $validateEmail['message']; - return $return; - } + if ($validateEmail['error'] == 1) { + $return['message'] = $validateEmail['message']; - $query = $this->dbh->prepare("SELECT id FROM {$this->config->table_users} WHERE email = ?"); - $query->execute(array($email)); + return $return; + } + + $query = $this->dbh->prepare("SELECT id FROM {$this->config->table_users} WHERE email = ?"); + $query->execute(array($email)); - if($query->rowCount() == 0) { - $this->addAttempt(); + if ($query->rowCount() == 0) { + $this->addAttempt(); + $return['message'] = $this->lang["email_incorrect"]; - $return['message'] = $this->lang["email_incorrect"]; - return $return; - } + return $return; + } - $row = $query->fetch(\PDO::FETCH_ASSOC); + $row = $query->fetch(\PDO::FETCH_ASSOC); - if ($this->getBaseUser($row['id'])['isactive'] == 1) { - $this->addAttempt(); + if ($this->getBaseUser($row['id'])['isactive'] == 1) { + $this->addAttempt(); + $return['message'] = $this->lang["already_activated"]; - $return['message'] = $this->lang["already_activated"]; - return $return; - } + return $return; + } - $addRequest = $this->addRequest($row['id'], $email, "activation", $sendmail); + $addRequest = $this->addRequest($row['id'], $email, "activation", $sendmail); - if ($addRequest['error'] == 1) { - $this->addAttempt(); + if ($addRequest['error'] == 1) { + $this->addAttempt(); + $return['message'] = $addRequest['message']; - $return['message'] = $addRequest['message']; - return $return; - } + return $return; + } - $return['error'] = false; - $return['message'] = $this->lang["activation_sent"]; - return $return; - } + $return['error'] = false; + $return['message'] = $this->lang["activation_sent"]; + return $return; + } - /** - * Changes a user's password - * @param int $uid - * @param string $currpass - * @param string $newpass + /** + * Changes a user's password + * @param int $uid + * @param string $currpass + * @param string $newpass * @param string $repeatnewpass * @param string $captcha = NULL - * @return array $return - */ + * @return array $return + */ public function changePassword($uid, $currpass, $newpass, $repeatnewpass, $captcha = NULL) - { - $return['error'] = true; - + { + $return['error'] = true; $block_status = $this->isBlocked(); - if($block_status == "verify") - { - if($this->checkCaptcha($captcha) == false) - { + + if ($block_status == "verify") { + if ($this->checkCaptcha($captcha) == false) { $return['message'] = $this->lang["user_verify_failed"]; return $return; } } + if ($block_status == "block") { $return['message'] = $this->lang["user_blocked"]; + return $return; } - $validatePassword = $this->validatePassword($currpass); + $validatePassword = $this->validatePassword($currpass); - if($validatePassword['error'] == 1) { - $this->addAttempt(); + if ($validatePassword['error'] == 1) { + $this->addAttempt(); + $return['message'] = $validatePassword['message']; - $return['message'] = $validatePassword['message']; - return $return; - } + return $return; + } - $validatePassword = $this->validatePassword($newpass); + $validatePassword = $this->validatePassword($newpass); - if($validatePassword['error'] == 1) { - $return['message'] = $validatePassword['message']; - return $return; - } elseif($newpass !== $repeatnewpass) { - $return['message'] = $this->lang["newpassword_nomatch"]; - return $return; - } + if ($validatePassword['error'] == 1) { + $return['message'] = $validatePassword['message']; - $zxcvbn = new Zxcvbn(); + return $return; + } elseif ($newpass !== $repeatnewpass) { + $return['message'] = $this->lang["newpassword_nomatch"]; - if($zxcvbn->passwordStrength($newpass)['score'] < intval($this->config->password_min_score)) { - $return['message'] = $this->lang['password_weak']; - return $return; - } + return $return; + } - $user = $this->getBaseUser($uid); + $zxcvbn = new Zxcvbn(); - if(!$user) { - $this->addAttempt(); + if ($zxcvbn->passwordStrength($newpass)['score'] < intval($this->config->password_min_score)) { + $return['message'] = $this->lang['password_weak']; - $return['message'] = $this->lang["system_error"] . " #13"; - return $return; - } + return $return; + } - if(!password_verify($currpass, $user['password'])) { - $this->addAttempt(); + $user = $this->getBaseUser($uid); - $return['message'] = $this->lang["password_incorrect"]; - return $return; - } + if (!$user) { + $this->addAttempt(); + $return['message'] = $this->lang["system_error"] . " #13"; - $newpass = $this->getHash($newpass); + return $return; + } - $query = $this->dbh->prepare("UPDATE {$this->config->table_users} SET password = ? WHERE id = ?"); - $query->execute(array($newpass, $uid)); + if (!password_verify($currpass, $user['password'])) { + $this->addAttempt(); + $return['message'] = $this->lang["password_incorrect"]; - $return['error'] = false; - $return['message'] = $this->lang["password_changed"]; - return $return; - } + return $return; + } - /** - * Changes a user's email - * @param int $uid - * @param string $email - * @param string $password - * @param string $captcha = NULL - * @return array $return - */ + $newpass = $this->getHash($newpass); - public function changeEmail($uid, $email, $password, $captcha = NULL) - { - $return['error'] = true; + $query = $this->dbh->prepare("UPDATE {$this->config->table_users} SET password = ? WHERE id = ?"); + $query->execute(array($newpass, $uid)); + $return['error'] = false; + $return['message'] = $this->lang["password_changed"]; + + return $return; + } + + /** + * Changes a user's email + * @param int $uid + * @param string $email + * @param string $password + * @param string $captcha = NULL + * @return array $return + */ + + public function changeEmail($uid, $email, $password, $captcha = NULL) + { + $return['error'] = true; $block_status = $this->isBlocked(); - if($block_status == "verify") - { - if($this->checkCaptcha($captcha) == false) - { + + if ($block_status == "verify") { + if ($this->checkCaptcha($captcha) == false) { $return['message'] = $this->lang["user_verify_failed"]; + return $return; } } + if ($block_status == "block") { $return['message'] = $this->lang["user_blocked"]; + return $return; } - $validateEmail = $this->validateEmail($email); + $validateEmail = $this->validateEmail($email); + + if ($validateEmail['error'] == 1) { + $return['message'] = $validateEmail['message']; + + return $return; + } - if($validateEmail['error'] == 1) - { - $return['message'] = $validateEmail['message']; - return $return; - } + $validatePassword = $this->validatePassword($password); - $validatePassword = $this->validatePassword($password); + if ($validatePassword['error'] == 1) { + $return['message'] = $this->lang["password_notvalid"]; - if ($validatePassword['error'] == 1) { - $return['message'] = $this->lang["password_notvalid"]; - return $return; - } + return $return; + } - $user = $this->getBaseUser($uid); + $user = $this->getBaseUser($uid); - if(!$user) { - $this->addAttempt(); + if (!$user) { + $this->addAttempt(); + $return['message'] = $this->lang["system_error"] . " #14"; + + return $return; + } - $return['message'] = $this->lang["system_error"] . " #14"; - return $return; - } + if (!password_verify($password, $user['password'])) { + $this->addAttempt(); + $return['message'] = $this->lang["password_incorrect"]; - if(!password_verify($password, $user['password'])) { - $this->addAttempt(); + return $return; + } - $return['message'] = $this->lang["password_incorrect"]; - return $return; - } + if ($email == $user['email']) { + $this->addAttempt(); + $return['message'] = $this->lang["newemail_match"]; - if ($email == $user['email']) { - $this->addAttempt(); + return $return; + } - $return['message'] = $this->lang["newemail_match"]; - return $return; - } + $query = $this->dbh->prepare("UPDATE {$this->config->table_users} SET email = ? WHERE id = ?"); + $query->execute(array($email, $uid)); - $query = $this->dbh->prepare("UPDATE {$this->config->table_users} SET email = ? WHERE id = ?"); - $query->execute(array($email, $uid)); + if ($query->rowCount() == 0) { + $return['message'] = $this->lang["system_error"] . " #15"; - if ($query->rowCount() == 0) { - $return['message'] = $this->lang["system_error"] . " #15"; - return $return; - } + return $return; + } - $return['error'] = false; - $return['message'] = $this->lang["email_changed"]; - return $return; - } + $return['error'] = false; + $return['message'] = $this->lang["email_changed"]; - /** - * Informs if a user is locked out - * @return string - */ + return $return; + } - public function isBlocked() - { - $ip = $this->getIp(); - $this->deleteAttempts($ip, false); - $query = $this->dbh->prepare("SELECT count(*) FROM {$this->config->table_attempts} WHERE ip = ?"); - $query->execute(array($ip)); + /** + * Informs if a user is locked out + * @return string + */ + public function isBlocked() + { + $ip = $this->getIp(); + $this->deleteAttempts($ip, false); + $query = $this->dbh->prepare("SELECT count(*) FROM {$this->config->table_attempts} WHERE ip = ?"); + $query->execute(array($ip)); $attempts = $query->fetchColumn(); - if($attempts < intval($this->config->attempts_before_verify)) - { + if ($attempts < intval($this->config->attempts_before_verify)) { return "allow"; } - if($attempts < intval($this->config->attempts_before_ban)) - { + + if ($attempts < intval($this->config->attempts_before_ban)) { return "verify"; } - return "block"; - } + + return "block"; + } /** @@ -1254,37 +1302,34 @@ class Auth return true; } - /** - * Adds an attempt to database - * @return boolean - */ - - protected function addAttempt() - { - $ip = $this->getIp(); - - $attempt_expiredate = date("Y-m-d H:i:s", strtotime($this->config->attack_mitigation_time)); + /** + * Adds an attempt to database + * @return boolean + */ + protected function addAttempt() + { + $ip = $this->getIp(); + $attempt_expiredate = date("Y-m-d H:i:s", strtotime($this->config->attack_mitigation_time)); $query = $this->dbh->prepare("INSERT INTO {$this->config->table_attempts} (ip, expiredate) VALUES (?, ?)"); - return $query->execute(array($ip, $attempt_expiredate)); - } + return $query->execute(array($ip, $attempt_expiredate)); + } - /** - * Deletes all attempts for a given IP from database - * @param string $ip + /** + * Deletes all attempts for a given IP from database + * @param string $ip * @param boolean $all = false - * @return boolean - */ + * @return boolean + */ - protected function deleteAttempts($ip, $all = false) - { - if($all==true) - { - $query = $this->dbh->prepare("DELETE FROM {$this->config->table_attempts} WHERE ip = ?"); - return $query->execute(array($ip)); - } + protected function deleteAttempts($ip, $all = false) + { + if ($all==true) { + $query = $this->dbh->prepare("DELETE FROM {$this->config->table_attempts} WHERE ip = ?"); + return $query->execute(array($ip)); + } $query = $this->dbh->prepare("SELECT id, expiredate FROM {$this->config->table_attempts} WHERE ip = ?"); $query->execute(array($ip)); @@ -1292,53 +1337,50 @@ class Auth while ($row = $query->fetch(\PDO::FETCH_ASSOC)) { $expiredate = strtotime($row['expiredate']); $currentdate = strtotime(date("Y-m-d H:i:s")); - if($currentdate > $expiredate) - { + if ($currentdate > $expiredate) { $queryDel = $this->dbh->prepare("DELETE FROM {$this->config->table_attempts} WHERE id = ?"); $queryDel->execute(array($row['id'])); } } - } - - /** - * Returns a random string of a specified length - * @param int $length - * @return string $key - */ - public function getRandomKey($length = 20) - { - $chars = "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6Q7R8S9T0U1V2W3X4Y5Z6a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6"; - $key = ""; - - for ($i = 0; $i < $length; $i++) { - $key .= $chars{mt_rand(0, strlen($chars) - 1)}; - } - - return $key; - } - - /** - * Returns IP address - * @return string $ip - */ - - protected function getIp() - { - if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '') { - return $_SERVER['HTTP_X_FORWARDED_FOR']; - } else { - return $_SERVER['REMOTE_ADDR']; - } - } - - /** - * Returns is user logged in - * @return boolean - */ - - public function isLogged() { - return (isset($_COOKIE[$this->config->cookie_name]) && $this->checkSession($_COOKIE[$this->config->cookie_name])); - } + } + + /** + * Returns a random string of a specified length + * @param int $length + * @return string $key + */ + public function getRandomKey($length = 20) + { + $chars = "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6Q7R8S9T0U1V2W3X4Y5Z6a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6"; + $key = ""; + + for ($i = 0; $i < $length; $i++) { + $key .= $chars{mt_rand(0, strlen($chars) - 1)}; + } + + return $key; + } + + /** + * Returns IP address + * @return string $ip + */ + protected function getIp() + { + if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '') { + return $_SERVER['HTTP_X_FORWARDED_FOR']; + } else { + return $_SERVER['REMOTE_ADDR']; + } + } + + /** + * Returns is user logged in + * @return boolean + */ + public function isLogged() { + return (isset($_COOKIE[$this->config->cookie_name]) && $this->checkSession($_COOKIE[$this->config->cookie_name])); + } /** * Returns current session hash diff --git a/Config.php b/Config.php index dd17b56..ed29dca 100755..100644 --- a/Config.php +++ b/Config.php @@ -21,8 +21,9 @@ class Config { $this->dbh = $dbh; - if (func_num_args() > 1) + if (func_num_args() > 1) { $this->config_table = $config_table; + } $this->config = array(); @@ -57,10 +58,12 @@ class Config { $query = $this->dbh->prepare("UPDATE {$this->config_table} SET value = ? WHERE setting = ?"); - if($query->execute(array($value, $setting))) { + if ($query->execute(array($value, $setting))) { $this->config[$setting] = $value; + return true; } + return false; } @@ -71,11 +74,11 @@ class Config * @param mixed $value * @return bool */ - public function override($setting, $value){ - + public function override($setting, $value) + { $this->config[$setting] = $value; - return true; + return true; } /** @@ -88,33 +91,39 @@ class Config { // verify* values. - if (! isset($this->config['verify_password_min_length']) ) + if (!isset($this->config['verify_password_min_length'])) { $this->config['verify_password_min_length'] = 3; + } - if (! isset($this->config['verify_password_max_length']) ) + if (!isset($this->config['verify_password_max_length'])) { $this->config['verify_password_max_length'] = 150; + } - if (! isset($this->config['verify_password_strong_requirements']) ) + if (!isset($this->config['verify_password_strong_requirements'])) { $this->config['verify_password_strong_requirements'] = 1; + } - if (! isset($this->config['verify_email_min_length']) ) + if (!isset($this->config['verify_email_min_length'])) { $this->config['verify_email_min_length'] = 5; + } - if (! isset($this->config['verify_email_max_length']) ) + if (!isset($this->config['verify_email_max_length'])) { $this->config['verify_email_max_length'] = 100; + } - if (! isset($this->config['verify_email_use_banlist']) ) + if (!isset($this->config['verify_email_use_banlist'])) { $this->config['verify_email_use_banlist'] = 1; + } // emailmessage* values - if (! isset($this->config['emailmessage_suppress_activation']) ) + if (!isset($this->config['emailmessage_suppress_activation'])) { $this->config['emailmessage_suppress_activation'] = 0; + } - if (! isset($this->config['emailmessage_suppress_reset']) ) + if (!isset($this->config['emailmessage_suppress_reset'])) { $this->config['emailmessage_suppress_reset'] = 0; - + } } - } diff --git a/files/password.php b/files/password.php index 0c3f696..77007a9 100644 --- a/files/password.php +++ b/files/password.php @@ -12,7 +12,7 @@ namespace { if (!defined('PASSWORD_BCRYPT')) { /** * PHPUnit Process isolation caches constants, but not function declarations. - * So we need to check if the constants are defined separately from + * So we need to check if the constants are defined separately from * the functions to enable supporting process isolation in userland * code. */ diff --git a/languages/da_DK.php b/languages/da_DK.php index 5223b19..3975974 100644 --- a/languages/da_DK.php +++ b/languages/da_DK.php @@ -1,71 +1,71 @@ -<?php
-$lang = array();
-
-$lang['user_blocked'] = "Du er i øjeblikket låst ude af systemet.";
-$lang['user_verify_failed'] = "Captcha Code var ugyldig.";
-
-$lang['email_password_invalid'] = "E-mail-adresse / password er ugyldige.";
-$lang['email_password_incorrect'] = "E-mail-adresse / password er forkert.";
-$lang['remember_me_invalid'] = "The remember me felt er ugyldigt.";
-
-$lang['password_short'] = "Password er for kort.";
-$lang['password_weak'] = "Password er for svagt.";
-$lang['password_nomatch'] = "Passwords er ikke ens.";
-$lang['password_changed'] = "Password ændret med succes.";
-$lang['password_incorrect'] = "Nuværende adgangskode er forkert.";
-$lang['password_notvalid'] = "Password er forkert.";
-
-$lang['newpassword_short'] = "Ny password er for kort.";
-$lang['newpassword_long'] = "Ny password er for langt.";
-$lang['newpassword_invalid'] = "Ny adgangskode skal indeholde mindst ét stort og småt bogstav, og mindst et ciffer.";
-$lang['newpassword_nomatch'] = "Nye adgangskoder er ikke ens.";
-$lang['newpassword_match'] = "Ny adgangskode er den samme som den gamle adgangskode.";
-
-$lang['email_short'] = "Email address er for kort.";
-$lang['email_long'] = "Email address er for langt.";
-$lang['email_invalid'] = "Email address er forkert.";
-$lang['email_incorrect'] = "Email address er ugyldigt.";
-$lang['email_banned'] = "This email address is not allowed.";
-$lang['email_changed'] = "Email address ændret med succes.";
-
-$lang['newemail_match'] = "Ny e-mail matcher tidligere e-mail.";
-
-$lang['account_inactive'] = "Konto er endnu ikke blevet aktiveret.";
-$lang['account_activated'] = "Konto aktiveret.";
-
-$lang['logged_in'] = "Du er nu logget ind.";
-$lang['logged_out'] = "Du er nu logget ud.";
-
-$lang['system_error'] = "Der er fundet en systemfejl. Venligst prøv igen.";
-
-$lang['register_success'] = "Konto oprettet. Aktivering e-mail sendt til e-mail.";
-$lang['register_success_emailmessage_suppressed'] = "Konto oprettet.";
-$lang['email_taken'] = "Den e-mail-adresse er allerede i brug.";
-
-$lang['resetkey_invalid'] = "Reset key er ugyldig.";
-$lang['resetkey_incorrect'] = "Reset key er forkert.";
-$lang['resetkey_expired'] = "Reset key er udløbet.";
-$lang['password_reset'] = "Password reset succes.";
-
-$lang['activationkey_invalid'] = "Aktiveringsnøgle er ugyldig.";
-$lang['activationkey_incorrect'] = "Aktiveringsnøgle er forkert.";
-$lang['activationkey_expired'] = "Aktiveringsnøgle er udløbet.";
-
-$lang['reset_requested'] = "Password reset anmodning sendt til e-mail-adresse.";
-$lang['reset_requested_emailmessage_suppressed'] = "anmodning Password reset er oprettet.";
-$lang['reset_exists'] = "En nulstilling anmodning findes allerede.";
-
-$lang['already_activated'] = "Konto er allerede aktiveret.";
-$lang['activation_sent'] = "Aktivering e-mail er blevet sendt.";
-$lang['activation_exists'] = "En aktiveringsemail er allerede blevet sendt.";
-
-$lang['email_activation_subject'] = '%s - Aktiver konto';
-$lang['email_activation_body'] = 'Hello,<br/><br/> For at være i stand til at logge ind på din konto skal du først aktivere din konto ved at klikke på følgende link : <strong><a href="%1$s/%2$s">%1$s/%2$s</a></strong><br/><br/> Derefter skal du bruge følgende aktiveringsnøgle: <strong>%3$s</strong><br/><br/> Hvis du ikke har registeret på %1$s for nylig så er denne besked blev sendt ved en fejl, venlisgt ignorere det.';
-$lang['email_activation_altbody'] = 'Hello, ' . "\n\n" . 'For at være i stand til at logge ind på din konto skal du først aktivere din konto ved at besøge følgende link :' . "\n" . '%1$s/%2$s' . "\n\n" . 'Derefter skal du bruge følgende aktiveringsnøgle: %3$s' . "\n\n" . 'Hvis du ikke har registeret på %1$s for nylig så er denne besked blev sendt ved en fejl, venlisgt ignorere det.';
-
-$lang['email_reset_subject'] = '%s - Password reset request';
-$lang['email_reset_body'] = 'Hello,<br/><br/>Nulstill din adgangskode ved at klikke på følgende link :<br/><br/><strong><a href="%1$s/%2$s">%1$s/%2$s</a></strong><br/><br/>Derefter skal du bruge følgende nøgle : <strong>%3$s</strong><br/><br/>Hvis du ikke har anmodet en password reset key på %1$s for nylig så er denne besked blev sendt ved en fejl, venlisgt ignorere det.';
-$lang['email_reset_altbody'] = 'Hello, ' . "\n\n" . 'Nulstill din adgangskode ved at klikke på følgende link :' . "\n" . '%1$s/%2$s' . "\n\n" . 'Derefter skal du bruge følgende nøgle: %3$s' . "\n\n" . 'Hvis du ikke har anmodet en password reset key på %1$s for nylig så er denne besked blev sendt ved en fejl, venlisgt ignorere det.';
-
-$lang['account_deleted'] = "Konto slettet.";
+<?php +$lang = array(); + +$lang['user_blocked'] = "Du er i øjeblikket låst ude af systemet."; +$lang['user_verify_failed'] = "Captcha Code var ugyldig."; + +$lang['email_password_invalid'] = "E-mail-adresse / password er ugyldige."; +$lang['email_password_incorrect'] = "E-mail-adresse / password er forkert."; +$lang['remember_me_invalid'] = "The remember me felt er ugyldigt."; + +$lang['password_short'] = "Password er for kort."; +$lang['password_weak'] = "Password er for svagt."; +$lang['password_nomatch'] = "Passwords er ikke ens."; +$lang['password_changed'] = "Password ændret med succes."; +$lang['password_incorrect'] = "Nuværende adgangskode er forkert."; +$lang['password_notvalid'] = "Password er forkert."; + +$lang['newpassword_short'] = "Ny password er for kort."; +$lang['newpassword_long'] = "Ny password er for langt."; +$lang['newpassword_invalid'] = "Ny adgangskode skal indeholde mindst ét stort og småt bogstav, og mindst et ciffer."; +$lang['newpassword_nomatch'] = "Nye adgangskoder er ikke ens."; +$lang['newpassword_match'] = "Ny adgangskode er den samme som den gamle adgangskode."; + +$lang['email_short'] = "Email address er for kort."; +$lang['email_long'] = "Email address er for langt."; +$lang['email_invalid'] = "Email address er forkert."; +$lang['email_incorrect'] = "Email address er ugyldigt."; +$lang['email_banned'] = "This email address is not allowed."; +$lang['email_changed'] = "Email address ændret med succes."; + +$lang['newemail_match'] = "Ny e-mail matcher tidligere e-mail."; + +$lang['account_inactive'] = "Konto er endnu ikke blevet aktiveret."; +$lang['account_activated'] = "Konto aktiveret."; + +$lang['logged_in'] = "Du er nu logget ind."; +$lang['logged_out'] = "Du er nu logget ud."; + +$lang['system_error'] = "Der er fundet en systemfejl. Venligst prøv igen."; + +$lang['register_success'] = "Konto oprettet. Aktivering e-mail sendt til e-mail."; +$lang['register_success_emailmessage_suppressed'] = "Konto oprettet."; +$lang['email_taken'] = "Den e-mail-adresse er allerede i brug."; + +$lang['resetkey_invalid'] = "Reset key er ugyldig."; +$lang['resetkey_incorrect'] = "Reset key er forkert."; +$lang['resetkey_expired'] = "Reset key er udløbet."; +$lang['password_reset'] = "Password reset succes."; + +$lang['activationkey_invalid'] = "Aktiveringsnøgle er ugyldig."; +$lang['activationkey_incorrect'] = "Aktiveringsnøgle er forkert."; +$lang['activationkey_expired'] = "Aktiveringsnøgle er udløbet."; + +$lang['reset_requested'] = "Password reset anmodning sendt til e-mail-adresse."; +$lang['reset_requested_emailmessage_suppressed'] = "anmodning Password reset er oprettet."; +$lang['reset_exists'] = "En nulstilling anmodning findes allerede."; + +$lang['already_activated'] = "Konto er allerede aktiveret."; +$lang['activation_sent'] = "Aktivering e-mail er blevet sendt."; +$lang['activation_exists'] = "En aktiveringsemail er allerede blevet sendt."; + +$lang['email_activation_subject'] = '%s - Aktiver konto'; +$lang['email_activation_body'] = 'Hello,<br/><br/> For at være i stand til at logge ind på din konto skal du først aktivere din konto ved at klikke på følgende link : <strong><a href="%1$s/%2$s">%1$s/%2$s</a></strong><br/><br/> Derefter skal du bruge følgende aktiveringsnøgle: <strong>%3$s</strong><br/><br/> Hvis du ikke har registeret på %1$s for nylig så er denne besked blev sendt ved en fejl, venlisgt ignorere det.'; +$lang['email_activation_altbody'] = 'Hello, ' . "\n\n" . 'For at være i stand til at logge ind på din konto skal du først aktivere din konto ved at besøge følgende link :' . "\n" . '%1$s/%2$s' . "\n\n" . 'Derefter skal du bruge følgende aktiveringsnøgle: %3$s' . "\n\n" . 'Hvis du ikke har registeret på %1$s for nylig så er denne besked blev sendt ved en fejl, venlisgt ignorere det.'; + +$lang['email_reset_subject'] = '%s - Password reset request'; +$lang['email_reset_body'] = 'Hello,<br/><br/>Nulstill din adgangskode ved at klikke på følgende link :<br/><br/><strong><a href="%1$s/%2$s">%1$s/%2$s</a></strong><br/><br/>Derefter skal du bruge følgende nøgle : <strong>%3$s</strong><br/><br/>Hvis du ikke har anmodet en password reset key på %1$s for nylig så er denne besked blev sendt ved en fejl, venlisgt ignorere det.'; +$lang['email_reset_altbody'] = 'Hello, ' . "\n\n" . 'Nulstill din adgangskode ved at klikke på følgende link :' . "\n" . '%1$s/%2$s' . "\n\n" . 'Derefter skal du bruge følgende nøgle: %3$s' . "\n\n" . 'Hvis du ikke har anmodet en password reset key på %1$s for nylig så er denne besked blev sendt ved en fejl, venlisgt ignorere det.'; + +$lang['account_deleted'] = "Konto slettet."; $lang['function_disabled'] = "Denne funktion er blevet deaktiveret.";
\ No newline at end of file diff --git a/languages/de_DE.php b/languages/de_DE.php index afd2741..57605c1 100644 --- a/languages/de_DE.php +++ b/languages/de_DE.php @@ -1,5 +1,4 @@ <?php - $lang = array(); $lang['user_blocked'] = "Dein Benutzer ist im System aktuell gesperrt."; diff --git a/languages/en_GB.php b/languages/en_GB.php index a348ebc..c5b71a7 100755..100644 --- a/languages/en_GB.php +++ b/languages/en_GB.php @@ -1,5 +1,4 @@ <?php - $lang = array(); $lang['user_blocked'] = "You are currently locked out of the system."; diff --git a/languages/fa_IR.php b/languages/fa_IR.php index 9f9f662..e55081d 100644 --- a/languages/fa_IR.php +++ b/languages/fa_IR.php @@ -1,5 +1,4 @@ -<?php - +<?php $lang = array(); $lang['user_blocked'] = "شما از طرف سیستم بلاک شدید"; diff --git a/languages/fr_FR.php b/languages/fr_FR.php index 70d93df..83307f9 100755..100644 --- a/languages/fr_FR.php +++ b/languages/fr_FR.php @@ -1,5 +1,4 @@ <?php - $lang = array(); $lang['user_blocked'] = "Vous êtes actuellement bloqués du système."; diff --git a/languages/gr_GR.php b/languages/gr_GR.php index bcdcaf3..077f5cc 100644 --- a/languages/gr_GR.php +++ b/languages/gr_GR.php @@ -1,72 +1,71 @@ -<?php
-
-$lang = array();
-
-$lang['user_blocked'] = "Αυτήν τη στιγμή είστε μπλοκαρισμένοι από το σύστημα.";
-$lang['user_verify_failed'] = "Ο κωδικός Captcha ήταν λανθασμένος.";
-
-$lang['email_password_invalid'] = "Το Email / password είναι μη έγκυρα.";
-$lang['email_password_incorrect'] = "Το Email address / password είναι λανθασμένα.";
-$lang['remember_me_invalid'] = "Το πεδίο remember me είναι μη έγκυρο.";
-
-$lang['password_short'] = "Ο κωδικός είναι πολύ μικρός.";
-$lang['password_weak'] = "Ο κωδικός είναι πολύ αδύναμος.";
-$lang['password_nomatch'] = "Οι κωδικοί δεν ταιριάζουν.";
-$lang['password_changed'] = "Ο κωδικός άλλαξε επιτυχώς.";
-$lang['password_incorrect'] = "Ο τρέχων κωδικός είναι λανθασμένος.";
-$lang['password_notvalid'] = "Ο κωδικός είναι μη έγκυρος.";
-
-$lang['newpassword_short'] = "Ο νέος κωδικός είναι πολύ μικρός.";
-$lang['newpassword_long'] = "Ο νέος κωδικός είναι πολύ μεγάλος.";
-$lang['newpassword_invalid'] = "Ο νέος κωδικός πρέπει να περιέχει τουλάχιστον ένα κεφαλαίο χαρακτήρα, ένα μικρό χαρακτήρα και έναν αριθμό.";
-$lang['newpassword_nomatch'] = "Οι νέοι κωδικοί δεν ταιριάζουν.";
-$lang['newpassword_match'] = "Ο νέος κωδικός είναι ίδιος με τον παλιό.";
-
-$lang['email_short'] = "Το Email είναι πολύ μικρό.";
-$lang['email_long'] = "Το Email είναι πολύ μεγάλο.";
-$lang['email_invalid'] = "Το Email δεν είναι έγκυρο.";
-$lang['email_incorrect'] = "Το Email είναι λανθασμένο.";
-$lang['email_banned'] = "Αυτή η διεύθυνση email δεν επιτρέπεται.";
-$lang['email_changed'] = "Το Email άλλαξε επιτυχώς.";
-
-$lang['newemail_match'] = "Το καινούριο email είναι ίδιο με το παλιό.";
-
-$lang['account_inactive'] = "Ο λογαριασμός δεν έχει ενεργοποιηθεί ακόμα.";
-$lang['account_activated'] = "Ο λογαριασμός ενεργοποιήθηκε.";
-
-$lang['logged_in'] = "Είστε συνδεδεμένος.";
-$lang['logged_out'] = "Αποσυνδεθήκατε.";
-
-$lang['system_error'] = "Το σύστημα αντιμετώπισε ένα σφάλμα. Προσπαθήστε ξανά.";
-
-$lang['register_success'] = "Ο λογαριασμός δημιουργήθηκε. Το email ενεργοποίησης στάλθηκε στη διεύθυνση email.";
-$lang['register_success_emailmessage_suppressed'] = "Ο λογαριασμός δημιουργήθηκε.";
-$lang['email_taken'] = "Το email χρησιμοποιείται ήδη.";
-
-$lang['resetkey_invalid'] = "Το κλειδί επαναφοράς δεν είναι έγκυρο.";
-$lang['resetkey_incorrect'] = "Το κλειδί επαναφοράς είναι λανθασμένο.";
-$lang['resetkey_expired'] = "Το κλειδί επαναφοράς έχει λήξει.";
-$lang['password_reset'] = "Επαναφορά κωδικού επιτυχής.";
-
-$lang['activationkey_invalid'] = "Το κλειδί ενεργοποίησης δεν είναι έγκυρο.";
-$lang['activationkey_incorrect'] = "Το κλειδί ενεργοποίησης είναι λανθασμένο.";
-$lang['activationkey_expired'] = "Το κλειδί ενεργοποίησης έχει λήξει.";
-
-$lang['reset_requested'] = "Η αίτηση επαναφοράς κωδικού στάλθηκε στη διεύθυνση email.";
-$lang['reset_requested_emailmessage_suppressed'] = "Η αίτηση επαναφοράς κωδικού δημιουργήθηκε.";
-$lang['reset_exists'] = "Μία αίτηση επαναφοράς κωδικού υπάρχει ήδη.";
-
-$lang['already_activated'] = "Ο λογαριασμός έχει ήδη ενεργοποιηθεί";
-$lang['activation_sent'] = "Το email ενεργοποίησης στάλθηκε";
-$lang['activation_exists'] = "Το email ενεργοποίησης έχει ήδη σταλεί.";
-
-$lang['email_activation_subject'] = '%s - Ενεργοποίηση λογαριασμού';
-$lang['email_activation_body'] = 'Γεια σου,<br/><br/> Για να μπορέσεις να συνδεθείς στο λογαριασμό σου πρέπει πρώτα να τον ενεργοποιήσεις κάνοντας κλικ στο παρακάτω link : <strong><a href="%1$s/%2$s">%1$s/%2$s</a></strong><br/><br/> Έπειτα, πρέπει να χρησιμοποιήσεις το παρακάτω κλειδί ενεργοποίησης: <strong>%3$s</strong><br/><br/> Αν δεν έκανες εγγραφή στο %1$s πρόσφατα, αυτό το email στάλθηκε κατά λάθος και μπορείς να το αγνοήσεις.';
-$lang['email_activation_altbody'] = 'Γεια σου, ' . "\n\n" . 'Για να μπορέσεις να συνδεθείς στο λογαριασμό σου πρέπει πρώτα να τον ενεργοποιήσεις κάνοντας κλικ στο παρακάτω link :' . "\n" . '%1$s/%2$s' . "\n\n" . 'Έπειτα, πρέπει να χρησιμοποιήσεις το παρακάτω κλειδί ενεργοποίησης: %3$s' . "\n\n" . 'Αν δεν έκανες εγγραφή στο %1$s πρόσφατα, αυτό το email στάλθηκε κατά λάθος και μπορείς να το αγνοήσεις.';
-
-$lang['email_reset_subject'] = '%s - Αίτηση επαναφοράς κωδικού';
-$lang['email_reset_body'] = 'Γεια σου,<br/><br/>Για να επαναφέρεις τον κωδικό σου κάνε κλικ στο παρακάτω link :<br/><br/><strong><a href="%1$s/%2$s">%1$s/%2$s</a></strong><br/><br/>Στη συνέχεια, χρησιμοποίησε το παρακάτω κλειδί επαναφοράς κωδικού: <strong>%3$s</strong><br/><br/>Αν δεν ζήτησες επαναφορά κωδικού στο %1$s πρόσφατα, μπορείς να αγνοήσεις αυτό το μήνυμα.';
-$lang['email_reset_altbody'] = 'Γεια σου, ' . "\n\n" . 'Για να επαναφέρεις τον κωδικό σου κάνε κλικ στο παρακάτω link :' . "\n" . '%1$s/%2$s' . "\n\n" . 'Στη συνέχεια, χρησιμοποίησε το παρακάτω κλειδί επαναφοράς κωδικού: %3$s' . "\n\n" . 'Αν δεν ζήτησες επαναφορά κωδικού στο %1$s πρόσφατα, μπορείς να αγνοήσεις αυτό το μήνυμα.';
-
-$lang['account_deleted'] = "Ο λογαριασμός διαγράφτηκε επιτυχώς..";
+<?php +$lang = array(); + +$lang['user_blocked'] = "Αυτήν τη στιγμή είστε μπλοκαρισμένοι από το σύστημα."; +$lang['user_verify_failed'] = "Ο κωδικός Captcha ήταν λανθασμένος."; + +$lang['email_password_invalid'] = "Το Email / password είναι μη έγκυρα."; +$lang['email_password_incorrect'] = "Το Email address / password είναι λανθασμένα."; +$lang['remember_me_invalid'] = "Το πεδίο remember me είναι μη έγκυρο."; + +$lang['password_short'] = "Ο κωδικός είναι πολύ μικρός."; +$lang['password_weak'] = "Ο κωδικός είναι πολύ αδύναμος."; +$lang['password_nomatch'] = "Οι κωδικοί δεν ταιριάζουν."; +$lang['password_changed'] = "Ο κωδικός άλλαξε επιτυχώς."; +$lang['password_incorrect'] = "Ο τρέχων κωδικός είναι λανθασμένος."; +$lang['password_notvalid'] = "Ο κωδικός είναι μη έγκυρος."; + +$lang['newpassword_short'] = "Ο νέος κωδικός είναι πολύ μικρός."; +$lang['newpassword_long'] = "Ο νέος κωδικός είναι πολύ μεγάλος."; +$lang['newpassword_invalid'] = "Ο νέος κωδικός πρέπει να περιέχει τουλάχιστον ένα κεφαλαίο χαρακτήρα, ένα μικρό χαρακτήρα και έναν αριθμό."; +$lang['newpassword_nomatch'] = "Οι νέοι κωδικοί δεν ταιριάζουν."; +$lang['newpassword_match'] = "Ο νέος κωδικός είναι ίδιος με τον παλιό."; + +$lang['email_short'] = "Το Email είναι πολύ μικρό."; +$lang['email_long'] = "Το Email είναι πολύ μεγάλο."; +$lang['email_invalid'] = "Το Email δεν είναι έγκυρο."; +$lang['email_incorrect'] = "Το Email είναι λανθασμένο."; +$lang['email_banned'] = "Αυτή η διεύθυνση email δεν επιτρέπεται."; +$lang['email_changed'] = "Το Email άλλαξε επιτυχώς."; + +$lang['newemail_match'] = "Το καινούριο email είναι ίδιο με το παλιό."; + +$lang['account_inactive'] = "Ο λογαριασμός δεν έχει ενεργοποιηθεί ακόμα."; +$lang['account_activated'] = "Ο λογαριασμός ενεργοποιήθηκε."; + +$lang['logged_in'] = "Είστε συνδεδεμένος."; +$lang['logged_out'] = "Αποσυνδεθήκατε."; + +$lang['system_error'] = "Το σύστημα αντιμετώπισε ένα σφάλμα. Προσπαθήστε ξανά."; + +$lang['register_success'] = "Ο λογαριασμός δημιουργήθηκε. Το email ενεργοποίησης στάλθηκε στη διεύθυνση email."; +$lang['register_success_emailmessage_suppressed'] = "Ο λογαριασμός δημιουργήθηκε."; +$lang['email_taken'] = "Το email χρησιμοποιείται ήδη."; + +$lang['resetkey_invalid'] = "Το κλειδί επαναφοράς δεν είναι έγκυρο."; +$lang['resetkey_incorrect'] = "Το κλειδί επαναφοράς είναι λανθασμένο."; +$lang['resetkey_expired'] = "Το κλειδί επαναφοράς έχει λήξει."; +$lang['password_reset'] = "Επαναφορά κωδικού επιτυχής."; + +$lang['activationkey_invalid'] = "Το κλειδί ενεργοποίησης δεν είναι έγκυρο."; +$lang['activationkey_incorrect'] = "Το κλειδί ενεργοποίησης είναι λανθασμένο."; +$lang['activationkey_expired'] = "Το κλειδί ενεργοποίησης έχει λήξει."; + +$lang['reset_requested'] = "Η αίτηση επαναφοράς κωδικού στάλθηκε στη διεύθυνση email."; +$lang['reset_requested_emailmessage_suppressed'] = "Η αίτηση επαναφοράς κωδικού δημιουργήθηκε."; +$lang['reset_exists'] = "Μία αίτηση επαναφοράς κωδικού υπάρχει ήδη."; + +$lang['already_activated'] = "Ο λογαριασμός έχει ήδη ενεργοποιηθεί"; +$lang['activation_sent'] = "Το email ενεργοποίησης στάλθηκε"; +$lang['activation_exists'] = "Το email ενεργοποίησης έχει ήδη σταλεί."; + +$lang['email_activation_subject'] = '%s - Ενεργοποίηση λογαριασμού'; +$lang['email_activation_body'] = 'Γεια σου,<br/><br/> Για να μπορέσεις να συνδεθείς στο λογαριασμό σου πρέπει πρώτα να τον ενεργοποιήσεις κάνοντας κλικ στο παρακάτω link : <strong><a href="%1$s/%2$s">%1$s/%2$s</a></strong><br/><br/> Έπειτα, πρέπει να χρησιμοποιήσεις το παρακάτω κλειδί ενεργοποίησης: <strong>%3$s</strong><br/><br/> Αν δεν έκανες εγγραφή στο %1$s πρόσφατα, αυτό το email στάλθηκε κατά λάθος και μπορείς να το αγνοήσεις.'; +$lang['email_activation_altbody'] = 'Γεια σου, ' . "\n\n" . 'Για να μπορέσεις να συνδεθείς στο λογαριασμό σου πρέπει πρώτα να τον ενεργοποιήσεις κάνοντας κλικ στο παρακάτω link :' . "\n" . '%1$s/%2$s' . "\n\n" . 'Έπειτα, πρέπει να χρησιμοποιήσεις το παρακάτω κλειδί ενεργοποίησης: %3$s' . "\n\n" . 'Αν δεν έκανες εγγραφή στο %1$s πρόσφατα, αυτό το email στάλθηκε κατά λάθος και μπορείς να το αγνοήσεις.'; + +$lang['email_reset_subject'] = '%s - Αίτηση επαναφοράς κωδικού'; +$lang['email_reset_body'] = 'Γεια σου,<br/><br/>Για να επαναφέρεις τον κωδικό σου κάνε κλικ στο παρακάτω link :<br/><br/><strong><a href="%1$s/%2$s">%1$s/%2$s</a></strong><br/><br/>Στη συνέχεια, χρησιμοποίησε το παρακάτω κλειδί επαναφοράς κωδικού: <strong>%3$s</strong><br/><br/>Αν δεν ζήτησες επαναφορά κωδικού στο %1$s πρόσφατα, μπορείς να αγνοήσεις αυτό το μήνυμα.'; +$lang['email_reset_altbody'] = 'Γεια σου, ' . "\n\n" . 'Για να επαναφέρεις τον κωδικό σου κάνε κλικ στο παρακάτω link :' . "\n" . '%1$s/%2$s' . "\n\n" . 'Στη συνέχεια, χρησιμοποίησε το παρακάτω κλειδί επαναφοράς κωδικού: %3$s' . "\n\n" . 'Αν δεν ζήτησες επαναφορά κωδικού στο %1$s πρόσφατα, μπορείς να αγνοήσεις αυτό το μήνυμα.'; + +$lang['account_deleted'] = "Ο λογαριασμός διαγράφτηκε επιτυχώς.."; $lang['function_disabled'] = "Αυτή η λειτουργία έχει απενεργοποιηθεί.";
\ No newline at end of file diff --git a/languages/it_IT.php b/languages/it_IT.php index 4d04f1d..2b5da44 100644 --- a/languages/it_IT.php +++ b/languages/it_IT.php @@ -1,5 +1,4 @@ <?php - $lang = array(); $lang['user_blocked'] = 'Il tuo account è stato bloccato.'; diff --git a/languages/nl_BE.php b/languages/nl_BE.php index 5b7aeb5..13c5a1c 100644 --- a/languages/nl_BE.php +++ b/languages/nl_BE.php @@ -1,5 +1,4 @@ <?php - $lang = array(); $lang['user_blocked'] = "Je bent momenteel uitgesloten van het systeem."; diff --git a/languages/nl_NL.php b/languages/nl_NL.php index e4d96c6..3490020 100644 --- a/languages/nl_NL.php +++ b/languages/nl_NL.php @@ -1,5 +1,4 @@ <?php - $lang = array(); $lang['user_blocked'] = "Je bent momenteel uitgesloten van het systeem."; diff --git a/languages/no_NB.php b/languages/no_NB.php index 2876de0..73976ff 100644 --- a/languages/no_NB.php +++ b/languages/no_NB.php @@ -1,5 +1,4 @@ <?php - $lang = array(); $lang['user_blocked'] = "Du er for øyeblikket låst ute av systemet."; diff --git a/languages/pt_BR.php b/languages/pt_BR.php index e2323c1..92882c8 100644 --- a/languages/pt_BR.php +++ b/languages/pt_BR.php @@ -1,5 +1,4 @@ <?php - $lang = array(); $lang['user_blocked'] = "Você atualmente está bloqueado."; diff --git a/languages/ru_RU.php b/languages/ru_RU.php index f1b016d..d2bc81a 100644 --- a/languages/ru_RU.php +++ b/languages/ru_RU.php @@ -1,72 +1,71 @@ -<?php
-
-$lang = array();
-
-$lang['user_blocked'] = "Ваш аккаунт заблокирован.";
-$lang['user_verify_failed'] = "Защитный код код недействителен.";
-
-$lang['email_password_invalid'] = "Недопустимые E-Mail или пароль.";
-$lang['email_password_incorrect'] = "Пользователь с указанным E-Mail'ом не обнаружен в системе или пароль не подходит.";
-$lang['remember_me_invalid'] = 'Недопустимое значение поля "запомнить пользователя".';
-
-$lang['password_short'] = "Пароль слишком короткий.";
-$lang['password_weak'] = "Password is too weak.";
-$lang['password_nomatch'] = "Пароли не совпадают.";
-$lang['password_changed'] = "Пароль успешно изменен.";
-$lang['password_incorrect'] = "Текущий пароль указан неверно.";
-$lang['password_notvalid'] = "Недопустимый пароль.";
-
-$lang['newpassword_short'] = "Новый пароль слишком короткий.";
-$lang['newpassword_long'] = "Новый пароль слишком длинный.";
-$lang['newpassword_invalid'] = "Новый пароль должен содержать хотя бы одну цифру, хотя бы одну строчную букву и хотя бы одну прописную..";
-$lang['newpassword_nomatch'] = "Новые пароли не совпадают.";
-$lang['newpassword_match'] = "Новый пароль такой же, как старый.";
-
-$lang['email_short'] = "Адрес E-Mail слишком короткий.";
-$lang['email_long'] = "Адрес E-Mail слишком длинный";
-$lang['email_invalid'] = "Недопустимый E-Mail.";
-$lang['email_incorrect'] = "E-Mail неверен.";
-$lang['email_banned'] = "Этот E-Mail запрещен.";
-$lang['email_changed'] = "E-Mail изменен успешно.";
-$lang['email_taken'] = "Этот E-Mail уже используется!.";
-
-$lang['newemail_match'] = "Новый E-Mail совпадает со старым.";
-
-$lang['account_inactive'] = "Аккаунт еще не активирован.";
-$lang['account_activated'] = "Аккаунт активирован.";
-
-$lang['logged_in'] = "Вы вошли в систему.";
-$lang['logged_out'] = "Вы вышли из системы.";
-
-$lang['system_error'] = "Произошла системная ошибка (проблема с печеньками, сессией или базой данных). Попробуйте еще разок.";
-
-$lang['register_success'] = "Учётная запись создана. На вашу почту отправлены инструкции по активации.";
-$lang['register_success_emailmessage_suppressed'] = "Учётная запись создана.";
-
-$lang['resetkey_invalid'] = "Ключ сброса пароля неправильного формата.";
-$lang['resetkey_incorrect'] = "Ключ сброса пароля неверный.";
-$lang['resetkey_expired'] = "Срок действия ключа сброса пароля истёк!";
-
-$lang['activationkey_invalid'] = "Недопустимый ключ акцивации учётной записи.";
-$lang['activationkey_incorrect'] = "Неверный ключ акцивации учётной записи.";
-$lang['activationkey_expired'] = "Срок действия ключа активации истёк!";
-
-$lang['reset_requested'] = "Запрос на сброс пароля выслан по почте.";
-$lang['reset_requested_emailmessage_suppressed'] = "Запрос сброса пароля создан.";
-$lang['reset_exists'] = "Сброс пароля уже запрошен.";
-$lang['password_reset'] = "Пароль сброшен успешно.";
-
-$lang['already_activated'] = "Учетная запись уже активирована.";
-$lang['activation_sent'] = "Сообщение с инструкциями по активации учетной записи выслано.";
-$lang['activation_exists'] = "Мы уже высылали вам сообщение с инструкциями по активации учетной записи.";
-
-$lang['email_activation_subject'] = "%s - Активировать учётную запись";
-$lang['email_activation_body'] = 'Здравствуйте,<br/><br/>для входа в систему вам нужно сначала активировать ваш аккаунт. Перейдите пожалуйста по этой ссылке: <strong><a href="%1$s/%2$s">%1$s/%2$s</a></strong><br/><br/> и введите следующий ключ активации: <strong>%3$s</strong><br/><br/> Если не регистрировались на сайте %1$s, значит это сообщение вы получили по ошибке. Пожалуйста, проигнорируйте его.';
-$lang['email_activation_altbody'] = 'Здравствуйте, \n\n для входа в систему вам нужно сначала активировать ваш аккаунт. Перейдите пожалуйста по этой ссылке: \n %1$s/%2$s \n\n и введите следующий ключ активации: %3$s \n\n Если не регистрировались на сайте %1$s, значит это сообщение вы получили по ошибке. Пожалуйста, проигнорируйте его.';
-
-$lang['email_reset_subject'] = "%s - Запрос сброса пароля";
-$lang['email_reset_body'] = 'Здравствуйте,<br/><br/>Для сброса вашего пароля пройдите пожалуйста по этой ссылке:<br/><br/><strong><a href="%1$s/%2$s">%1$s/%2$s</a></strong><br/><br/>Вам нужно будет использовать следующий ключ для сброса пароля: <strong>%3$s</strong><br/><br/>Если вы недавно не запрашивали сброс пароля на сайте %1$s, значит это сообщение вы получили по ошибке. Пожалуйста, проигнорируйте его.';
-$lang['email_reset_altbody'] = 'Здравствуйте, \n\n Для сброса вашего пароля пройдите пожалуйста по этой ссылке: \n %1$s/%2$s\n\n Вам нужно будет использовать следующий ключ для сброса пароля: %3$s\n\n Если вы недавно не запрашивали сброс пароля на сайте %1$s, значит это сообщение вы получили по ошибке. Пожалуйста, проигнорируйте его.';
-
-$lang['account_deleted'] = "Учётная запись удалена.";
-$lang['function_disabled'] = "Эта функция была отключена.";
+<?php +$lang = array(); + +$lang['user_blocked'] = "Ваш аккаунт заблокирован."; +$lang['user_verify_failed'] = "Защитный код код недействителен."; + +$lang['email_password_invalid'] = "Недопустимые E-Mail или пароль."; +$lang['email_password_incorrect'] = "Пользователь с указанным E-Mail'ом не обнаружен в системе или пароль не подходит."; +$lang['remember_me_invalid'] = 'Недопустимое значение поля "запомнить пользователя".'; + +$lang['password_short'] = "Пароль слишком короткий."; +$lang['password_weak'] = "Password is too weak."; +$lang['password_nomatch'] = "Пароли не совпадают."; +$lang['password_changed'] = "Пароль успешно изменен."; +$lang['password_incorrect'] = "Текущий пароль указан неверно."; +$lang['password_notvalid'] = "Недопустимый пароль."; + +$lang['newpassword_short'] = "Новый пароль слишком короткий."; +$lang['newpassword_long'] = "Новый пароль слишком длинный."; +$lang['newpassword_invalid'] = "Новый пароль должен содержать хотя бы одну цифру, хотя бы одну строчную букву и хотя бы одну прописную.."; +$lang['newpassword_nomatch'] = "Новые пароли не совпадают."; +$lang['newpassword_match'] = "Новый пароль такой же, как старый."; + +$lang['email_short'] = "Адрес E-Mail слишком короткий."; +$lang['email_long'] = "Адрес E-Mail слишком длинный"; +$lang['email_invalid'] = "Недопустимый E-Mail."; +$lang['email_incorrect'] = "E-Mail неверен."; +$lang['email_banned'] = "Этот E-Mail запрещен."; +$lang['email_changed'] = "E-Mail изменен успешно."; +$lang['email_taken'] = "Этот E-Mail уже используется!."; + +$lang['newemail_match'] = "Новый E-Mail совпадает со старым."; + +$lang['account_inactive'] = "Аккаунт еще не активирован."; +$lang['account_activated'] = "Аккаунт активирован."; + +$lang['logged_in'] = "Вы вошли в систему."; +$lang['logged_out'] = "Вы вышли из системы."; + +$lang['system_error'] = "Произошла системная ошибка (проблема с печеньками, сессией или базой данных). Попробуйте еще разок."; + +$lang['register_success'] = "Учётная запись создана. На вашу почту отправлены инструкции по активации."; +$lang['register_success_emailmessage_suppressed'] = "Учётная запись создана."; + +$lang['resetkey_invalid'] = "Ключ сброса пароля неправильного формата."; +$lang['resetkey_incorrect'] = "Ключ сброса пароля неверный."; +$lang['resetkey_expired'] = "Срок действия ключа сброса пароля истёк!"; + +$lang['activationkey_invalid'] = "Недопустимый ключ акцивации учётной записи."; +$lang['activationkey_incorrect'] = "Неверный ключ акцивации учётной записи."; +$lang['activationkey_expired'] = "Срок действия ключа активации истёк!"; + +$lang['reset_requested'] = "Запрос на сброс пароля выслан по почте."; +$lang['reset_requested_emailmessage_suppressed'] = "Запрос сброса пароля создан."; +$lang['reset_exists'] = "Сброс пароля уже запрошен."; +$lang['password_reset'] = "Пароль сброшен успешно."; + +$lang['already_activated'] = "Учетная запись уже активирована."; +$lang['activation_sent'] = "Сообщение с инструкциями по активации учетной записи выслано."; +$lang['activation_exists'] = "Мы уже высылали вам сообщение с инструкциями по активации учетной записи."; + +$lang['email_activation_subject'] = "%s - Активировать учётную запись"; +$lang['email_activation_body'] = 'Здравствуйте,<br/><br/>для входа в систему вам нужно сначала активировать ваш аккаунт. Перейдите пожалуйста по этой ссылке: <strong><a href="%1$s/%2$s">%1$s/%2$s</a></strong><br/><br/> и введите следующий ключ активации: <strong>%3$s</strong><br/><br/> Если не регистрировались на сайте %1$s, значит это сообщение вы получили по ошибке. Пожалуйста, проигнорируйте его.'; +$lang['email_activation_altbody'] = 'Здравствуйте, \n\n для входа в систему вам нужно сначала активировать ваш аккаунт. Перейдите пожалуйста по этой ссылке: \n %1$s/%2$s \n\n и введите следующий ключ активации: %3$s \n\n Если не регистрировались на сайте %1$s, значит это сообщение вы получили по ошибке. Пожалуйста, проигнорируйте его.'; + +$lang['email_reset_subject'] = "%s - Запрос сброса пароля"; +$lang['email_reset_body'] = 'Здравствуйте,<br/><br/>Для сброса вашего пароля пройдите пожалуйста по этой ссылке:<br/><br/><strong><a href="%1$s/%2$s">%1$s/%2$s</a></strong><br/><br/>Вам нужно будет использовать следующий ключ для сброса пароля: <strong>%3$s</strong><br/><br/>Если вы недавно не запрашивали сброс пароля на сайте %1$s, значит это сообщение вы получили по ошибке. Пожалуйста, проигнорируйте его.'; +$lang['email_reset_altbody'] = 'Здравствуйте, \n\n Для сброса вашего пароля пройдите пожалуйста по этой ссылке: \n %1$s/%2$s\n\n Вам нужно будет использовать следующий ключ для сброса пароля: %3$s\n\n Если вы недавно не запрашивали сброс пароля на сайте %1$s, значит это сообщение вы получили по ошибке. Пожалуйста, проигнорируйте его.'; + +$lang['account_deleted'] = "Учётная запись удалена."; +$lang['function_disabled'] = "Эта функция была отключена."; diff --git a/languages/se_SE.php b/languages/se_SE.php index 11d763b..e9560ed 100755..100644 --- a/languages/se_SE.php +++ b/languages/se_SE.php @@ -1,5 +1,4 @@ <?php - $lang = array(); $lang['user_blocked'] = "Du är för närvarande blockerad från systemet."; diff --git a/tests/AuthTest.php b/tests/AuthTest.php index b6b3b2d..23b3978 100644 --- a/tests/AuthTest.php +++ b/tests/AuthTest.php @@ -2,245 +2,233 @@ class AuthTest extends PHPUnit_Framework_TestCase { - public $auth; - public $config; - public $dbh; + public $auth; + public $config; + public $dbh; - private $hash; + private $hash; - public function __construct() - { - require_once __DIR__ . '/../vendor/autoload.php'; - require_once __DIR__ . '/../Auth.php'; - require_once __DIR__ . '/../Config.php'; + public function __construct() + { + require_once __DIR__ . '/../vendor/autoload.php'; + require_once __DIR__ . '/../Auth.php'; + require_once __DIR__ . '/../Config.php'; - $this->dbh = new PDO("mysql:host=127.0.0.1;dbname=phpauthtest", "root", ""); + $this->dbh = new PDO("mysql:host=127.0.0.1;dbname=phpauthtest", "root", ""); + $this->config = new PHPAuth\Config($this->dbh); + $this->auth = new PHPAuth\Auth($this->dbh, $this->config); - $this->config = new PHPAuth\Config($this->dbh); - $this->auth = new PHPAuth\Auth($this->dbh, $this->config); + // Clean up the database + $this->dbh->exec("DELETE FROM attempts;"); + $this->dbh->exec("DELETE FROM users;"); + $this->dbh->exec("DELETE FROM sessions;"); + $this->dbh->exec("DELETE FROM requests;"); + } - // Clean up the database - $this->dbh->exec("DELETE FROM attempts;"); - $this->dbh->exec("DELETE FROM users;"); - $this->dbh->exec("DELETE FROM sessions;"); - $this->dbh->exec("DELETE FROM requests;"); - } + public function testRegister() + { + // Successful registration + $this->assertFalse($this->auth->register('test@email.com', 'T3H-1337-P@$$', 'T3H-1337-P@$$')['error']); - public function testRegister() - { - // Successful registration - $this->assertFalse($this->auth->register('test@email.com', 'T3H-1337-P@$$', 'T3H-1337-P@$$')['error']); + // Failed registration: same email + $this->assertTrue($this->auth->register('test@email.com', 'T3H-1337-P@$$', 'T3H-1337-P@$$')['error']); - // Failed registration: same email - $this->assertTrue($this->auth->register('test@email.com', 'T3H-1337-P@$$', 'T3H-1337-P@$$')['error']); + // Failed registration: invalid email address + $this->assertTrue($this->auth->register('InvalidEmail', 'T3H-1337-P@$$', 'T3H-1337-P@$$')['error']); - // Failed registration: invalid email address - $this->assertTrue($this->auth->register('InvalidEmail', 'T3H-1337-P@$$', 'T3H-1337-P@$$')['error']); + // Failed registration: invalid password + $this->assertTrue($this->auth->register('test2@email.com', 'lamepass', 'lamepass')['error']); + } - // Failed registration: invalid password - $this->assertTrue($this->auth->register('test2@email.com', 'lamepass', 'lamepass')['error']); - } - - /** + /** * @depends testRegister */ + public function testLogin() + { + // Empty attempts table + $this->dbh->exec("DELETE FROM attempts;"); - public function testLogin() - { - // Empty attempts table - $this->dbh->exec("DELETE FROM attempts;"); - - // Successful login - $this->assertFalse($this->auth->login("test@email.com", 'T3H-1337-P@$$')['error']); + // Successful login + $this->assertFalse($this->auth->login("test@email.com", 'T3H-1337-P@$$')['error']); - // Failed login: incorrect email - $this->assertTrue($this->auth->login("incorrect@email.com", "IncorrectPassword1")['error']); + // Failed login: incorrect email + $this->assertTrue($this->auth->login("incorrect@email.com", "IncorrectPassword1")['error']); - // Failed login: incorrect password - $this->assertTrue($this->auth->login("test@email.com", "IncorrectPassword1")['error']); - } + // Failed login: incorrect password + $this->assertTrue($this->auth->login("test@email.com", "IncorrectPassword1")['error']); + } - /** + /** * @depends testLogin */ + public function testCheckSession() + { + // Get the user's (created and logged in as earlier) session hash + $hash = $this->dbh->query("SELECT hash FROM sessions WHERE uid = (SELECT id FROM users WHERE email = 'test@email.com');", PDO::FETCH_ASSOC)->fetch()['hash']; - public function testCheckSession() - { - // Get the user's (created and logged in as earlier) session hash - $hash = $this->dbh->query("SELECT hash FROM sessions WHERE uid = (SELECT id FROM users WHERE email = 'test@email.com');", PDO::FETCH_ASSOC)->fetch()['hash']; - - // Successful checkSession - $this->assertTrue($this->auth->checkSession($hash)); + // Successful checkSession + $this->assertTrue($this->auth->checkSession($hash)); - // Failed checkSession: invalid session hash - $this->assertFalse($this->auth->checkSession("invalidhash")); + // Failed checkSession: invalid session hash + $this->assertFalse($this->auth->checkSession("invalidhash")); - // Failed checkSession: inexistant session hash - $this->assertFalse($this->auth->checkSession("aaafda8ea2c65a596c7e089f256b1534f2298000")); - } + // Failed checkSession: inexistant session hash + $this->assertFalse($this->auth->checkSession("aaafda8ea2c65a596c7e089f256b1534f2298000")); + } - /** + /** * @depends testLogin */ + public function testGetSessionUID() + { + $uid = $this->dbh->query("SELECT id FROM users WHERE email = 'test@email.com';", PDO::FETCH_ASSOC)->fetch()['id']; + $hash = $this->dbh->query("SELECT hash FROM sessions WHERE uid = {$uid};", PDO::FETCH_ASSOC)->fetch()['hash']; - public function testGetSessionUID() - { - $uid = $this->dbh->query("SELECT id FROM users WHERE email = 'test@email.com';", PDO::FETCH_ASSOC)->fetch()['id']; - $hash = $this->dbh->query("SELECT hash FROM sessions WHERE uid = {$uid};", PDO::FETCH_ASSOC)->fetch()['hash']; + // Successful getSessionUID + $this->assertEquals($uid, $this->auth->getSessionUID($hash)); - // Successful getSessionUID - $this->assertEquals($uid, $this->auth->getSessionUID($hash)); + // Failed getSessionUID: invalid session hash + $this->assertFalse($this->auth->getSessionUID("invalidhash")); - // Failed getSessionUID: invalid session hash - $this->assertFalse($this->auth->getSessionUID("invalidhash")); + // Failed getSessionUID: inexistant session hash + $this->assertFalse($this->auth->getSessionUID("aaafda8ea2c65a596c7e089f256b1534f2298000")); + } - // Failed getSessionUID: inexistant session hash - $this->assertFalse($this->auth->getSessionUID("aaafda8ea2c65a596c7e089f256b1534f2298000")); - } - - /** + /** * @depends testRegister */ + public function testIsEmailTaken() + { + // Successful isEmailTaken + $this->assertTrue($this->auth->isEmailTaken("test@email.com")); - public function testIsEmailTaken() - { - // Successful isEmailTaken - $this->assertTrue($this->auth->isEmailTaken("test@email.com")); - - // Failed isEmailTaken: unused email - $this->assertFalse($this->auth->isEmailTaken("unused@email.com")); - } + // Failed isEmailTaken: unused email + $this->assertFalse($this->auth->isEmailTaken("unused@email.com")); + } - /** + /** * @depends testRegister */ + public function testGetUser() + { + $uid = $this->dbh->query("SELECT id FROM users WHERE email = 'test@email.com';", PDO::FETCH_ASSOC)->fetch()['id']; - public function testGetUser() - { - $uid = $this->dbh->query("SELECT id FROM users WHERE email = 'test@email.com';", PDO::FETCH_ASSOC)->fetch()['id']; - - // Successful getUser - $this->assertEquals("test@email.com", $this->auth->getUser($uid)['email']); + // Successful getUser + $this->assertEquals("test@email.com", $this->auth->getUser($uid)['email']); - // Failed getUser: inexistant UID - $this->assertFalse($this->auth->getUser(9999999)); - } + // Failed getUser: inexistant UID + $this->assertFalse($this->auth->getUser(9999999)); + } - /** + /** * @depends testRegister */ + public function testChangePassword() + { + $uid = $this->dbh->query("SELECT id FROM users WHERE email = 'test@email.com';", PDO::FETCH_ASSOC)->fetch()['id']; - public function testChangePassword() - { - $uid = $this->dbh->query("SELECT id FROM users WHERE email = 'test@email.com';", PDO::FETCH_ASSOC)->fetch()['id']; + // Successful changePassword + $this->assertFalse($this->auth->changePassword($uid, 'T3H-1337-P@$$', 'T3H-1337-P@$$2', 'T3H-1337-P@$$2')['error']); - // Successful changePassword - $this->assertFalse($this->auth->changePassword($uid, 'T3H-1337-P@$$', 'T3H-1337-P@$$2', 'T3H-1337-P@$$2')['error']); + // Failed changePassword: invalid current password + $this->assertTrue($this->auth->changePassword($uid, "invalid", 'T3H-1337-P@$$2', 'T3H-1337-P@$$2')['error']); - // Failed changePassword: invalid current password - $this->assertTrue($this->auth->changePassword($uid, "invalid", 'T3H-1337-P@$$2', 'T3H-1337-P@$$2')['error']); + // Failed changePassword: incorrect current password + $this->assertTrue($this->auth->changePassword($uid, "IncorrectPassword1", 'T3H-1337-P@$$2', 'T3H-1337-P@$$2')['error']); - // Failed changePassword: incorrect current password - $this->assertTrue($this->auth->changePassword($uid, "IncorrectPassword1", 'T3H-1337-P@$$2', 'T3H-1337-P@$$2')['error']); + // Failed changePassword: invalid new password + $this->assertTrue($this->auth->changePassword($uid, 'T3H-1337-P@$$2', "lamepass", "lamepass")['error']); - // Failed changePassword: invalid new password - $this->assertTrue($this->auth->changePassword($uid, 'T3H-1337-P@$$2', "lamepass", "lamepass")['error']); + // Failed changePassword: new password and confirmation do not match + $this->assertTrue($this->auth->changePassword($uid, 'T3H-1337-P@$$2', 'T3H-1337-P@$$3', 'T3H-1337-P@$$4')['error']); - // Failed changePassword: new password and confirmation do not match - $this->assertTrue($this->auth->changePassword($uid, 'T3H-1337-P@$$2', 'T3H-1337-P@$$3', 'T3H-1337-P@$$4')['error']); + // Failed changePassword: incorrect UID + $this->assertTrue($this->auth->changePassword(9999999, 'T3H-1337-P@$$2', 'T3H-1337-P@$$3', 'T3H-1337-P@$$3')['error']); + } - // Failed changePassword: incorrect UID - $this->assertTrue($this->auth->changePassword(9999999, 'T3H-1337-P@$$2', 'T3H-1337-P@$$3', 'T3H-1337-P@$$3')['error']); - } - - /** + /** * @depends testChangePassword */ + public function testChangeEmail() + { + $uid = $this->dbh->query("SELECT id FROM users WHERE email = 'test@email.com';", PDO::FETCH_ASSOC)->fetch()['id']; - public function testChangeEmail() - { - $uid = $this->dbh->query("SELECT id FROM users WHERE email = 'test@email.com';", PDO::FETCH_ASSOC)->fetch()['id']; - - // Successful changeEmail - $this->assertFalse($this->auth->changeEmail($uid, "test2@email.com", 'T3H-1337-P@$$2')['error']); + // Successful changeEmail + $this->assertFalse($this->auth->changeEmail($uid, "test2@email.com", 'T3H-1337-P@$$2')['error']); - // Failed changeEmail: invalid email - $this->assertTrue($this->auth->changeEmail($uid, "invalid.email", 'T3H-1337-P@$$2')['error']); + // Failed changeEmail: invalid email + $this->assertTrue($this->auth->changeEmail($uid, "invalid.email", 'T3H-1337-P@$$2')['error']); - // Failed changeEmail: new email is the same as current email - $this->assertTrue($this->auth->changeEmail($uid, "test2@email.com", 'T3H-1337-P@$$2')['error']); + // Failed changeEmail: new email is the same as current email + $this->assertTrue($this->auth->changeEmail($uid, "test2@email.com", 'T3H-1337-P@$$2')['error']); - // Failed changeEmail: password is invalid - $this->assertTrue($this->auth->changeEmail($uid, "test3@email.com", "invalid")['error']); + // Failed changeEmail: password is invalid + $this->assertTrue($this->auth->changeEmail($uid, "test3@email.com", "invalid")['error']); - // Failed changeEmail: password is incorrect - $this->assertTrue($this->auth->changeEmail($uid, "test3@email.com", "IncorrectPassword1")['error']); + // Failed changeEmail: password is incorrect + $this->assertTrue($this->auth->changeEmail($uid, "test3@email.com", "IncorrectPassword1")['error']); - // Failed changeEmail: UID is incorrect - $this->assertTrue($this->auth->changeEmail(9999999, "test2@email.com", "IncorrectPassword1")['error']); - } + // Failed changeEmail: UID is incorrect + $this->assertTrue($this->auth->changeEmail(9999999, "test2@email.com", "IncorrectPassword1")['error']); + } - /** + /** * @depends testCheckSession */ + public function testLogout() + { + // Get the user's (created and logged in as earlier) session hash + $hash = $this->dbh->query("SELECT hash FROM sessions WHERE uid = (SELECT id FROM users WHERE email = 'test2@email.com');", PDO::FETCH_ASSOC)->fetch()['hash']; - public function testLogout() - { - // Get the user's (created and logged in as earlier) session hash - $hash = $this->dbh->query("SELECT hash FROM sessions WHERE uid = (SELECT id FROM users WHERE email = 'test2@email.com');", PDO::FETCH_ASSOC)->fetch()['hash']; - - // Successful logout - $this->assertTrue($this->auth->logout($hash)); + // Successful logout + $this->assertTrue($this->auth->logout($hash)); - // Failed logout: invalid session hash - $this->assertFalse($this->auth->logout("invalidhash")); + // Failed logout: invalid session hash + $this->assertFalse($this->auth->logout("invalidhash")); - // Failed logout: inexistant session hash - $this->assertFalse($this->auth->logout("aaafda8ea2c65a596c7e089f256b1534f2298000")); - } + // Failed logout: inexistant session hash + $this->assertFalse($this->auth->logout("aaafda8ea2c65a596c7e089f256b1534f2298000")); + } - /** + /** * @depends testLogout * @depends testChangePassword * @depends testChangeEmail */ + public function testDeleteUser() + { + // Empty attempts table + $this->dbh->exec("DELETE FROM attempts;"); - public function testDeleteUser() - { - // Empty attempts table - $this->dbh->exec("DELETE FROM attempts;"); + $uid = $this->dbh->query("SELECT id FROM users WHERE email = 'test2@email.com';", PDO::FETCH_ASSOC)->fetch()['id']; - $uid = $this->dbh->query("SELECT id FROM users WHERE email = 'test2@email.com';", PDO::FETCH_ASSOC)->fetch()['id']; + // Failed deleteUser: invalid password + $this->assertTrue($this->auth->deleteUser($uid, "lamepass")['error']); - // Failed deleteUser: invalid password - $this->assertTrue($this->auth->deleteUser($uid, "lamepass")['error']); + // Failed deleteUser: incorrect password + $this->assertTrue($this->auth->deleteUser($uid, "IncorrectPassword1")['error']); - // Failed deleteUser: incorrect password - $this->assertTrue($this->auth->deleteUser($uid, "IncorrectPassword1")['error']); + // Successful deleteUser + $this->assertFalse($this->auth->deleteUser($uid, 'T3H-1337-P@$$2')['error']); - // Successful deleteUser - $this->assertFalse($this->auth->deleteUser($uid, 'T3H-1337-P@$$2')['error']); + // Failed deleteUser: incorrect UID + $this->assertTrue($this->auth->deleteUser(9999999, "IncorrectPassword1")['error']); + } - // Failed deleteUser: incorrect UID - $this->assertTrue($this->auth->deleteUser(9999999, "IncorrectPassword1")['error']); - } + public function testLanguageFiles() + { + // Use the english language file as main reference + include __DIR__ . '/../languages/en_GB.php'; - public function testLanguageFiles() - { - // Use the english language file as main reference - include __DIR__ . '/../languages/en_GB.php'; + $baseLang = $lang; - $baseLang = $lang; + $languageFiles = glob(__DIR__ . '/../languages/*.php'); - $languageFiles = glob(__DIR__ . '/../languages/*.php'); + foreach($languageFiles as $languageFile) { + $languageFile = basename($languageFile); - foreach($languageFiles as $languageFile) { - $languageFile = basename($languageFile); - - include __DIR__ . "/../languages/{$languageFile}"; - $this->assertEquals(0, count(array_diff_key($baseLang, $lang))); - } - } + include __DIR__ . "/../languages/{$languageFile}"; + $this->assertEquals(0, count(array_diff_key($baseLang, $lang))); + } + } } - -?> |