<?php
class UserService {
- var $db;
+ var $db;
- function &getInstance(&$db) {
- static $instance;
- if (!isset($instance))
- $instance =& new UserService($db);
- return $instance;
+ function &getInstance(&$db) {
+ static $instance;
+ if (!isset($instance)) {
+ $instance = new UserService($db);
}
-
- var $fields = array(
- 'primary' => 'uId',
- 'username' => 'username',
- 'password' => 'password'
- );
- var $profileurl;
- var $tablename;
- var $sessionkey;
- var $cookiekey;
- var $cookietime = 1209600; // 2 weeks
+ return $instance;
+ }
+
+ var $fields = array(
+ 'primary' => 'uId',
+ 'username' => 'username',
+ 'password' => 'password'
+ );
+ var $profileurl;
+ var $tablename;
+ var $sessionkey;
+ var $cookiekey;
+ var $cookietime = 1209600; // 2 weeks
function UserService(&$db) {
$this->db =& $db;
return false;
}
+ function _in_regex_array($value, $array) {
+ foreach ($array as $key => $pattern) {
+ if (preg_match($pattern, $value)) {
+ return TRUE;
+ }
+ }
+ return FALSE;
+ }
+
function _randompassword() {
- $seed = (integer) md5(microtime());
- mt_srand($seed);
$password = mt_rand(1, 99999999);
$password = substr(md5($password), mt_rand(0, 19), mt_rand(6, 12));
return $password;
return false;
}
- function login($username, $password, $remember = FALSE) {
+ function login($username, $password, $remember = FALSE, $path = '/') {
$password = $this->sanitisePassword($password);
$query = 'SELECT '. $this->getFieldName('primary') .' FROM '. $this->getTableName() .' WHERE '. $this->getFieldName('username') .' = "'. $this->db->sql_escape($username) .'" AND '. $this->getFieldName('password') .' = "'. $this->db->sql_escape($password) .'"';
$id = $_SESSION[$this->getSessionKey()] = $row[$this->getFieldName('primary')];
if ($remember) {
$cookie = $id .':'. md5($username.$password);
- setcookie($this->cookiekey, $cookie, time() + $this->cookietime);
+ setcookie($this->cookiekey, $cookie, time() + $this->cookietime, $path);
}
return true;
} else {
}
}
- function logout() {
- @setcookie($this->cookiekey, NULL, time() - 1);
+ function logout($path = '/') {
+ @setcookie($this->cookiekey, NULL, time() - 1, $path);
unset($_COOKIE[$this->cookiekey]);
session_unset();
$this->getCurrentUser(TRUE, false);
return false;
}
+ function isBlockedEmail($email) {
+ // Check whitelist
+ $whitelist = $GLOBALS['email_whitelist'];
+ if (!is_null($whitelist) && is_array($whitelist)) {
+ if (!$this->_in_regex_array($email, $whitelist)) {
+ // Not in whitelist -> blocked
+ return TRUE;
+ }
+ }
+
+ // Check blacklist
+ $blacklist = $GLOBALS['email_blacklist'];
+ if (!is_null($blacklist) && is_array($blacklist)) {
+ if ($this->_in_regex_array($email, $blacklist)) {
+ // In blacklist -> blocked
+ return TRUE;
+ }
+ }
+
+ // Not blocked
+ return FALSE;
+ }
+
function isReserved($username) {
if (in_array($username, $GLOBALS['reservedusers'])) {
return true;
}
function isValidEmail($email) {
- if (eregi("^((?:(?:(?:\w[\.\-\+_]?)*)\w)+)\@((?:(?:(?:\w[\.\-_]?){0,62})\w)+)\.(\w{2,6})$", $email)) {
- list($emailUser, $emailDomain) = split("@", $email);
+ if (preg_match("/^((?:(?:(?:\w[\.\-\+_]?)*)\w)+)\@((?:(?:(?:\w[\.\-_]?){0,62})\w)+)\.(\w{2,6})$/i", $email) > 0) {
+ list($emailUser, $emailDomain) = explode("@", $email);
// Check if the email domain has a DNS record
if ($this->_checkdns($emailDomain)) {
function getCookieKey() { return $this->cookiekey; }
function setCookieKey($value) { $this->cookiekey = $value; }
}
-?>