- added build files for upcoming version 1.1.2

- improved ajax authentication check and "logout" notification | closed #198
- improved logging, added missing log file configuration to pathfinder.ini
- added  logging for "unauthorized" requests | closed #198
- updated js "jQuery" 1.11.3 -> 3.0.0 | #206
- updated js "datatables" plugin 1.10.7 -> 1.10.12 | #206
- updated js "mCustomScrollbar" 3.1.14 -> 3.1.4 | #206
This commit is contained in:
Exodus4D
2016-07-11 20:35:25 +02:00
parent f943f31d9a
commit cdd1846431
72 changed files with 1732 additions and 10632 deletions

View File

@@ -19,6 +19,8 @@ class Controller {
const COOKIE_NAME_STATE = 'cookie';
const COOKIE_PREFIX_CHARACTER = 'char';
const LOG_UNAUTHORIZED = 'IP: [%-20s] Agent: [%s]';
const ERROR_SESSION_SUSPECT = 'Suspect id: [%30s], ip: [%40s], new ip: [%40s], User-Agent: %s ';
/**
* @var \Base
@@ -120,18 +122,13 @@ class Controller {
$f3 = $this->getF3();
if( ($ip = $session->ip() )!= $f3->get('IP') ){
// IP address changed -> not critical
$sessionSuspectLogFile = 'PATHFINDER.LOGFILES.SESSION_SUSPECT';
if( !$f3->devoid($sessionSuspectLogFile) ){
$this->getLogger(
$f3->get($sessionSuspectLogFile)
)->write( sprintf(
self::ERROR_SESSION_SUSPECT,
$sid,
$session->ip(),
$f3->get('IP'),
$f3->get('AGENT')
));
}
self::getLogger('SESSION_SUSPECT')->write( sprintf(
self::ERROR_SESSION_SUSPECT,
$sid,
$session->ip(),
$f3->get('IP'),
$f3->get('AGENT')
));
// no more error handling here
return true;
}elseif($session->agent() != $f3->get('AGENT') ){
@@ -398,24 +395,6 @@ class Controller {
// destroy session login data -------------------------------
$f3->clear('SESSION');
if( $f3->get('AJAX') ){
$return = (object) [];
if(
isset($params['reroute']) &&
(bool)$params['reroute']
){
$return->reroute = rtrim(self::getEnvironmentData('URL'), '/') . $f3->alias('login');
}else{
// no reroute -> errors can be shown
$return->error[] = $this->getLogoutError();
}
echo json_encode($return);
}else{
// redirect to landing page
$f3->reroute('@login');
}
}
/**
@@ -556,11 +535,51 @@ class Controller {
/**
* Callback for framework "unload"
* check -> config.ini
* -> this function is called on each request!
* -> configured in config.ini
* @param \Base $f3
* @return bool
*/
public function unload(\Base $f3){
// track some 4xx Client side errors
// 5xx errors are handled in "ONERROR" callback
$status = http_response_code();
$halt = false;
switch( $status ){
case 403: // Unauthorized
self::getLogger('UNAUTHORIZED')->write(sprintf(
self::LOG_UNAUTHORIZED,
$f3->get('IP'),
$f3->get('AGENT')
));
$halt = true;
break;
}
// Ajax
if(
$halt &&
$f3->get('AJAX')
){
$params = (array)$f3->get('POST');
$response = (object) [];
$response->type = 'error';
$response->code = $status;
$response->message = 'Access denied: User not found';
$return = (object) [];
if( (bool)$params['reroute']){
$return->reroute = rtrim(self::getEnvironmentData('URL'), '/') . $f3->alias('login');
}else{
// no reroute -> errors can be shown
$return->error[] = $response;
}
echo json_encode($return);
die();
}
return true;
}
@@ -680,12 +699,13 @@ class Controller {
}
/**
* get a log controller e.g. "debug"
* @param string $loggerType
* @return \Log
* get a Logger object by Hive key
* -> set in pathfinder.ini
* @param string $type
* @return \Log|null
*/
static function getLogger($loggerType){
return LogController::getLogger($loggerType);
static function getLogger($type){
return LogController::getLogger($type);
}
/**