Move methods getIpAddress() and getUserAgent() to the Request class

This commit is contained in:
Frédéric Guillot
2014-09-28 09:19:19 -04:00
parent 4aa99e9492
commit 9003f830ef
10 changed files with 84 additions and 73 deletions

View File

@@ -3,6 +3,7 @@
namespace Auth; namespace Auth;
use Model\User; use Model\User;
use Core\Request;
/** /**
* Database authentication * Database authentication
@@ -40,8 +41,8 @@ class Database extends Base
$this->lastLogin->create( $this->lastLogin->create(
self::AUTH_NAME, self::AUTH_NAME,
$user['id'], $user['id'],
$this->user->getIpAddress(), Request::getIpAddress(),
$this->user->getUserAgent() Request::getUserAgent()
); );
return true; return true;

View File

@@ -4,6 +4,7 @@ namespace Auth;
require __DIR__.'/../../vendor/OAuth/bootstrap.php'; require __DIR__.'/../../vendor/OAuth/bootstrap.php';
use Core\Request;
use OAuth\Common\Storage\Session; use OAuth\Common\Storage\Session;
use OAuth\Common\Consumer\Credentials; use OAuth\Common\Consumer\Credentials;
use OAuth\Common\Http\Uri\UriFactory; use OAuth\Common\Http\Uri\UriFactory;
@@ -44,8 +45,8 @@ class GitHub extends Base
$this->lastLogin->create( $this->lastLogin->create(
self::AUTH_NAME, self::AUTH_NAME,
$user['id'], $user['id'],
$this->user->getIpAddress(), Request::getIpAddress(),
$this->user->getUserAgent() Request::getUserAgent()
); );
return true; return true;

View File

@@ -4,6 +4,7 @@ namespace Auth;
require __DIR__.'/../../vendor/OAuth/bootstrap.php'; require __DIR__.'/../../vendor/OAuth/bootstrap.php';
use Core\Request;
use OAuth\Common\Storage\Session; use OAuth\Common\Storage\Session;
use OAuth\Common\Consumer\Credentials; use OAuth\Common\Consumer\Credentials;
use OAuth\Common\Http\Uri\UriFactory; use OAuth\Common\Http\Uri\UriFactory;
@@ -45,8 +46,8 @@ class Google extends Base
$this->lastLogin->create( $this->lastLogin->create(
self::AUTH_NAME, self::AUTH_NAME,
$user['id'], $user['id'],
$this->user->getIpAddress(), Request::getIpAddress(),
$this->user->getUserAgent() Request::getUserAgent()
); );
return true; return true;

View File

@@ -2,6 +2,8 @@
namespace Auth; namespace Auth;
use Core\Request;
/** /**
* LDAP model * LDAP model
* *
@@ -58,8 +60,8 @@ class Ldap extends Base
$this->lastLogin->create( $this->lastLogin->create(
self::AUTH_NAME, self::AUTH_NAME,
$user['id'], $user['id'],
$this->user->getIpAddress(), Request::getIpAddress(),
$this->user->getUserAgent() Request::getUserAgent()
); );
return true; return true;

View File

@@ -2,6 +2,7 @@
namespace Auth; namespace Auth;
use Core\Request;
use Core\Security; use Core\Security;
use Core\Tool; use Core\Tool;
@@ -107,8 +108,8 @@ class RememberMe extends Base
$this->lastLogin->create( $this->lastLogin->create(
self::AUTH_NAME, self::AUTH_NAME,
$this->acl->getUserId(), $this->acl->getUserId(),
$this->user->getIpAddress(), Request::getIpAddress(),
$this->user->getUserAgent() Request::getUserAgent()
); );
return true; return true;

View File

@@ -2,6 +2,7 @@
namespace Auth; namespace Auth;
use Core\Request;
use Core\Security; use Core\Security;
/** /**
@@ -44,8 +45,8 @@ class ReverseProxy extends Base
$this->lastLogin->create( $this->lastLogin->create(
self::AUTH_NAME, self::AUTH_NAME,
$user['id'], $user['id'],
$this->user->getIpAddress(), Request::getIpAddress(),
$this->user->getUserAgent() Request::getUserAgent()
); );
return true; return true;

View File

@@ -34,12 +34,11 @@ class User extends Base
$this->response->redirect('?controller=app'); $this->response->redirect('?controller=app');
} }
$redirect_query = $this->request->getStringParam('redirect_query');
$this->response->html($this->template->layout('user_login', array( $this->response->html($this->template->layout('user_login', array(
'errors' => array(), 'errors' => array(),
'values' => array(), 'values' => array(),
'no_layout' => true, 'no_layout' => true,
'redirect_query' => $redirect_query, 'redirect_query' => $this->request->getStringParam('redirect_query'),
'title' => t('Login') 'title' => t('Login')
))); )));
} }
@@ -56,9 +55,10 @@ class User extends Base
list($valid, $errors) = $this->authentication->validateForm($values); list($valid, $errors) = $this->authentication->validateForm($values);
if ($valid) { if ($valid) {
if ($redirect_query != "") { if ($redirect_query !== '') {
$this->response->redirect('?'.$redirect_query); $this->response->redirect('?'.$redirect_query);
} else { }
else {
$this->response->redirect('?controller=board'); $this->response->redirect('?controller=board');
} }
} }
@@ -420,6 +420,7 @@ class User extends Base
'errors' => array('login' => t('Google authentication failed')), 'errors' => array('login' => t('Google authentication failed')),
'values' => array(), 'values' => array(),
'no_layout' => true, 'no_layout' => true,
'redirect_query' => '',
'title' => t('Login') 'title' => t('Login')
))); )));
} }
@@ -481,6 +482,7 @@ class User extends Base
'errors' => array('login' => t('GitHub authentication failed')), 'errors' => array('login' => t('GitHub authentication failed')),
'values' => array(), 'values' => array(),
'no_layout' => true, 'no_layout' => true,
'redirect_query' => '',
'title' => t('Login') 'title' => t('Login')
))); )));
} }

View File

@@ -148,4 +148,61 @@ class Request
return isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : ''; return isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';
} }
/**
* Get the user agent
*
* @static
* @access public
* @return string
*/
public static function getUserAgent()
{
return empty($_SERVER['HTTP_USER_AGENT']) ? t('Unknown') : $_SERVER['HTTP_USER_AGENT'];
}
/**
* Get the real IP address of the user
*
* @static
* @access public
* @param bool $only_public Return only public IP address
* @return string
*/
public static function getIpAddress($only_public = false)
{
$keys = array(
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_X_CLUSTER_CLIENT_IP',
'HTTP_FORWARDED_FOR',
'HTTP_FORWARDED',
'REMOTE_ADDR'
);
foreach ($keys as $key) {
if (isset($_SERVER[$key])) {
foreach (explode(',', $_SERVER[$key]) as $ip_address) {
$ip_address = trim($ip_address);
if ($only_public) {
// Return only public IP address
if (filter_var($ip_address, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) {
return $ip_address;
}
}
else {
return $ip_address;
}
}
}
}
return t('Unknown');
}
} }

View File

@@ -2,6 +2,7 @@
namespace Model; namespace Model;
use Core\Request;
use Auth\Database; use Auth\Database;
use SimpleValidator\Validator; use SimpleValidator\Validator;
use SimpleValidator\Validators; use SimpleValidator\Validators;
@@ -117,7 +118,7 @@ class Authentication extends Base
if (! empty($values['remember_me'])) { if (! empty($values['remember_me'])) {
$credentials = $this->backend('rememberMe') $credentials = $this->backend('rememberMe')
->create($this->acl->getUserId(), $this->user->getIpAddress(), $this->user->getUserAgent()); ->create($this->acl->getUserId(), Request::getIpAddress(), Request::getUserAgent());
$this->backend('rememberMe')->writeCookie($credentials['token'], $credentials['sequence'], $credentials['expiration']); $this->backend('rememberMe')->writeCookie($credentials['token'], $credentials['sequence'], $credentials['expiration']);
} }

View File

@@ -370,60 +370,4 @@ class User extends Base
return array(false, $v->getErrors()); return array(false, $v->getErrors());
} }
/**
* Get the user agent of the connected user
*
* @access public
* @return string
*/
public function getUserAgent()
{
return empty($_SERVER['HTTP_USER_AGENT']) ? t('Unknown') : $_SERVER['HTTP_USER_AGENT'];
}
/**
* Get the real IP address of the connected user
*
* @access public
* @param bool $only_public Return only public IP address
* @return string
*/
public function getIpAddress($only_public = false)
{
$keys = array(
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_X_CLUSTER_CLIENT_IP',
'HTTP_FORWARDED_FOR',
'HTTP_FORWARDED',
'REMOTE_ADDR'
);
foreach ($keys as $key) {
if (isset($_SERVER[$key])) {
foreach (explode(',', $_SERVER[$key]) as $ip_address) {
$ip_address = trim($ip_address);
if ($only_public) {
// Return only public IP address
if (filter_var($ip_address, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) {
return $ip_address;
}
}
else {
return $ip_address;
}
}
}
}
return t('Unknown');
}
} }